次の方法で共有


CreateDialogIndirectA マクロ (winuser.h)

メモリ内のダイアログ ボックス テンプレートからモードレス ダイアログ ボックスを作成します。 CreateDialogIndirect マクロでは、CreateDialogIndirectParam 関数を使用します。

構文

void CreateDialogIndirectA(
  [in, optional]  hInstance,
  [in]            lpTemplate,
  [in, optional]  hWndParent,
  [in, optional]  lpDialogFunc
);

パラメーター

[in, optional] hInstance

型: HINSTANCE

ダイアログ ボックスを作成するモジュールのハンドル。

[in] lpTemplate

型: LPCDLGTEMPLATE

CreateDialogIndirect してダイアログ ボックスを作成するテンプレート。 ダイアログ ボックス テンプレートは、ダイアログ ボックスを記述するヘッダーの後に、ダイアログ ボックス内の各コントロールを記述する 1 つ以上の追加のデータ ブロックで構成されます。 テンプレートでは、標準形式または拡張形式を使用できます。

標準テンプレートでは、ヘッダーは DLGTEMPLATE 構造体の後に追加の可変長配列が続きます。 各コントロールのデータは、DLGITEMTEMPLATE 構造体の後に、追加の可変長配列で構成されます。

拡張ダイアログ ボックス テンプレートでは、ヘッダーは DLGTEMPLATEEX 形式を使用し、コントロール定義では DLGITEMTEMPLATEEX 形式を使用します。

CreateDialogIndirect 戻ったら、テンプレートを解放できます。テンプレートは、ダイアログ ボックスの開始にのみ使用されます。

[in, optional] hWndParent

型: HWND

ダイアログ ボックスを所有するウィンドウへのハンドル。

[in, optional] lpDialogFunc

型: DLGPROC

ダイアログ ボックス プロシージャへのポインター。 ダイアログ ボックスプロシージャの詳細については、「DialogProcを参照してください。

戻り値

何一つ

備考

CreateDialogIndirect マクロは、CreateWindowEx 関数を使用してダイアログ ボックスを作成します。 CreateDialogIndirect WM_INITDIALOG メッセージをダイアログ ボックス プロシージャに送信します。 テンプレートで DS_SETFONT またはDS_SHELLFONTスタイルが指定されている場合、関数はダイアログ ボックス プロシージャに WM_SETFONT メッセージも送信します。 テンプレートでWS_VISIBLEスタイルが指定されている場合、この関数はダイアログ ボックスを表示します。 最後に、CreateDialogIndirect ウィンドウ ハンドルをダイアログ ボックスに返します。

CreateDialogIndirect 戻った後、ShowWindow 関数を使用してダイアログ ボックスを表示できます (まだ表示されていない場合)。 ダイアログ ボックスを破棄するには、DestroyWindow 関数 使用します。 キーボード ナビゲーションやその他のダイアログ ボックス機能をサポートするには、ダイアログ ボックスのメッセージ ループで IsDialogMessage 関数を呼び出す必要があります。

標準ダイアログ ボックス テンプレートでは、DLGTEMPLATE 構造体と各 DLGITEMTEMPLATE 構造体は、DWORD 境界に配置する必要があります。 DLGITEMTEMPLATE 構造体の後に続く作成データ配列も、DWORD 境界に配置する必要があります。 テンプレート内の他のすべての可変長配列は、WORD 境界 配置する必要があります。

拡張ダイアログ ボックス テンプレートでは、DLGTEMPLATEEX ヘッダーと、DLGITEMTEMPLATEEX コントロール定義のそれぞれ DWORD 境界に配置する必要があります。 DLGITEMTEMPLATEEX 構造体に続く作成データ配列がある場合は、DWORD 境界にも配置する必要があります。 テンプレート内の他のすべての可変長配列は、WORD 境界 配置する必要があります。

ダイアログ ボックスのタイトルやボタンなど、ダイアログ ボックス テンプレート内のすべての文字列は Unicode 文字列である必要があります。 MultiByteToWideChar 関数を使用して、ANSI 文字列から Unicode 文字列を生成します。

手記

winuser.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして CreateDialogIndirect を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされる最小サーバー Windows 2000 Server [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー winuser.h (Windows.h を含む)
ライブラリ User32.lib
DLL User32.dll

関連項目

概念

CreateDialog の

CreateDialogIndirectParam の

CreateDialogParam の

CreateWindowEx の

DLGITEMTEMPLATE の

DLGITEMTEMPLATEEX を する

DLGTEMPLATE の

DLGTEMPLATEEX の

DestroyWindow の

ダイアログ ボックス

DialogProc

IsDialogMessage の

MultiByteToWideChar

その他のリソース を する

リファレンス

ShowWindow の

WM_INITDIALOG

WM_SETFONT