⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 editview.cpp

📁 CEdit的应用 CEdit的应用
💻 CPP
字号:
// EditView.cpp : implementation of the CMyEditView class
//

#include "stdafx.h"
#include "Edit.h"

#include "EditDoc.h"
#include "CntrItem.h"
#include "EditView.h"
#include "MainFrm.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMyEditView

IMPLEMENT_DYNCREATE(CMyEditView, CRichEditView)

BEGIN_MESSAGE_MAP(CMyEditView, CRichEditView)
	//{{AFX_MSG_MAP(CMyEditView)
	ON_WM_DESTROY()
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND_RANGE(ID_BUTTON32774, ID_BUTTON32788, OnFaceSelect)
	ON_COMMAND(ID_FILE_PRINT, CRichEditView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CRichEditView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CRichEditView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyEditView construction/destruction

CMyEditView::CMyEditView()
{
	m_pRichEditOle = NULL;
}

CMyEditView::~CMyEditView()
{
}

BOOL CMyEditView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CRichEditView::PreCreateWindow(cs);
}

CImageList& CMyEditView::GetImageList()
{
	CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();
	return pFrame->m_imgListFaces;
}

void CMyEditView::OnInitialUpdate()
{
	CRichEditView::OnInitialUpdate();

	// Get the Controller Interface from the RichEdit Control
	//
	if (m_pRichEditOle == NULL)
		m_pRichEditOle = GetRichEditCtrl().GetIRichEditOle();
	ASSERT(m_pRichEditOle != NULL);

	// Unregister this edit control as a potential target for OLE drag-and-drop
	//
	::RevokeDragDrop(m_hWnd);

	// Set the printing margins (720 twips = 1/2 inch).
	SetMargins(CRect(720, 720, 720, 720));
}

HBITMAP CMyEditView::GetImage(CImageList& list, int num)
{
	CBitmap dist;
	CClientDC dc(NULL);

	IMAGEINFO ii;
	list.GetImageInfo(num, &ii);

	int nWidth = ii.rcImage.right - ii.rcImage.left;
	int nHeight = ii.rcImage.bottom - ii.rcImage.top;

	dist.CreateCompatibleBitmap(&dc, nWidth, nHeight);
	CDC memDC;
	memDC.CreateCompatibleDC(&dc);
	CBitmap* pOldBitmap = memDC.SelectObject(&dist);
	
	memDC.FillSolidRect(0, 0, nWidth, nHeight, 
			GetRichEditCtrl().SetBackgroundColor(TRUE, 0));
	list.Draw(&memDC, num, CPoint(0, 0), ILD_NORMAL);

	memDC.SelectObject(pOldBitmap);

	return (HBITMAP)dist.Detach();
}

/////////////////////////////////////////////////////////////////////////////
// CMyEditView printing

BOOL CMyEditView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}


void CMyEditView::OnDestroy()
{
	m_pRichEditOle->Release();

	// Deactivate the item on destruction; this is important
	// when a splitter view is being used.
   CRichEditView::OnDestroy();
   COleClientItem* pActiveItem = GetDocument()->GetInPlaceActiveItem(this);
   if (pActiveItem != NULL && pActiveItem->GetActiveView() == this)
   {
      pActiveItem->Deactivate();
      ASSERT(GetDocument()->GetInPlaceActiveItem(this) == NULL);
   }
}


/////////////////////////////////////////////////////////////////////////////
// CMyEditView diagnostics

#ifdef _DEBUG
void CMyEditView::AssertValid() const
{
	CRichEditView::AssertValid();
}

void CMyEditView::Dump(CDumpContext& dc) const
{
	CRichEditView::Dump(dc);
}

CEditDoc* CMyEditView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CEditDoc)));
	return (CEditDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMyEditView message handlers

#include "ImageDataObject.h"

void CMyEditView::OnFaceSelect(UINT nID)
{
	int nFace = nID - ID_BUTTON32774;
	
	// Get the bitmap from the imagelist
	//
	HBITMAP hBitmap = GetImage(GetImageList(), nFace);

	if (hBitmap)
	{
		// Insert the bitmap to the richedit control at the current location
		// 
		CImageDataObject::InsertBitmap(m_pRichEditOle, hBitmap);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -