次の方法で共有


MessageBoxW 関数 (winuser.h)

システム アイコン、一連のボタン、および状態やエラー情報などのアプリケーション固有の簡単なメッセージを含むモーダル ダイアログ ボックスを表示します。 メッセージ ボックスは、ユーザーがクリックしたボタンを示す整数値を返します。

構文

int MessageBoxW(
  [in, optional] HWND    hWnd,
  [in, optional] LPCWSTR lpText,
  [in, optional] LPCWSTR lpCaption,
  [in]           UINT    uType
);

パラメーター

[in, optional] hWnd

型: HWND

作成するメッセージ ボックスの所有者ウィンドウへのハンドル。 このパラメーターが NULL場合、メッセージ ボックスには所有者ウィンドウがありません。

[in, optional] lpText

型: LPCTSTR

表示するメッセージ。 文字列が複数の行で構成されている場合は、改行文字または改行文字を使用して各行を区切ることができます。

[in, optional] lpCaption

型: LPCTSTR

ダイアログ ボックスのタイトル。 このパラメーターが NULL場合、既定のタイトルは Errorです。

[in] uType

型: UINT

ダイアログ ボックスの内容と動作。 このパラメーターには、次のフラグ グループのフラグの組み合わせを指定できます。

メッセージ ボックスに表示されるボタンを示すには、次のいずれかの値を指定します。

価値 意味
MB_ABORTRETRYIGNORE
0x00000002L
メッセージ ボックスには、AbortRetryIgnoreの 3 つのプッシュ ボタンがあります。
MB_CANCELTRYCONTINUE
0x00000006L
メッセージ ボックスには、CancelTry AgainContinueの 3 つのプッシュ ボタンがあります。 MB_ABORTRETRYIGNOREの代わりに、このメッセージ ボックスの種類を使用します。
MB_HELP
0x00004000L
ヘルプ ボタンをメッセージ ボックスに追加します。 ユーザーが [ヘルプ] ボタンをクリックするか、F1 キーを押すと、WM_HELP メッセージが所有者に送信されます。
MB_OK
0x00000000L
メッセージ ボックスには、1 つのプッシュ ボタンが含まれています。 OK。 これが既定値です。
MB_OKCANCEL
0x00000001L
メッセージ ボックスには、OK と [キャンセル]の 2 つのプッシュ ボタンが含まれています。
MB_RETRYCANCEL
0x00000005L
メッセージ ボックスには、再試行 と [キャンセル]の 2 つのプッシュ ボタンが含まれています。
MB_YESNO
0x00000004L
メッセージ ボックスには、[はい] と [なし] の 2 つのプッシュ ボタンが含まれています。
MB_YESNOCANCEL
0x00000003L
メッセージ ボックスには、3 つのプッシュ ボタンが含まれています:はいなし、キャンセル
 

メッセージ ボックスにアイコンを表示するには、次のいずれかの値を指定します。

価値 意味
MB_ICONEXCLAMATION
0x00000030L
感嘆符アイコンがメッセージ ボックスに表示されます。
MB_ICONWARNING
0x00000030L
感嘆符アイコンがメッセージ ボックスに表示されます。
MB_ICONINFORMATION
0x00000040L
メッセージ ボックスには、 小文字で構成されるアイコンが表示されます。
MB_ICONASTERISK
0x00000040L
メッセージ ボックスには、 小文字で構成されるアイコンが表示されます。
MB_ICONQUESTION
0x00000020L
メッセージ ボックスに疑問符アイコンが表示されます。 疑問符メッセージ アイコンは、特定の種類のメッセージを明確に表していないため、また、質問としてのメッセージの言い回しが任意のメッセージの種類に適用される可能性があるため、推奨されなくなりました。 さらに、ユーザーはメッセージ 記号の疑問符とヘルプ情報を混同できます。 そのため、メッセージ ボックスでこの疑問符メッセージ記号を使用しないでください。 システムは、下位互換性のためにのみ、その包含をサポートし続けます。
MB_ICONSTOP
0x00000010L
メッセージ ボックスに停止記号アイコンが表示されます。
MB_ICONERROR
0x00000010L
メッセージ ボックスに停止記号アイコンが表示されます。
MB_ICONHAND
0x00000010L
メッセージ ボックスに停止記号アイコンが表示されます。
 

