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