【VC开源代码栏目提醒】:网学会员VC开源代码为您提供ex32View.cpp参考,解决您在ex32View.cpp学习中工作中的难题,参考学习。
// ex32View.cpp : Cex32View 类的实现
//
#include "stdafx.h"
#include "ex32.h"
#include "ex32Doc.h"
#include "ex32View.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// Cex32View
IMPLEMENT_DYNCREATE(Cex32View, CScrollView)
BEGIN_MESSAGE_MAP(Cex32View, CScrollView)
// 标准打印命令
ON_COMMAND(ID_FILE_PRINT, CScrollView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CScrollView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CScrollView::OnFilePrintPreview)
ON_WM_KEYDOWN()
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
// Cex32View 构造/销毁
Cex32View::Cex32View(): m_rect(3000, -3000, 6000, -6000)
{
// TODO: 在此处添加构造代码
m_nColor = LTGRAY_BRUSH;
}
Cex32View::~Cex32View()
{
}
BOOL Cex32View::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或
// 样式
return CScrollView::PreCreateWindow(cs);
}
// Cex32View 绘制
void Cex32View::OnDraw(CDC* pDC)
{
pDC->SelectStockObject(m_nColor); //打开 (CDC* /* pDC */) 中的 pDC
pDC->Rectangle(m_rect);
}
void Cex32View::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
CSize sizeTotal(30000, 30000); // 30 * 30 厘米
CSize sizePage(sizeTotal.cx / 3, sizeTotal.cy / 3);
CSize sizeLine(sizeTotal.cx / 60, sizeTotal.cy / 60);
SetScrollSizes(MM_HIMETRIC, sizeTotal, sizePage, sizeLine);
}
// Cex32View 打印
BOOL Cex32View::OnPreparePrinting(CPrintInfo* pInfo)
{
// 默认准备
return DoPreparePrinting(pInfo);
}
void Cex32View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: 打印前添加额外的初始化
}
void Cex32View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: 打印后添加清除过程
}
// Cex32View 诊断
#ifdef _DEBUG
void Cex32View::AssertValid() const
{
CScrollView::AssertValid();
}
void Cex32View::Dump(CDumpContext& dc) const
{
CScrollView::Dump(dc);
}
Cex32Doc* Cex32View::GetDocument() const // 非调试版本是内联的
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(Cex32Doc)));
return (Cex32Doc*)m_pDocument;
}
#endif //_DEBUG
// Cex32View 消息处理
程序 void Cex32View::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
switch (nChar) {
case VK_HOME:
OnVScroll(SB_TOP, 0, NULL);
OnHScroll(SB_LEFT, 0, NULL);
break;
case VK_END:
OnVScroll(SB_BOTTOM, 0, NULL);
OnHScroll(SB_RIGHT, 0, NULL);
break;
case VK_UP:
OnVScroll(SB_LINEUP, 0, NULL);
break;
case VK_DOWN:
OnVScroll(SB_LINEDOWN, 0, NULL);
break;
case VK_PRIOR:
OnVScroll(SB_PAGEUP, 0, NULL);
break;
case VK_NEXT:
OnVScroll(SB_PAGEDOWN, 0, NULL);
break;
case VK_LEFT:
OnHScroll(SB_LINELEFT, 0, NULL);
break;
case VK_RIGHT:
OnHScroll(SB_LINERIGHT, 0, NULL);
break;
default:
break;
}
}
void Cex32View::OnLButtonDown(UINT nFlags, CPoint point)
{
CRect rcDevice = m_rect;
CClientDC dc(this);
OnPrepareDC(&dc);
dc.LPtoDP(rcDevice);
if (rcDevice.PtInRect(point))
{
if (m_nColor == LTGRAY_BRUSH) m_nColor = WHITE_BRUSH;
else m_nColor = LTGRAY_BRUSH;
InvalidateRect(rcDevice);
}
}