次の方法で共有


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 メッセージによって渡された通知メッセージの場合、戻り値を設定するには、DWL_MSGRESULT値と共に SetWindowLong 関数を使用する必要があります。 SetWindowLong を呼び出すときは、GetParent(hDlg) を使用して、子ウィンドウの親である [全般] ページのDWL_MSGRESULT値を設定します。

[全般] ページの下部にある子ウィンドウの既定のダイアログ ボックス プロシージャは、WM_INITDIALOG メッセージを HandleMessage メソッドに渡す前に処理します。 子ウィンドウに送信された他のすべてのメッセージについて、 HandleMessage は 最初にメッセージを受信します。 次に 、HandleMessage の戻り値は、既定のダイアログ プロシージャがメッセージを処理するか、無視するかを決定します。

HandleMessage がWM_CTLCOLORDLG メッセージを処理する場合は、ダイアログ ボックスの背景を描画するために有効なブラシ ハンドルを返す必要があります。 一般に、HandleMessage がWM_CTLCOLOR* メッセージを処理する場合は、指定したコントロールの背景を描画するために有効なブラシ ハンドルを返す必要があります。

HandleMessage メソッドから EndDialog 関数を呼び出さないでください。 代わりに、 HandleMessage関数を 呼び出して、IDABORT 値を 持つWM_COMMAND メッセージをダイアログ ボックス プロシージャに投稿できます。 ポスト IDABORTPrint プロパティ シートを閉じ、PrintDlgExPRINTDLGEX 構造体の dwResultAction メンバーにPD_RESULT_CANCELを返します。 HandleMessage がダイアログ ボックスを閉じた理由を知る必要がある場合は、HandleMessage メソッドとアプリケーションの間に独自の通信メカニズムを提供する必要があります。

[ 全般 ] ページの下部にある子ダイアログ ボックスの標準コントロールをサブクラス化できます。 これらの標準コントロールは、[ 印刷 ] ダイアログ ボックスのコントロールと似ています。 ただし、既定のダイアログ ボックス プロシージャでは、コントロールをサブクラス化することもできます。 このため、HandleMessage がWM_INITDIALOG メッセージを処理する場合は、コントロールをサブクラス化する必要があります。 これにより、サブクラス プロシージャは、ダイアログ ボックス プロシージャによって設定されたサブクラス プロシージャの前に、コントロール固有のメッセージを受け取ります。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー 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