LPPRINTHOOKPROC 回呼函式 (commdlg.h)

接收適用于 [ 列印 ] 對話方塊之預設對話方塊程式的訊息或通知。 這是與 PrintDlg 函式搭配使用的應用程式定義或程式庫定義回呼函式。

LPPRINTHOOKPROC類型會定義這個回呼函式的指標。 PrintHookProc 是應用程式定義或程式庫定義函數名稱的預留位置。

語法

LPPRINTHOOKPROC Lpprinthookproc;

UINT_PTR Lpprinthookproc(
  HWND unnamedParam1,
  UINT unnamedParam2,
  WPARAM unnamedParam3,
  LPARAM unnamedParam4
)
{...}

參數

unnamedParam1

訊息預定的 [列印 ] 對話方塊控制碼。

unnamedParam2

正在接收之訊息的識別碼。

unnamedParam3

有關訊息的其他資訊。 確切的意義取決於 unnamedParam2 參數的值。

unnamedParam4

有關訊息的其他資訊。 確切的意義取決於 unnamedParam2 參數的值。

如果 unnamedParam2 參數指出 WM_INITDIALOG 訊息, unnamedParam4PRINTDLG 結構的指標,其中包含建立對話方塊時所指定的值。

傳回值

如果攔截程式傳回零,則預設對話方塊程式會處理訊息。

如果攔截程式傳回非零值,則預設對話方塊程式會忽略訊息。

備註

當您使用 PrintDlg 函式建立 列印 對話方塊時,您可以提供 PrintHookProc 攔截程式來處理用於對話方塊程式的訊息或通知。 若要啟用攔截程式,請使用您傳遞至對話方塊建立函式的 PRINTDLG 結構。 在lpfnPrintHook成員中指定攔截程式的位址,並在Flags成員中指定PD_ENABLEPRINTHOOK旗標。

預設對話方塊程式會先處理 WM_INITDIALOG 訊息,再將訊息傳遞至攔截程式。 針對所有其他訊息,攔截程式會先接收訊息。 然後,攔截程式的傳回值會決定預設對話方塊程式是否處理訊息或忽略它。

如果攔截程式處理 WM_CTLCOLORDLG 訊息,它必須傳回有效的筆刷控制碼,才能繪製對話方塊的背景。 一般而言,如果攔截程式處理任何 WM_CTLCOLOR* 訊息,它必須傳回有效的筆刷控制碼,才能繪製指定控制項的背景。

請勿從攔截程式呼叫 EndDialog 函式。 相反地,攔截程式可以呼叫PostMessage函式,將具有IDABORT值的WM_COMMAND訊息張貼至對話方塊程式。 張貼 IDABORT 會關閉對話方塊,並讓對話方塊函式傳回 FALSE。 如果您需要知道攔截程式為何關閉對話方塊,您必須在攔截程式與應用程式之間提供自己的通訊機制。

您可以將通用對話方塊的標準控制項子類別化。 不過,對話方塊程式也可以將控制項子類別化。 因此,當您的攔截程式處理 WM_INITDIALOG 訊息時,您應該使用子類別控制項。 這可確保子類別程式會在對話方塊程式所設定的子類別程式之前收到控制項特定的訊息。

規格需求

   
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平臺 Windows
標頭 commdlg.h (包含 Windows.h)

另請參閱

通用對話方塊程式庫

概念

EndDialog

PRINTDLG

PostMessage

PrintDlg

參考

WM_CTLCOLORDLG

WM_INITDIALOG