既定のボタンを指定するには、次のいずれかの値を指定します。

価値 意味
MB_DEFBUTTON1
0x00000000L
最初のボタンが既定のボタンです。

MB_DEFBUTTON2MB_DEFBUTTON3、または MB_DEFBUTTON4 を指定しない限り、MB_DEFBUTTON1 が既定値です。

MB_DEFBUTTON2
0x00000100L
2 番目のボタンが既定のボタンです。
MB_DEFBUTTON3
0x00000200L
3 番目のボタンが既定のボタンです。
MB_DEFBUTTON4
0x00000300L
4 番目のボタンが既定のボタンです。
 

ダイアログ ボックスのモダリティを示すには、次のいずれかの値を指定します。

価値 意味
MB_APPLMODAL
0x00000000L
ユーザーは、hWnd パラメーターによって識別されるウィンドウで作業を続行する前に、メッセージ ボックスに応答する必要があります。 ただし、ユーザーは他のスレッドのウィンドウに移動して、それらのウィンドウで作業できます。

アプリケーション内のウィンドウの階層によっては、ユーザーがスレッド内の他のウィンドウに移動できる場合があります。 メッセージ ボックスの親のすべての子ウィンドウは自動的に無効になりますが、ポップアップ ウィンドウは無効です。

MB_SYSTEMMODALMB_TASKMODAL も指定されていない場合、MB_APPLMODAL が既定値です。

MB_SYSTEMMODAL
0x00001000L
MB_APPLMODALと同じですが、メッセージ ボックスに WS_EX_TOPMOST スタイルが設定されている点が異なります。 システム モーダル メッセージ ボックスを使用して、直ちに注意が必要な重大で破損する可能性のあるエラー (メモリ不足など) をユーザーに通知します。 このフラグは、hWndに関連付けられているウィンドウ以外のウィンドウを操作するユーザーの機能には影響しません。
MB_TASKMODAL
0x00002000L
MB_APPLMODAL と同じですが、hWnd パラメーターが NULL場合、現在のスレッドに属するすべての最上位ウィンドウが無効になります。 呼び出し元のアプリケーションまたはライブラリに使用可能なウィンドウ ハンドルがないが、他のスレッドを中断せずに呼び出し元スレッド内の他のウィンドウへの入力を防ぐ必要がある場合は、このフラグを使用します。
 

その他のオプションを指定するには、次の 1 つ以上の値を使用します。

価値 意味
MB_DEFAULT_DESKTOP_ONLY
0x00020000L
対話型ウィンドウ ステーションのデスクトップと同じです。 詳細については、「ウィンドウ ステーションのを する」を参照してください。

現在の入力デスクトップが既定のデスクトップでない場合、MessageBox は、ユーザーが既定のデスクトップに切り替わるまで戻りません。

MB_RIGHT
0x00080000L
テキストは右揃えです。
MB_RTLREADING
0x00100000L
ヘブライ語とアラビア語のシステムで右から左への読み取り順序を使用して、メッセージとキャプションのテキストを表示します。
MB_SETFOREGROUND
0x00010000L
メッセージ ボックスがフォアグラウンド ウィンドウになります。 内部的には、システムはメッセージ ボックスの SetForegroundWindow 関数を呼び出します。
MB_TOPMOST
0x00040000L
メッセージ ボックスは、WS_EX_TOPMOST ウィンドウ スタイルで作成されます。
MB_SERVICE_NOTIFICATION
0x00200000L
呼び出し元は、イベントをユーザーに通知するサービスです。 この関数は、コンピューターにログオンしているユーザーがいない場合でも、現在アクティブなデスクトップにメッセージ ボックスを表示します。

ターミナル サービス: 呼び出し元のスレッドに偽装トークンがある場合、関数は、偽装トークンで指定されたセッションにメッセージ ボックスを転送します。

