列印屬性工作表

Print屬性工作表是標準使用者介面,可讓使用者指定特定列印工作的屬性。 屬性工作表是由一組依印表機或應用程式而有所不同的屬性頁所組成。 針對標準Windows屬性頁的子集,某些印表機可能會新增驅動程式特定的屬性頁,而某些應用程式可能會新增應用程式特定的屬性頁。

若要建立及顯示 Print 屬性工作表,請初始化 PRINTDLGEX 結構,並將結構傳遞至 PrintDlgEx 函式。

下圖顯示典型的 Print 屬性工作表。

printer property sheet

PRINTDLGEX結構的大部分成員都與PRINTDLG結構的成員相同。 如需如何使用通用結構成員與對話方塊控制項互動的描述,請參閱 列印對話方塊。 本主題的其餘部分描述與 [ 列印 ] 對話方塊不同的 Print 屬性工作表功能。

您可以為[一般] 頁面的下半部指定自訂對話方塊範本,並指定其他屬性頁以遵循 [一] 頁面,來自訂Print屬性工作表。 如需詳細資訊,請參閱 自訂列印屬性工作表

您可以在顯示內容表時實作回呼物件,以接收 PrintDlgEx 函式的通知和訊息。 提供自訂範本或其他頁面的應用程式會使用回呼物件與屬性工作表通訊。 如需詳細資訊,請參閱 Print 屬性工作表的回呼物件

Print屬性工作表支援指定要列印的多個非連續頁面範圍。 PRINTDLGEX結構的lpPageRanges成員會指定PRINTPAGERANGE結構的陣列,其中每個結構都會指定頁面範圍。

[ 列印] 屬性工作表會顯示 [目前頁面 ] 選項按鈕做為選項按鈕之 [頁面範圍 ] 群組的一部分。 若要控制[目前頁面] 選項按鈕,請使用PRINTDLGEX結構的Flags成員中的PD_CURRENTPAGEPD_NOCURRENTPAGE旗標。

本節討論下列主題。

自訂列印屬性工作表

您可以透過下列方式自訂 Print 屬性工作表:

  • 提供 [ 一般 ] 頁面下方部分的自訂範本。 這可讓您包含應用程式專屬的其他控制項。 PrintDlgEx函式會使用自訂範本取代預設範本。
  • 提供其他屬性頁,以遵循 [一般 ] 頁面。
  • 提供回呼物件。 如需詳細資訊,請參閱 Print 屬性工作表的回呼物件

您無法變更 [一般 ] 頁面的上方部分。 您無法變更印表機驅動程式所提供的屬性頁。

若要提供 [一般] 頁面的自訂範本:

  1. 修改 Prnsetup.dlg 檔案中指定的 PRINTDLGEXORD 範本,為 [一般 ] 頁面下半部建立自訂範本。 一般而言,自訂範本的大小必須與預設範本相同。 不過,如果您指定 PD_USELARGETEMPLATE 旗標來建立較大的 [ 一般 ] 頁面,您可以放大自訂範本。 預設 [ 列印 ] 對話方塊範本中使用的控制項識別碼定義于 Dlgs.h 檔案中。

  2. 使用 PRINTDLGEX 結構來啟用範本,如下所示:

    • 如果您的自訂範本是應用程式或動態連結程式庫中的資源,請在Flags成員中設定PD_ENABLEPRINTTEMPLATE旗標。 使用 結構的 hInstancelpPrintTemplateName 成員來識別模組和資源名稱。

      -或者-

    • 如果您的自訂範本已在記憶體中,請設定 PD_ENABLEPRINTTEMPLATEHANDLE 旗標。 使用 hInstance 成員來識別包含範本的記憶體物件。

  3. 如果您使用自訂範本來定義其他控制項,則必須提供回呼物件來處理控制項的輸入。 回呼物件會實作 IPrintDialogCallback::HandleMessage 方法,此方法會接收傳送至自訂對話方塊的訊息。

提供其他屬性頁

  1. 使用 函式來建立其他頁面。

  2. 使用PRINTDLGEX結構的lphPropertyPages成員來指定其他頁面的控制碼陣列。

    建立每個頁面處理傳送至頁面之訊息時所指定的對話方塊程式。

  3. 您可能想要提供實作 介面的回呼物件。 PrintDlgEx函式會使用此介面將指標傳遞給應用程式IPrintDialogServices介面。 其他屬性頁的對話方塊程式可以使用這個介面來擷取目前所選印表機的相關資訊。

Print 屬性工作表的回呼物件

顯示 Print 屬性工作表的應用程式可以實作回呼物件,以在顯示內容表時接收 PrintDlgEx 函式的通知和訊息。 若要提供回呼物件,請在PRINTDLGEX結構的lpCallback成員中指定物件的指標。

回呼物件必須實作 IPrintDialogCallback 介面。 PrintDlgEx函式會在下列情況下呼叫IPrintDialogCallback方法:

  • 當對話方塊已初始化時
  • 當使用者從屬性工作表所顯示的已安裝印表機清單中選取不同的印表機時
  • 在屬性工作表的 [ 一般 ] 頁面下半部收到子對話方塊的訊息時

回呼物件也應該實作 IObjectWithSite 介面。 PrintDlgEx函式會呼叫 方法,將指標傳遞至IPrintDialogServices介面至應用程式。 IPrintDialogCallback方法可以使用IPrintDialogServices介面來擷取目前所選印表機的相關資訊。 IPrintDialogServices介面也適用于建立其他頁面的應用程式,以遵循Print屬性工作表的 [一般] 頁面。 其他頁面的對話方塊程式可以呼叫 IPrintDialogServices 方法。