LPSETUPHOOKPROC
コールバックシグネチャ
UINT_PTR LPSETUPHOOKPROC(
HWND param0,
DWORD param1,
WPARAM param2,
LPARAM param3
);パラメーター
| フィールド | 型 | 説明 |
|---|---|---|
| param0 | HWND | メッセージの送信先となる 印刷の設定 ダイアログ ボックスのハンドルです。 |
| param1 | DWORD | 受信するメッセージの識別子です。 |
| param2 | WPARAM | メッセージに関する追加情報です。正確な意味は unnamedParam2 パラメーターの値によって異なります。 |
| param3 | LPARAM | メッセージに関する追加情報です。正確な意味は unnamedParam2 パラメーターの値によって異なります。 |
公式ドキュメント
PrintDlg 関数と共に使用される、アプリケーション定義またはライブラリ定義のコールバック関数です。このフック プロシージャは、印刷の設定 ダイアログ ボックスの既定のダイアログ ボックス プロシージャ宛のメッセージまたは通知を受け取ります。
LPSETUPHOOKPROC 型は、このコールバック関数へのポインターを定義します。SetupHookProc は、アプリケーション定義またはライブラリ定義の関数名のプレースホルダーです。
戻り値
フック プロシージャが 0 を返した場合、既定のダイアログ ボックス プロシージャがメッセージを処理します。
フック プロシージャが 0 以外の値を返した場合、既定のダイアログ ボックス プロシージャはメッセージを無視します。
解説(Remarks)
印刷の設定 ダイアログ ボックスは ページ設定 ダイアログ ボックスに置き換えられており、新しいアプリケーションでは ページ設定 ダイアログ ボックスを使用してください。ただし、互換性のため、PrintDlg 関数は引き続き 印刷の設定 ダイアログ ボックスの表示をサポートします。印刷の設定 ダイアログ ボックスに SetupHookProc フック プロシージャを用意すると、ダイアログ ボックス プロシージャ宛のメッセージや通知を処理できます。
フック プロシージャを有効にするには、ダイアログ作成関数に渡した PRINTDLG 構造体を使用します。lpfnSetupHook メンバーにフック プロシージャのアドレスを指定し、Flags メンバーに PD_ENABLESETUPHOOK フラグを指定します。
既定のダイアログ ボックス プロシージャは、WM_INITDIALOG メッセージをフック プロシージャに渡す前に処理します。それ以外のすべてのメッセージについては、フック プロシージャが最初にメッセージを受け取ります。その後、フック プロシージャの戻り値によって、既定のダイアログ プロシージャがメッセージを処理するか無視するかが決まります。
フック プロシージャが WM_CTLCOLORDLG メッセージを処理する場合は、ダイアログ ボックスの背景を描画するための有効なブラシ ハンドルを返す必要があります。一般に、フック プロシージャが WM_CTLCOLOR* メッセージを処理する場合は、指定されたコントロールの背景を描画するための有効なブラシ ハンドルを返す必要があります。
フック プロシージャから EndDialog 関数を呼び出さないでください。代わりに、フック プロシージャは PostMessage 関数を使用して、IDABORT 値を持つ WM_COMMAND メッセージをダイアログ ボックス プロシージャにポストできます。IDABORT をポストするとダイアログ ボックスが閉じ、ダイアログ ボックス関数は FALSE を返します。フック プロシージャがダイアログ ボックスを閉じた理由を知る必要がある場合は、フック プロシージャとアプリケーションの間の通信手段を独自に用意する必要があります。
コモン ダイアログ ボックスの標準コントロールはサブクラス化できます。ただし、ダイアログ ボックス プロシージャもコントロールをサブクラス化することがあります。そのため、コントロールのサブクラス化は、フック プロシージャが WM_INITDIALOG メッセージを処理するときに行ってください。これにより、ダイアログ ボックス プロシージャが設定したサブクラス プロシージャよりも先に、自分のサブクラス プロシージャがコントロール固有のメッセージを受け取るようになります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)