このフラグが設定されている場合、hWnd パラメーターは NULLする必要があります。 これは、メッセージ ボックスが、hWndに対応するデスクトップ以外のデスクトップに表示されるようにするためです。

このフラグの使用に関するセキュリティに関する考慮事項については、「対話型サービスの参照してください。 特に、このフラグはロックされたデスクトップで対話型コンテンツを生成できるため、リソースの枯渇など、非常に限られたシナリオにのみ使用する必要があることに注意してください。

戻り値

型: int

メッセージ ボックスに [キャンセル] ボタンがある場合は、esc キーを押すか、[キャンセル] ボタンが選択されている場合、IDCANCEL 値を返します。 メッセージ ボックスに [キャンセル] ボタンが されていない場合は、esc キーを押しても効果はありません。MB_OK ボタンが存在しない限りです。 MB_OK ボタンが表示され、ユーザーが Esc キーを押すと、戻り値は IDOKされます。

関数が失敗した場合、戻り値は 0 です。 拡張エラー情報を取得するには、GetLastError呼び出します。

関数が成功した場合、戻り値は次のいずれかのメニュー項目値になります。

戻りコード/値 形容
IDABORT の
3
[中止] ボタンが選択されました。
IDCANCEL
2
[キャンセル] ボタンが選択されました。
IDCONTINUE
11
[続行] ボタンが選択されました。
IDIGNORE
5
[ 無視] ボタンが選択されました。
IDNO
7
[ なし] ボタンが選択されました。
IDOK を する
1
[OK] ボタンが選択されました。
IDRETRY の
4
[再試行] ボタンが選択されました。
IDTRYAGAIN
10
再試行 ボタンが選択されました。
IDYES を する
6
[はい] ボタンが選択されました。

備考

次のシステム アイコンは、uType パラメーターを対応するフラグ値に設定することで、メッセージ ボックスで使用できます。

アイコン フラグ値
MB_ICONHAND、MB_ICONSTOP、およびMB_ICONERRORの アイコン MB_ICONHANDMB_ICONSTOP、または MB_ICONERROR
MB_ICONQUESTIONの アイコン MB_ICONQUESTION
MB_ICONEXCLAMATIONとMB_ICONWARNINGの アイコン MB_ICONEXCLAMATION または MB_ICONWARNING
MB_ICONASTERISKとMB_ICONINFORMATIONの アイコン MB_ICONASTERISK または MB_ICONINFORMATION
 

Unicode 書式設定文字 U+200F で表される 2 つの右から左のマーク (RLM) を追加すると、MessageBox 表示文字列の先頭に MessageBox の表示文字列が解釈され、MessageBox の読み取り順序が右から左 (RTL) としてレンダリングされます。

システム モーダル メッセージ ボックスを使用して、システムがメモリ不足であることを示す場合、リソースの読み込み試行が失敗する可能性があるため、lpText および lpCaption パラメーターが指す文字列をリソース ファイルから取得しないでください。

ダイアログ ボックスが存在する間にメッセージ ボックスを作成する場合は、hWnd パラメーターとしてダイアログ ボックスへのハンドルを使用します。 hWnd パラメーターは、ダイアログ ボックス内のコントロールなどの子ウィンドウを識別しないでください。

次の例では、エラー条件が発生した後にユーザーにアクションを求めるメッセージ ボックスがアプリケーションに表示されます。 メッセージ ボックスには、エラー条件とその解決方法を説明するメッセージが表示されます。 MB_CANCELTRYCONTINUE スタイルは、MessageBox を指示して、ユーザーが続行方法を選択できる 3 つのボタンを提供します。 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 [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー winuser.h (Windows.h を含む)
ライブラリ User32.lib
DLL User32.dll
API セットの ext-ms-win-ntuser-dialogbox-l1-1-0 (Windows 8 で導入)

関連項目

概念

ダイアログ ボックス

FlashWindow

MessageBeep

MessageBoxEx

MessageBoxIndirect

その他のリソース を する

リファレンス

SetForegroundWindow の