Win32 API 日本語リファレンス
ホーム › UI.Controls.Dialogs › LPPAGESETUPHOOK

LPPAGESETUPHOOK

コールバック

シグネチャ

UINT_PTR LPPAGESETUPHOOK(
    HWND param0,
    DWORD param1,
    WPARAM param2,
    LPARAM param3
);

パラメーター

フィールド型説明
param0HWNDメッセージの送り先である Page Setup ダイアログボックスへのハンドルです。
param1DWORD受け取るメッセージの識別子です。
param2WPARAMメッセージに関する追加情報です。正確な意味は unnamedParam2 パラメーターの値によって異なります。
param3LPARAM

メッセージに関する追加情報です。正確な意味は unnamedParam2 パラメーターの値によって異なります。

unnamedParam2 パラメーターが WM_INITDIALOG メッセージを示す場合、unnamedParam4 は、ダイアログボックスが作成されたときに指定された値を格納する PAGESETUPDLG 構造体へのポインターです。

公式ドキュメント

Page Setup ダイアログボックスの既定のダイアログボックスプロシージャに送られるメッセージや通知を受け取ります。PageSetupHook フックプロシージャは、PageSetupDlg 関数と共に使用される、アプリケーション定義またはライブラリ定義のコールバック関数です。

LPPAGESETUPHOOK 型は、このコールバック関数へのポインターを定義します。PageSetupHook は、アプリケーション定義またはライブラリ定義の関数名のプレースホルダーです。

戻り値

フックプロシージャが 0 を返した場合、既定のダイアログボックスプロシージャがそのメッセージを処理します。

フックプロシージャが 0 以外の値を返した場合、既定のダイアログボックスプロシージャはそのメッセージを無視します。

解説(Remarks)

PageSetupDlg 関数を使用して Page Setup ダイアログボックスを作成する場合、ダイアログボックスプロシージャに送られるメッセージや通知を処理する PageSetupHook フックプロシージャを用意できます。フックプロシージャを有効にするには、ダイアログ作成関数に渡した PAGESETUPDLG 構造体を使用します。lpfnPageSetupHook メンバーにフックプロシージャへのポインターを指定し、Flags メンバーに PSD_ENABLEPAGESETUPHOOK フラグを指定します。

既定のダイアログボックスプロシージャは、WM_INITDIALOG メッセージをフックプロシージャに渡す前に処理します。それ以外のすべてのメッセージについては、フックプロシージャが先にメッセージを受け取ります。その後、フックプロシージャの戻り値によって、既定のダイアログプロシージャがそのメッセージを処理するか無視するかが決まります。

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

フックプロシージャから EndDialog 関数を呼び出さないでください。代わりに、フックプロシージャは PostMessage 関数を呼び出して、IDABORT 値を伴う WM_COMMAND メッセージをダイアログボックスプロシージャにポストできます。IDABORT をポストするとダイアログボックスが閉じられ、ダイアログボックス関数は FALSE を返します。フックプロシージャがダイアログボックスを閉じた理由を知る必要がある場合は、フックプロシージャとアプリケーションとの間の通信手段を独自に用意する必要があります。

コモンダイアログボックスの標準コントロールはサブクラス化できます。ただし、ダイアログボックスプロシージャもコントロールをサブクラス化することがあります。そのため、コントロールのサブクラス化は、フックプロシージャが WM_INITDIALOG メッセージを処理するときに行ってください。これにより、ダイアログボックスプロシージャが設定したサブクラスプロシージャよりも先に、自分のサブクラスプロシージャがコントロール固有のメッセージを受け取るようになります。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)