CreateDialogIndirectParamA 関数 (winuser.h)
メモリ内のダイアログ ボックス テンプレートからモードレス ダイアログ ボックスを作成します。 この関数は、ダイアログ ボックスを表示する前に、WM_INITDIALOG メッセージの lParam パラメーターとして、アプリケーション定義の値をダイアログ ボックス プロシージャ に 渡します。 アプリケーションでは、この値を使用してダイアログ ボックス コントロールを初期化できます。
構文
HWND CreateDialogIndirectParamA(
[in, optional] HINSTANCE hInstance,
[in] LPCDLGTEMPLATEA lpTemplate,
[in, optional] HWND hWndParent,
[in, optional] DLGPROC lpDialogFunc,
[in] LPARAM dwInitParam
);
パラメーター
[in, optional] hInstance
種類: HINSTANCE
ダイアログ ボックス テンプレートを含むモジュールへのハンドル。 このパラメーターが NULL の場合は、現在の実行可能ファイルが使用されます。
[in] lpTemplate
種類: LPCDLGTEMPLATE
CreateDialogIndirectParam を使用してダイアログ ボックスを作成するテンプレート。 ダイアログ ボックス テンプレートは、ダイアログ ボックスを記述するヘッダーの後に、ダイアログ ボックス内の各コントロールを記述する 1 つ以上の追加のデータ ブロックで構成されます。 テンプレートでは、標準形式または拡張形式のいずれかを使用できます。
標準テンプレートでは、ヘッダーは DLGTEMPLATE 構造体の後に追加の可変長配列が続きます。 各コントロールのデータは、 DLGITEMTEMPLATE 構造体の後に追加の可変長配列が続きます。
拡張ダイアログ ボックス テンプレートでは、ヘッダーは DLGTEMPLATEEX 形式を使用し、コントロール定義では DLGITEMTEMPLATEEX 形式を使用します。
CreateDialogIndirectParam が返された後は、ダイアログ ボックスの開始にのみ使用されるテンプレートを解放できます。
[in, optional] hWndParent
型: HWND
ダイアログ ボックスを所有するウィンドウへのハンドル。
[in, optional] lpDialogFunc
型: DLGPROC
ダイアログ ボックス プロシージャへのポインター。 ダイアログ ボックス プロシージャの詳細については、DialogProc に関するページをご覧ください。
[in] dwInitParam
型: LPARAM
WM_INITDIALOG メッセージの lParam パラメーターのダイアログ ボックスに渡す値。
戻り値
型: HWND
関数が成功した場合、戻り値はダイアログ ボックスへのウィンドウ ハンドルです。
関数が失敗した場合は、返される値は NULL です。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
CreateDialogIndirectParam 関数は、CreateWindowEx 関数を使用してダイアログ ボックスを作成します。 CreateDialogIndirectParam は、ダイアログ ボックス プロシージャ にWM_INITDIALOG メッセージを送信します。 テンプレートで DS_SETFONTまたはDS_SHELLFONT スタイルが指定されている場合、関数はダイアログ ボックス プロシージャに WM_SETFONT メッセージも送信します。 テンプレートで WS_VISIBLE スタイルが指定されている場合、この関数はダイアログ ボックスを表示します。 最後に、 CreateDialogIndirectParam はウィンドウ ハンドルをダイアログ ボックスに返します。
CreateDialogIndirectParam が返された後、ShowWindow 関数を使用してダイアログ ボックスを表示できます (まだ表示されていない場合)。 ダイアログ ボックスを破棄するには、 DestroyWindow 関数を使用します。 キーボード ナビゲーションやその他のダイアログ ボックス機能をサポートするには、ダイアログ ボックスのメッセージ ループで IsDialogMessage 関数を呼び出す必要があります。
標準ダイアログ ボックス テンプレートでは、 DLGTEMPLATE 構造体と各 DLGITEMTEMPLATE 構造体を DWORD 境界に配置する必要があります。 DLGITEMTEMPLATE 構造体の後に続く作成データ配列も、DWORD 境界に配置する必要があります。 テンプレート内の他のすべての可変長配列は、 WORD の境界に配置する必要があります。
拡張ダイアログ ボックス テンプレートでは、 DLGTEMPLATEEX ヘッダーと各 DLGITEMTEMPLATEEX コントロール定義を DWORD 境界に配置する必要があります。 DLGITEMTEMPLATEEX 構造体に続く作成データ配列がある場合は、DWORD 境界にも配置する必要があります。 テンプレート内の他のすべての可変長配列は、 WORD の境界に配置する必要があります。
ダイアログ ボックス テンプレート内のすべての文字列 (ダイアログ ボックスのタイトルやボタンなど) は、Unicode 文字列である必要があります。
注意
winuser.h ヘッダーは、CreateDialogIndirectParam をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | winuser.h (Windows.h を含む) |
Library | User32.lib |
[DLL] | User32.dll |
API セット | ext-ms-win-ntuser-dialogbox-l1-1-0 (Windows 8 で導入) |
関連項目
概念
その他のリソース
リファレンス