MFC 本身提供了很好的框架。
// XXX绘制
void XXX::OnDraw(CDC* pDC)
{
XXX* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
}
// XXX打印
BOOL XXX::OnPreparePrinting(CPrintInfo* pInfo)
{
// 默认准备
return DoPreparePrinting(pInfo);
}
void XXX::OnBeginPrinting(CDC* pDC, CPrintInfo *pInfo)
{
// TODO: 添加额外的打印前进行的初始化过程
}
void XXX::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: 添加打印后进行的清除过程
}
// XXX消息处理程序
void XXX::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
//这里添加绘制的代码
CView::OnPrint(pDC, pInfo);
}
void CTest0607View::OnEndPrintPreview(CDC* pDC, CPrintInfo* pInfo, POINT point, CPreviewView* pView)
{
// TODO: 在此添加专用代码和/或调用基类
CView::OnEndPrintPreview(pDC, pInfo, point, pView);
}
但是OnPrint里面绘制的内容总是会被OnDraw()里面绘制覆盖。后来也看了网上很多例子,也有DLG来实现的,但是总是觉得不太好。
今天无意间看见一篇文章:OnPrint()和OnDraw()区别和联系
才知道OnPrint最后是一定会调用OnDraw()的。
以下是转的文章
基本基类----CView类中含有三个方法
1,虚函数OnPrint()
2,基本消息响应函数OnPaint(),非虚函数