DialogBoxIndirectParamA 関数 (winuser.h)

メモリ内のダイアログ ボックス テンプレートからモーダル ダイアログ ボックスを作成します。 ダイアログ ボックスを表示する前に、関数は、WM_INITDIALOG メッセージのlParam パラメーターとして、アプリケーション定義の値をダイアログ ボックス プロシージャに渡します。 アプリケーションでは、この値を使用してダイアログ ボックス コントロールを初期化できます。

構文

INT_PTR DialogBoxIndirectParamA(
  [in, optional] HINSTANCE       hInstance,
  [in]           LPCDLGTEMPLATEA hDialogTemplate,
  [in, optional] HWND            hWndParent,
  [in, optional] DLGPROC         lpDialogFunc,
  [in]           LPARAM          dwInitParam
);

パラメーター

[in, optional] hInstance

種類: HINSTANCE

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

[in] hDialogTemplate

種類: LPCDLGTEMPLATE

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

ダイアログ ボックスの標準テンプレートでは、ヘッダーは DLGTEMPLATE 構造体とそれに続く追加の可変長配列です。 各コントロールのデータは、 DLGITEMTEMPLATE 構造体とそれに続く追加の可変長配列で構成されます。

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

[in, optional] hWndParent

型: HWND

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

[in, optional] lpDialogFunc

種類: DLGPROC

ダイアログ ボックス プロシージャへのポインター。 ダイアログ ボックス プロシージャの詳細については、DialogProc に関するページをご覧ください。

[in] dwInitParam

型: LPARAM

WM_INITDIALOG メッセージの lParam パラメーターのダイアログ ボックスに渡す値。

戻り値

種類: INT_PTR

関数が成功した場合、戻り値は、ダイアログ ボックスの終了に使用された EndDialog 関数の呼び出しで指定された nResult パラメーターです。

hWndParent パラメーターが無効であるために関数が失敗した場合、戻り値は 0 です。 この関数は、以前のバージョンの Windows との互換性のために、この場合は 0 を返します。 関数が他の理由で失敗した場合、戻り値は –1 です。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

DialogBoxIndirectParam 関数は、CreateWindowEx 関数を使用してダイアログ ボックスを作成します。 DialogBoxIndirectParam は、ダイアログ ボックス プロシージャ にWM_INITDIALOG メッセージを送信します。 テンプレートで DS_SETFONTまたはDS_SHELLFONT スタイルが指定されている場合、関数はダイアログ ボックス プロシージャに WM_SETFONT メッセージも送信します。 この関数は、(テンプレートが WS_VISIBLE スタイルを指定しているかどうかに関係なく) ダイアログ ボックスを表示し、所有者ウィンドウを無効にし、ダイアログ ボックスのメッセージを取得してディスパッチするための独自のメッセージ ループを開始します。

ダイアログ ボックス プロシージャが EndDialog 関数を呼び出すと、DialogBoxIndirectParam はダイアログ ボックスを破棄し、メッセージ ループを終了し、所有者ウィンドウを有効にし (以前に有効にした場合)、EndDialog を呼び出したときにダイアログ ボックス プロシージャで指定された nResult パラメーターを返します。

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

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

ダイアログ ボックス テンプレート内のすべての文字列 (ダイアログ ボックスのタイトルやボタンなど) は、Unicode 文字列である必要があります。

注意

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

要件

要件
サポートされている最小のクライアント 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 で導入)

関連項目

概念

CreateWindowEx

DLGITEMTEMPLATE

DLGITEMTEMPLATEEX

DLGTEMPLATE

DLGTEMPLATEEX

ダイアログ ボックス

ダイアログ

DialogBoxIndirect

DialogBoxParam

DialogProc

EndDialog

リファレンス

WM_INITDIALOG

WM_SETFONT