MFC 打印和预览的功能

MFC框架中的CView类包含OnPaint、OnDraw和OnPrint方法,用于显示和打印内容。OnPaint默认调用OnDraw进行屏幕绘制,而OnPrint在打印时也会调用OnDraw。在实现打印功能时,OnPrint与OnDraw的输出内容相同,但调用场景和参数不同,确保了设备无关性。开发者通常需要重写OnDraw以定义视图内容的绘制逻辑。
摘要由CSDN通过智能技术生成

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(),非虚函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值