MessageBoxA 関数 (winuser.h)
システム アイコン、一連のボタン、および状態やエラー情報などのアプリケーション固有の簡単なメッセージを含むモーダル ダイアログ ボックスを表示します。 メッセージ ボックスは、ユーザーがクリックしたボタンを示す整数値を返します。
構文
int MessageBoxA(
[in, optional] HWND hWnd,
[in, optional] LPCSTR lpText,
[in, optional] LPCSTR lpCaption,
[in] UINT uType
);
パラメーター
[in, optional] hWnd
型: HWND
作成するメッセージ ボックスの所有者ウィンドウへのハンドル。 このパラメーターが NULL の場合、メッセージ ボックスには所有者ウィンドウがありません。
[in, optional] lpText
種類: LPCTSTR
表示するメッセージ。 文字列が複数の行で構成されている場合は、改行文字または改行文字を使用して各行を区切ることができます。
[in, optional] lpCaption
種類: LPCTSTR
ダイアログ ボックスのタイトル。 このパラメーターが NULL の場合、既定のタイトルは Error です。
[in] uType
型: UINT
ダイアログ ボックスの内容と動作。 このパラメーターには、次のフラグ グループのフラグの組み合わせを指定できます。
メッセージ ボックスに表示されるボタンを示すには、次のいずれかの値を指定します。
値 | 説明 |
---|---|
|
メッセージ ボックスには、 Abort、 Retry、 Ignore の 3 つのプッシュ ボタンが含まれています。 |
|
メッセージ ボックスには、 Cancel、 Try Again、 Continue の 3 つのプッシュ ボタンが含まれています。 MB_ABORTRETRYIGNOREの代わりに、このメッセージ ボックスの種類を使用します。 |
|
メッセージ ボックスに [ヘルプ ] ボタンを追加します。 ユーザーが [ヘルプ ] ボタンをクリックするか F1 キーを押すと、システムは 所有者にWM_HELP メッセージを送信します。 |
|
メッセージ ボックスには、[ OK] という 1 つのプッシュ ボタンが含まれています。 既定値です。 |
|
メッセージ ボックスには、[ OK] と [キャンセル] の 2 つのプッシュ ボタンが含まれています。 |
|
メッセージ ボックスには、 再試行 と キャンセルの 2 つのプッシュ ボタンが含まれています。 |
|
メッセージ ボックスには、[ はい ] と [いいえ] の 2 つのプッシュ ボタンが含まれています。 |
|
メッセージ ボックスには、[ はい]、[ いいえ]、[ キャンセル] の 3 つのプッシュ ボタンが含まれています。 |
メッセージ ボックスにアイコンを表示するには、次のいずれかの値を指定します。
既定のボタンを示すには、次のいずれかの値を指定します。
ダイアログ ボックスのモダリティを示すには、次のいずれかの値を指定します。
その他のオプションを指定するには、次の値の 1 つ以上を使用します。
値 | 説明 |
---|---|
|
対話型ウィンドウ ステーションのデスクトップと同じです。 詳細については、「 ウィンドウ ステーション」を参照してください。
現在の入力デスクトップが既定のデスクトップでない場合、ユーザーが既定のデスクトップに切り替わるまで MessageBox は戻りません。 |
|
テキストは右揃えです。 |
|
ヘブライ語とアラビア語のシステムで右から左への読み取り順序を使用して、メッセージとキャプションテキストを表示します。 |
|
メッセージ ボックスがフォアグラウンド ウィンドウになります。 内部的には、システムはメッセージ ボックスに対して SetForegroundWindow 関数を呼び出します。 |
|
メッセージ ボックスは、 WS_EX_TOPMOST ウィンドウ スタイルで作成されます。 |
|
呼び出し元は、ユーザーにイベントを通知するサービスです。 この関数は、コンピューターにログオンしているユーザーがいない場合でも、現在アクティブなデスクトップにメッセージ ボックスを表示します。
ターミナル サービス: 呼び出し元のスレッドに偽装トークンがある場合、関数はメッセージ ボックスを偽装トークンで指定されたセッションに転送します。 このフラグが設定されている場合、 hWnd パラメーターは NULL である必要があります。 これは、 hWnd に対応するデスクトップ以外のデスクトップにメッセージ ボックスを表示できるようにするためです。 このフラグの使用に関するセキュリティに関する考慮事項については、「 Interactive Services」を参照してください。 特に、このフラグはロックされたデスクトップで対話型コンテンツを生成できるため、リソースの枯渇など、非常に限られたシナリオのセットにのみ使用する必要があることに注意してください。 |
戻り値
型: int
メッセージ ボックスに [キャンセル] ボタンがある場合、ESC キーを押すか、[キャンセル] ボタンが選択されている場合、関数は IDCANCEL 値を返します。 メッセージ ボックスに [キャンセル ] ボタンがない場合、esc キーを押しても効果はありません。MB_OK ボタンがない限り、 MB_OK ボタンが表示され、ユーザーが ESC キーを押すと、戻り値は IDOK になります。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
関数が成功した場合、戻り値は次のいずれかのメニュー項目値になります。
リターン コード/値 | Description |
---|---|
|
[ 中止] ボタンが選択されました。 |
|
[キャンセル] ボタンが選択されました。 |
|
[ 続行 ] ボタンが選択されました。 |
|
[無視] ボタンが選択されました。 |
|
[ いいえ ] ボタンが選択されました。 |
|
[OK] ボタンが選択されました。 |
|
[ 再試行 ] ボタンが選択されました。 |
|
[ 再試行] ボタンが選択されました。 |
|
[ はい ] ボタンが選択されました。 |
解説
次のシステム アイコンは、 uType パラメーターを対応するフラグ値に設定することで、メッセージ ボックスで使用できます。
アイコン | フラグの値 |
---|---|
MB_ICONHAND、 MB_ICONSTOP、または MB_ICONERROR | |
MB_ICONQUESTION | |
MB_ICONEXCLAMATION または MB_ICONWARNING | |
MB_ICONASTERISK または MB_ICONINFORMATION |
Unicode 書式設定文字 U+200F で表される 2 つの右から左のマーク (RLM) を MessageBox 表示文字列の先頭に追加すると、MessageBox の読み取り順序が右から左 (RTL) としてレンダリングされるように MessageBox レンダリング エンジンによって解釈されます。
システム モーダル メッセージ ボックスを使用してシステムのメモリが不足していることを示す場合、リソースの読み込みが失敗する可能性があるため、 lpText パラメーターと lpCaption パラメーターが指す文字列をリソース ファイルから取得しないでください。
ダイアログ ボックスが存在する間にメッセージ ボックスを作成する場合は、ダイアログ ボックスのハンドルを hWnd パラメーターとして使用します。 hWnd パラメーターは、ダイアログ ボックス内のコントロールなどの子ウィンドウを識別しないでください。
例
次の例では、エラー条件が発生した後にユーザーにアクションを求めるメッセージ ボックスがアプリケーションに表示されます。 メッセージ ボックスには、エラー条件とその解決方法を説明するメッセージが表示されます。 MB_CANCELTRYCONTINUEスタイルは、ユーザーが続行する方法を選択できる 3 つのボタンを提供するように MessageBox に指示します。 MB_DEFBUTTON2 スタイルでは、メッセージ ボックスの 2 番目のボタン (この場合は [再試行] ボタン) に既定のフォーカスが設定されます。
int DisplayResourceNAMessageBox()
{
int msgboxID = MessageBox(
NULL,
(LPCWSTR)L"Resource not available\nDo you want to try again?",
(LPCWSTR)L"Account Details",
MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2
);
switch (msgboxID)
{
case IDCANCEL:
// TODO: add code
break;
case IDTRYAGAIN:
// TODO: add code
break;
case IDCONTINUE:
// TODO: add code
break;
}
return msgboxID;
}
次の図は、前のコード例からの出力を示しています。
別のメッセージ ボックスの例については、「 メッセージ ボックスの表示」を参照してください。
注意
winuser.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして MessageBox を定義します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
サポートされている最小のクライアント | 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 で導入) |
関連項目
概念
その他のリソース
リファレンス