MFC 对话框打印和打印预览知识总结
?1、準(zhǔn)備知識(shí)
?
| CView::OnPreparePrinting() | 調(diào)用CprintInfo成員函數(shù)(如CprintInfo::SetMaxPage設(shè)置文檔長(zhǎng)度)或設(shè)置CprintInfo數(shù)據(jù)成員以影響Print對(duì)話框或打印預(yù)覽操作,然后調(diào)用DoPreparePrinting生成用于打印或打印預(yù)覽的設(shè)備描述表(注意必須覆蓋OnPreparePrinting并調(diào)用DoPreparePrinting) |
| CView::OnBeginPrinting() | 分配專門用于打印的字體,畫筆、畫刷和其它對(duì)象,根據(jù)設(shè)備描述表計(jì)算并設(shè)置文檔長(zhǎng),在設(shè)備描述表上存放所需的消息(這是第一個(gè)訪問(wèn)設(shè)備描述表的的虛擬函數(shù)) |
| CView::OnPrepareDC() | 設(shè)置打印當(dāng)前頁(yè)面的文本或圖形屬性,修改視圖原點(diǎn),以打印當(dāng)前頁(yè)面,如果沒有設(shè)置文檔長(zhǎng)度,在文檔末尾終止打印循環(huán)(CprintInfo::m_bContinuePrinting賦值FALSE) |
| CView::OnPrint() | 調(diào)用OnDraw進(jìn)行輸出;調(diào)用OnDraw前選擇OnBeginPrinting分配的字體,調(diào)用OnDraw后取消對(duì)象,打印只出現(xiàn)在文檔打印版中的頁(yè)頭和頁(yè)腳,如果打印輸出與屏幕輸出的外觀不同, 在這里打印,而不是調(diào)用OnDraw |
| CView::OnEndPrinting() | 調(diào)用Cgdi::DeleteObject刪除OnBeginPrinting分配的對(duì)象 |
VS2017 MFC對(duì)話框程序打印及打印預(yù)覽的實(shí)現(xiàn)_微瀾111的博客-CSDN博客_mfc打印預(yù)覽MFC文檔/視圖的應(yīng)用程序,向?qū)Ыo了打印及打印預(yù)覽的標(biāo)準(zhǔn)支持。使這類應(yīng)用程序打印及打印預(yù)覽工作得以簡(jiǎn)化。另一類對(duì)話框程序卻沒有相應(yīng)支持,從MFC打印及打印預(yù)覽的標(biāo)準(zhǔn)支持入手,可以在對(duì)話框程序中,增加三個(gè)類以支持打印及打印預(yù)覽,本文介紹了這三個(gè)類的實(shí)現(xiàn)。 打印及打印預(yù)覽是編寫應(yīng)用程序經(jīng)常要解決的問(wèn)題,為了理解VC++對(duì)話框程序的打印及打印預(yù)覽實(shí)現(xiàn),要先掌握基于文檔/視圖的應(yīng)用程序打印及打印預(yù)覽的基本原理。所以分為兩部分介紹。https://blog.csdn.net/weixin_42403113/article/details/88873492
2、打印和顯示屏幕不一樣的地方
每英寸點(diǎn)數(shù)不同,所以往打印DC,和往屏幕DC里繪制時(shí),需要做一些轉(zhuǎn)換
void CxxView::OnPrint(CDC *pDC, CPrintInfo *pInfo)
{
?? ?// Print zoom is the difference between screen-?
?? ?// and printer resolution.
?? ?CClientDC dc( this );
?? ?int n ?= dc.GetDeviceCaps( LOGPIXELSX );
?? ?int n1 = pDC->GetDeviceCaps( LOGPIXELSX );
}
總結(jié)
以上是生活随笔為你收集整理的MFC 对话框打印和打印预览知识总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C# winform 打印预览
- 下一篇: Qt实现Qchart的打印和打印预览的几