MFC 列印程式的編制

2021-06-05 07:58:48 字數 2286 閱讀 4743

mfc 列印程式的編制

mfc 在實現列印程式設計工作時已經建立了乙個已有的框架,我們只要往這個框架裡面填東西即可。

列印工作其實就是在 dc 上繪圖,不過這裡的 dc 是印表機的 dc ,明確這一點之後,想當然的,我們列印的任務可以分為獲取印表機 dc 、根據印表機驅動讓使用者互動設定列印引數、開始列印、列印的具體過程(分頁、繪製等)、結束列印、釋放 dc 。以下通過一段示列**來說明:

// 列印控制函式

void print()

else

else

else if (dlg.printrange() == true)

else if (dlg.printselection() == true)

for(int i = 0; i < m_ncopies; i++)

onprint(dcprinter, j, rato);

if (dcprinter.endpage() <= 0)  // 告訴列印驅動換 // 頁,如果不加則將所有頁打在一張紙上 }

if (bprintok == false)

} }

else

else if (dlg.printrange() == true)

else if (dlg.printselection() == true)

for(uint j = page_min; j < page_max + 1; j++)

onprint(dcprinter, j, rato);

if (dcprinter.endpage() <= 0)  // 告訴列印驅動換 // 頁,如果不加則將所有頁打在一張紙上 }

if (bprintok == false)

} }

} else

else if (dlg.printrange() == true)

else if (dlg.printselection() == true)

for(uint i = page_min; i < page_max + 1; i++)

onprint(dcprinter, i, rato);

if (dcprinter.endpage() <= 0)// 告訴列印驅動換頁,如果不 // 加則將所有頁打在一張紙上 }

}if (bprintok == true)

dcprinter.detach();// 釋放 dc

}            }

}     }

// 具體的頁面繪製函式

void onprint(cdc &dc, uint &ncurpage, float &rato)

以上列印過程沒有考慮列印預覽功能,只是實現直接列印功能,現在的虛擬印表機軟體( pdffactory )已經很多了,個人感覺沒必要列印預覽功能。如果要要想實現列印預覽功能,那麼我們就要考慮借用 mfc 的文件-檢視結構或者對話方塊結構,原理是一樣的。介紹此類的文件網路上也很多,我剛開始是看

才打算寫上面這麼一篇的。後來發現

,個人覺得很值得一讀的。

以下針對微軟封裝的幾個相應函式按呼叫順序做一簡單描述:

1.onprepareprinting

2.onbeingprinting

onbeingprinting 函式是開始列印文件前呼叫的函式,使用者可以在其中加入另一些對於列印過程的初始化**,比如分配列印過程中將要使用的「筆」(cpen)、「刷子」(cbrush)等,預設的**中該函式將直接返回。

3.onpreparedc

onpreparedc 函式用於在列印前準備列印裝置場,如視窗大小、原點,檢視大小、原點等。同時該函式在視類顯示文件內容時也被呼叫,預設的**中該函式呼叫基類中的onpreparedc函式。

4.onprint

onprint 函式則是具體的列印過程,它利用前面準備好的裝置場進行列印。

5.onendprinting

onendprinting 函式是與onbeginprinting函式相對應的函式,它在列印完成後由應用框架呼叫,用於釋放在onbeginprinting中分配的「物件」,如「筆」、「刷子」等,其預設的**中該函式將直接返回。

這幾個函式中,onprepareprinting、onbeginprinting、onendprinting函式在一次列印過程中將只被呼叫一次,不管這一次列印內容有多少頁,而onpreparedc、onprint函式則每列印一頁都將被呼叫一次,這種呼叫次序對於列印是很有用的。

好了,關於列印就總結到這裡,最後還推薦一篇文章,對列印總括性比較好,如果覺得看我的**太累就看看

MFC下 報表列印程式的實現

vc 6.0下實現的 報表列印類 對資料制定列印位置 位置調整 列印預覽 以及批量列印 適用於 罰單 發票等批量列印要求 以下為程式 reportprint.h inte ce for the reportprint class.if defined afx reportprint h 7a35ba...

MFC列印和列印預覽

mfc提供了乙個框架性的列印和列印預覽功能 它的基本思想是將實際顯示和列印文件的 合二為一,即都由此文件關聯的cview中的ondraw cdc pdc 來處理,由mfc框架根據使用者的操作來決定傳進來的pdc是指向螢幕還是印表機,當pdc指向螢幕裝置,就在螢幕上顯示文件,當指向印表機裝置時就列印文...

MFC實現列印功能

使用cprintdialog類的建構函式 cprintdialog bool bprintsetuponly,true for print setup,false for print dialog dword dwflags pd allpages pd usedevmodecopies pd no...