共用方式為


預覽列印架構

本文件說明 MFC 架構如何實作預覽列印功能。 涵蓋的主題包括:

  • 預覽列印處理程序

  • 修改預覽列印

預覽列印所以螢幕顯示和列印些微的不同,而非直接在裝置上繪製影像,應用程式必須模擬使用螢幕的印表機。 若要做到這一點,Mfc 程式庫定義了一個特殊 (未記載的) 衍生自CDC 類別,被呼叫 CPreviewDC。 所有CDC物件包含兩個裝置的內容,但通常是完全相同。 在 CPreviewDC 物件、 不同: 第一個代表印表機模擬,而第二個則代表實際顯示輸出的螢幕。

預覽列印處理

當使用者選取 [預覽列印] 指令,從檔案 功能表中,架構會建立 CPreviewDC 物件。 每當您的應用程式執行設定的印表機裝置內容特性的作業,架構也會執行相似作業時在螢幕裝置內容上。 比方說,如果您的應用程式中選取一個列印字型,則架構會選取一種字型的模擬印表機字型,螢幕顯示。 每當您的應用程式會將輸出傳送到印表機,則架構會傳送輸出至螢幕。

預覽列印也不同於每次繪製文件的頁面順序列印。 在列印中,架構會持續列印迴圈直到呈現特定頁數範圍。 在預覽列印中,一或兩頁會顯示任何時候,應用程式耐心等候然後 ; 直到使用者回應,則會不顯示任何進一步的網頁。 在預覽列印中,應用程式必須也會回應WM_PAINT的郵件,就像一般的螢幕顯示時。

CView::OnPreparePrinting函式時,會呼叫叫用預覽模式時,就像在列印工作的開始。 CPrintInfo 結構傳給函數的結構包含數個成員來調整 [預覽列印作業的特定特性,您可以設定其值。 比方說,您可以設定 m_nNumPreviewPages ,指定是否要預覽的單頁或雙頁模式中的文件的成員。

修改預覽列印

您可以修改的行為和外觀的預覽列印中的許多方面很容易。 比方說,您可以在其他方面:

  • 使預覽列印視窗顯示捲動軸,以方便存取文件的任何頁面。

  • 使預覽列印保留使用者的文件中的位置上開始顯示目前的網頁。

  • 使預覽列印和列印執行不同的初始化。

  • 使預覽列印您自己的格式顯示頁碼。

如果您知道文件的時間長度,並呼叫SetMaxPage以適當的值,架構只能使用這項資訊在預覽模式中,以及在列印中。 一旦架構知道文件的長度,它可以提供 [預覽] 視窗中,具有捲軸列、 允許使用者前或往後分頁預覽] 模式中的文件。 如果您還沒有設定文件的長度,架構無法定位捲動方塊來指出目前的位置,因此架構無法加入捲軸列。 如此一來,使用者必須在預覽視窗的控制列,以逐頁瀏覽文件上使用下一頁] 和 [上一頁] 按鈕。

若為預覽列印,您可能會有用來指派值給m_nCurPage成員的CPrintInfo,即使您會永遠不會這樣的一般列印中。 在一般列印中,這個成員會先接著由架構來檢視類別的資訊。 這是架構如何告知檢視應列印哪些頁面。

相反地,預覽列印模式啟動時, m_nCurPage成員會以反方向的資訊: 從檢視至架構。 架構會使用這個成員的值來決定哪一頁應該先預覽。 這個成員的預設值為 1,所以最初會顯示文件的第一頁。 您可以覆寫OnPreparePrinting將這個成員設定成在被叫用預覽列印] 命令時要檢視的網頁數目。 如此一來,應用程式會維護使用者的目前位置從一般顯示模式移至預覽列印模式時。

有時候您可能想OnPreparePrinting來執行不同的初始化,它會呼叫在預覽列印或列印工作而定。 您可以藉由檢查判斷這 m_bPreview 中的成員變數CPrintInfo結構。 這個成員設定為 [ ,則為 TRUE 當叫用預覽列印。

CPrintInfo結構也包含成員名稱為 m_strPageDesc,這用來格式化在單頁模式 」 和 「 多頁模式中的畫面底部顯示的字串。 這些字串是表單的預設"頁 n"和"頁 n - m,",但您可以修改 m_strPageDesc 與在OnPreparePrinting ,並設定變得更複雜的字串。 請參閱CPrintInfo 結構MFC 參考手冊 》 如需詳細資訊。

請參閱

參考

列印和預覽列印

列印

CView 類別

CDC 類別