共用方式為


IPrintDialogCallback::HandleMessage 方法 (commdlg.h)

PrintDlgEx呼叫,讓您的應用程式有機會處理在Print 屬性工作表之 [一般] 頁面下半部傳送至子對話方塊的訊息。 子對話方塊包含類似 [ 列印 ] 對話方塊的控制項。

語法

HRESULT HandleMessage(
  HWND    hDlg,
  UINT    uMsg,
  WPARAM  wParam,
  LPARAM  lParam,
  LRESULT *pResult
);

參數

hDlg

類型: HWND

[ 一般 ] 頁面下半部子對話方塊的控制碼。

uMsg

類型: UINT

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

wParam

類型: WPARAM

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

lParam

類型: LPARAM

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

如果 uMsg 參數指出 WM_INITDIALOG 訊息, lParamPRINTDLGEX 結構的指標,其中包含建立屬性工作表時所指定的值。

pResult

類型: LRESULT*

指出訊息的對話方塊程式所傳回的結果。 如果您處理訊息,指向的值應該是 TRUE ,否則它應該是 FALSE ,或根據訊息類型的任何值都是適當的值。

傳回值

類型: HRESULT

如果您的IPrintDialogCallback::HandleMessage實作已處理訊息,則傳回S_OK。 在此情況下, PrintDlgEx 函式不會執行任何預設訊息處理。

如果您想要PrintDlgEx執行其預設訊息處理,請傳回S_FALSE

備註

對於 WM_NOTIFY 訊息所傳遞的通知訊息,您必須使用 SetWindowLong 函式搭配 DWL_MSGRESULT 值來設定傳回值。 當您呼叫SetWindowLong時,請使用GetParent (hDlg) 來設定 [一般] 頁面的DWL_MSGRESULT值,這是子視窗的父系。

[一般] 頁面下半部子視窗的預設對話方塊程式會先處理WM_INITDIALOG訊息,再傳遞至HandleMessage方法。 對於傳送至子視窗的其他所有訊息, HandleMessage 會先接收訊息。 然後 HandleMessage 傳回值會判斷預設對話方塊程式是否處理訊息或忽略它。

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

請勿從HandleMessage方法呼叫EndDialog函式。 相反地, HandleMessage 可以呼叫 PostMessage 函式,將具有 IDABORT 值的 WM_COMMAND 訊息張貼至對話方塊程式。 張貼IDABORT會關閉Print 屬性工作表,並讓PrintDlgEx 在 PRINTDLGEX結構的dwResultAction成員中傳回PD_RESULT_CANCEL 如果您需要知道 HandleMessage 為何關閉對話方塊,您必須在 HandleMessage 方法與應用程式之間提供自己的通訊機制。

您可以在 [ 一般 ] 頁面的下半部子對話方塊,將子對話方塊的標準控制項子類別化。 這些標準控制項類似于 [ 列印 ] 對話方塊中找到的控制項。 不過,預設對話方塊程式也可以子類別控制項。 因此, 當 HandleMessage 處理 WM_INITDIALOG 訊息時,您應該子類別控制項。 這可確保子類別程式在對話方塊程式所設定的子類別程式之前,接收控制項特定的訊息。

規格需求

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

另請參閱

通用對話方塊程式庫

概念

EndDialog

IPrintDialogCallback

其他資源

PRINTDLGEX

PostMessage

PrintDlgEx

參考

SetWindowLong

WM_COMMAND

WM_CTLCOLORDLG

WM_INITDIALOG

WM_NOTIFY