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 訊息, lParam 是 PRINTDLGEX 結構的指標,其中包含建立屬性工作表時所指定的值。
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 |
另請參閱
概念
其他資源
參考