DLGPROC
コールバックシグネチャ
INT_PTR DLGPROC(
HWND param0,
DWORD param1,
WPARAM param2,
LPARAM param3
);パラメーター
| フィールド | 型 | 説明 |
|---|---|---|
| param0 | HWND | ダイアログボックスへのハンドルです。このパラメーターは通常 hWnd という名前が付けられます。 |
| param1 | DWORD | メッセージです。このパラメーターは通常 uMsg という名前が付けられます。 |
| param2 | WPARAM | メッセージ固有の追加情報です。このパラメーターは通常 wParam という名前が付けられます。 |
| param3 | LPARAM | メッセージ固有の追加情報です。このパラメーターは通常 lParam という名前が付けられます。 |
公式ドキュメント
CreateDialog 関数群および DialogBox 関数群と共に使用されるアプリケーション定義のコールバック関数です。モーダルまたはモードレスのダイアログボックスに送られるメッセージを処理します。DLGPROC 型は、このコールバック関数へのポインターを定義します。DialogProc は、アプリケーション定義の関数名のプレースホルダーです。
戻り値
型: INT_PTR
通常、ダイアログボックスプロシージャは、メッセージを処理した場合は TRUE を、処理しなかった場合は FALSE を返す必要があります。ダイアログボックスプロシージャが FALSE を返した場合、ダイアログマネージャーは、そのメッセージに対する既定のダイアログ処理を実行します。
ダイアログボックスプロシージャが特定の戻り値を必要とするメッセージを処理する場合は、TRUE を返す直前に SetWindowLong(hwndDlg, DWL_MSGRESULT, lResult) を呼び出して、目的の戻り値を設定する必要があります。SetWindowLong は TRUE を返す直前に呼び出さなければならない点に注意してください。それより早く呼び出すと、入れ子になったダイアログボックスのメッセージによって DWL_MSGRESULT の値が上書きされる可能性があります。
次のメッセージは、上記の一般的な規則の例外です。戻り値の意味の詳細については、各メッセージのドキュメントを参照してください。
解説(Remarks)
ヘッダーでは、パラメーターに名前が付けられていません: typedef INT_PTR (CALLBACK* DLGPROC)(HWND, UINT, WPARAM, LPARAM);。そのため、構文ブロックでは unnamedParam1 ~ unnamedParam4 として記載されています。アプリ内ではこれらのパラメーターに任意の名前を付けられますが、通常はパラメーターの説明に示されている名前が使用されます。
ダイアログボックスプロシージャは、ダイアログボックスにダイアログボックスクラスを使用する場合にのみ使用してください。これは既定のクラスであり、ダイアログボックステンプレートでクラスが明示的に指定されていない場合に使用されます。ダイアログボックスプロシージャはウィンドウプロシージャに似ていますが、不要なメッセージを処理するために DefWindowProc 関数を呼び出してはなりません。不要なメッセージは、ダイアログボックスのウィンドウプロシージャによって内部的に処理されます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)