「メッセージボックス」の編集履歴(バックアップ)一覧はこちら
「メッセージボックス」(2005/12/15 (木) 02:44:35) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
<div style="DISPLAY: none"></div>
<table class="buttonbarshade" cellspacing="0">
<tbody>
<tr>
<td></td>
</tr>
</tbody>
</table>
<h1>MessageBox</h1>
<p>
メッセージボックスの作成、表示、操作を行います。メッセージボックスは、アプリケーション定義のタイトルとメッセージ、および任意の定義済みのアイコンとプッシュボタンの組み合わせによって構成されます。</p>
<p>
言語識別子を指定するには、MessageBoxEx関数を使います。</p>
<pre class="syntax">
<b>int MessageBox(<br></b><b>HWND</b><i> hWnd</i><b>, </b>// オーナーウィンドウのハンドル<br>
<b>LPCTSTR</b><i> lpText</i><b>, </b>// メッセージボックス内のテキスト<br>
<b>LPCTSTR</b><i> lpCaption</i><b>, </b>// メッセージボックスのタイトル<br>
<b>UINT</b><i> uType</i> // メッセージボックスのスタイル<br>
<b>);</b>
</pre>
<div class="reftip" id="reftip" style=
"VISIBILITY: hidden; OVERFLOW: visible; POSITION: absolute"></div>
<h4>パラメータ</h4>
<dl>
<dt><i>hWnd</i></dt>
<dd>
[入力]作成したいメッセージボックスのオーナーウィンドウのハンドルを指定します。NULLを指定すると、オーナーウィンドウを持たないメッセージボックスが作成されます。</dd>
<dt><i>lpText</i></dt>
<dd>
[入力]表示したいメッセージを保持する、NULLで終わる文字列へのポインタを指定します。</dd>
<dt><i>lpCaption</i></dt>
<dd>
[入力]ダイアログボックスのタイトルを保持する、NULLで終わる文字列へのポインタを指定します。NULLを指定すると、既定のタイトル(「エラー」)が表示されます。</dd>
<dt><i>uType</i></dt>
<dd>
[入力]メッセージボックスの内容と動作を指定します。次のフラググループの任意の組み合わせを指定します。
<p>
メッセージボックス内に表示したいボタンを指示するには、次の値のいずれかを指定します。</p>
<table cols="2" cellpadding="5" rules="rows" border="1" frame="below">
<tbody>
<tr valign="top">
<td width="39%"><b>値</b></td>
<td width="61%"><b>意味</b></td>
</tr>
<tr valign="top">
<td width="39%">MB_ABORTRETRYIGNORE</td>
<td width="61%">
メッセージボックスに[中止]、[再試行]、[無視]の各プッシュボタンを表示します。</td>
</tr>
<tr valign="top">
<td width="39%">MB_CANCELTRYCONTINUE</td>
<td width="61%">
<b>Windows2000:</b>メッセージボックスに[キャンセル]、[再実行]、[続行]の各プッシュボタンを表示します。MB_ABORTRETRYIGNOREの代わりに、このメッセージボックスタイプを使ってください。</td>
</tr>
<tr valign="top">
<td width="39%">MB_HELP</td>
<td width="61%"><b>Windows 95/98、Windows
NT4.0以降:</b>メッセージボックスに[ヘルプ]ボタンを追加します。ユーザーが[ヘルプ]ボタンをクリックするかF1キーを押すと、システムはオーナーへWM_HELPメッセージを送信します。</td>
</tr>
<tr valign="top">
<td width="39%">MB_OK</td>
<td width="61%">
メッセージボックスに[OK]プッシュボタンだけを表示します。これは既定のメッセージボックスタイプです。</td>
</tr>
<tr valign="top">
<td width="39%">MB_OKCANCEL</td>
<td width="61%">
メッセージボックスに[OK]、[キャンセル]の各プッシュボタンを表示します。</td>
</tr>
<tr valign="top">
<td width="39%">MB_RETRYCANCEL</td>
<td width="61%">
メッセージボックスに[再試行]、[キャンセル]の各プッシュボタンを表示します。</td>
</tr>
<tr valign="top">
<td width="39%">MB_YESNO</td>
<td width="61%">
メッセージボックスに[はい]、[いいえ]の各プッシュボタンを表示します。</td>
</tr>
<tr valign="top">
<td width="39%">MB_YESNOCANCEL</td>
<td width="61%">
メッセージボックスに[はい]、[いいえ]、[キャンセル]の各プッシュボタンを表示します。</td>
</tr>
</tbody>
</table>
<br>
<p>
メッセージボックス内にアイコンを表示するには、次の値のいずれかを指定します。</p>
<table cols="2" cellpadding="5" rules="rows" border="1" frame="below">
<tbody>
<tr valign="top">
<td width="38%"><b>値</b></td>
<td width="62%"><b>意味</b></td>
</tr>
<tr valign="top">
<td width="38%">MB_ICONEXCLAMATION,<br>
MB_ICONWARNING</td>
<td width="62%">感嘆符(!)アイコンを表示します。</td>
</tr>
<tr valign="top">
<td width="38%">MB_ICONINFORMATION, MB_ICONASTERISK</td>
<td width="62%">
丸の中に小文字の「i」が描かれたアイコンを表示します。</td>
</tr>
<tr valign="top">
<td width="38%">MB_ICONQUESTION</td>
<td width="62%">疑問符(?)アイコンを表示します。</td>
</tr>
<tr valign="top">
<td width="38%">MB_ICONSTOP,<br>
MB_ICONERROR,<br>
MB_ICONHAND</td>
<td width="62%">停止マークアイコンを表示します。</td>
</tr>
</tbody>
</table>
<br>
<p>
既定のプッシュボタンを表示するよう指示するには、次の値のいずれかを指定します。</p>
<table cols="2" cellpadding="5" rules="rows" border="1" frame="below">
<tbody>
<tr valign="top">
<td width="39%"><b>値</b></td>
<td width="61%"><b>意味</b></td>
</tr>
<tr valign="top">
<td width="39%">MB_DEFBUTTON1</td>
<td width="61%">
最初のボタンを既定のプッシュボタンにします。
<p>
MB_DEFBUTTON2、MB_DEFBUTTON3、MB_DEFBUTTON4のいずれかが指定されていない限り、MB_DEFBUTTON1が既定になります。</p>
</td>
</tr>
<tr valign="top">
<td width="39%">MB_DEFBUTTON2</td>
<td width="61%">
2番目のボタンを既定のプッシュボタンにします。</td>
</tr>
<tr valign="top">
<td width="39%">MB_DEFBUTTON3</td>
<td width="61%">
3番目のボタンを既定のプッシュボタンにします。</td>
</tr>
<tr valign="top">
<td width="39%">MB_DEFBUTTON4</td>
<td width="61%">
4番目のボタンを既定のプッシュボタンにします。</td>
</tr>
</tbody>
</table>
<br>
<p>
ダイアログボックスのモーダル状態を指示するには、次の値のいずれかを指定します。</p>
<table cols="2" cellpadding="5" rules="rows" border="1" frame="below">
<tbody>
<tr valign="top">
<td width="37%"><b>値</b></td>
<td width="63%"><b>意味</b></td>
</tr>
<tr valign="top">
<td width="37%">MB_APPLMODAL</td>
<td width="63%">
ユーザーは、メッセージボックスに応答しなければ、<i>hWnd</i>パラメータで指定されたウィンドウで作業を継続できません。他のスレッドのウィンドウへ移動して作業することはできます。
<p>
アプリケーション内のウィンドウの階層にもよりますが、ユーザーは、同じスレッド内の他のウィンドウへ移動できることがあります。このメッセージボックスの親ウィンドウに対するすべての子ウィンドウ(メッセージボックスの「兄弟」ウィンドウ)は、自動的に無効になりますが、ポップアップウィンドウはこの限りではありません。</p>
<p>MB_APPLMODAL は、MB_SYSTEMMODAL
とMB_TASKMODALのどちらも指定されていない場合の既定値です。</p>
</td>
</tr>
<tr valign="top">
<td width="37%">MB_SYSTEMMODAL</td>
<td width="63%">
メッセージボックスがWS_EX_TOPMOSTスタイルを備えている以外は、MB_APPLMODALと同じです。ユーザーがすぐに対処する必要がある重大なエラー(たとえばメモリの不足)を通知するために、システムモーダルのメッセージボックスを使います。ユーザーは、<i>hWnd</i>に関連付けられていないウィンドウを通常の方法で操作できます。</td>
</tr>
<tr valign="top">
<td width="37%">MB_TASKMODAL</td>
<td width="63%"><i>hWnd</i>
パラメータがNULLの場合、現在のスレッドに所属するすべてのトップレベルウィンドウが無効になること以外は、MB_APPLMODALと同じです。呼び出し側のアプリケーションまたはライブラリが有効なウィンドウハンドルを持っておらず、かつ他のスレッドを中断せずに現在のスレッドの他のウィンドウへの入力を禁止したいときにこのフラグを使います。</td>
</tr>
</tbody>
</table>
<br>
<p>
これら以外のオプションの指示をするには、次の値を指定します。</p>
<table cols="2" cellpadding="5" rules="rows" border="1" frame="below">
<tbody>
<tr valign="top">
<td width="35%"><b>値</b></td>
<td width="65%"><b>意味</b></td>
</tr>
<tr valign="top">
<td width="35%">MB_DEFAULT_DESKTOP_ONLY</td>
<td width="65%">
<b>WindowsNT/2000:</b>対話型のウィンドウステーションで、システムが既定のデスクトップにのみメッセージボックスを表示すること以外は、MB_SERVICE_NOTIFICATIONと同じです。詳細については、MSDNライブラリの「Window
StationsandDesktops」およびこの関数の「解説」を参照してください。
<p><b>Windows
NT4.0以前:</b>現在の入力デスクトップが既定のデスクトップではない場合、関数は失敗します。</p>
<p>
<b>Windows2000:</b>現在の入力デスクトップが既定のデスクトップではない場合、ユーザーが既定のデスクトップへ切り替えるまで、<b>MessageBox</b>は制御を返しません。</p>
<p><b>Windows 95/98:</b>このフラグは何もしません。</p>
</td>
</tr>
<tr valign="top">
<td width="35%">MB_RIGHT</td>
<td width="65%">テキストを右寄せします。</td>
</tr>
<tr valign="top">
<td width="35%">MB_RTLREADING</td>
<td width="65%">
メッセージとキャプションの各テキストを右から左へ表示します。ヘブライ語やアラビア語をサポートしているシステムで有効です。</td>
</tr>
<tr valign="top">
<td width="35%">MB_SETFOREGROUND</td>
<td width="65%">
メッセージボックスをフォアグラウンドウィンドウにします。システムは内部で、メッセージボックスに対してSetForegroundWindow関数を呼び出します。</td>
</tr>
<tr valign="top">
<td width="35%">MB_TOPMOST</td>
<td width="65%">
WS_EX_TOPMOSTウィンドウスタイルを指定し、メッセージボックスを最前面ウィンドウとして作成します。</td>
</tr>
<tr valign="top">
<td width="35%">MB_SERVICE_NOTIFICATION</td>
<td width="65%">
<b>WindowsNT/2000:</b>呼び出し側がユーザーへイベントを通知するサービスである場合に指定します。どのユーザーもコンピュータにログオンしていない場合も、この関数は現在のアクティブなデスクトップにメッセージボックスを表示します。
<p>
<b>TerminalServices:</b>呼び出し側のスレッドが偽装トークンを備えている場合、この関数はメッセージボックスを、偽装トークン内で指定されているセッションへリダイレクトします。</p>
<p>
このフラグをセットするときは、<i>hWnd</i>パラメータにNULLを指定しなければなりません。その結果、<i>hWnd</i>に対応するデスクトップではなく、他のデスクトップにメッセージボックスを表示できます。</p>
<p>Windows NT 3.51 と Windows
NT4.0の違いについては、この関数の「解説」を参照してください。</p>
</td>
</tr>
<tr valign="top">
<td width="35%">MB_SERVICE_NOTIFICATION_NT3X</td>
<td width="65%"><b>Windows NT/2000:</b>この値は、Windows NT
3.51でMB_SERVICE_NOTIFICATION として定義された値に対応します。
<p>Windows NT 3.51 と Windows
NT4.0の違いについては、この関数の「解説」を参照してください。</p>
</td>
</tr>
</tbody>
</table>
<br></dd>
</dl>
<h4>戻り値</h4>
<p>関数が成功すると、次の値のいずれかが返ります。</p>
<table cols="2" cellpadding="5" rules="rows" border="1" frame="below">
<tbody>
<tr valign="top">
<td width="22%"><b>値</b></td>
<td width="78%"><b>意味</b></td>
</tr>
<tr valign="top">
<td width="22%">IDABORT</td>
<td width="78%">[中止]ボタンが選択されました。</td>
</tr>
<tr valign="top">
<td width="22%">IDCANCEL</td>
<td width="78%">[キャンセル]ボタンが選択されました。</td>
</tr>
<tr valign="top">
<td width="22%">IDCONTINUE</td>
<td width="78%">[続行]ボタンが選択されました。</td>
</tr>
<tr valign="top">
<td width="22%">IDIGNORE</td>
<td width="78%">[無視]ボタンが選択されました。</td>
</tr>
<tr valign="top">
<td width="22%">IDNO</td>
<td width="78%">[いいえ]ボタンが選択されました。</td>
</tr>
<tr valign="top">
<td width="22%">IDOK</td>
<td width="78%">[OK]ボタンが選択されました。</td>
</tr>
<tr valign="top">
<td width="22%">IDRETRY</td>
<td width="78%">[再試行]ボタンが選択されました。</td>
</tr>
<tr valign="top">
<td width="22%">IDTRYAGAIN</td>
<td width="78%">[再実行]ボタンが選択されました。</td>
</tr>
<tr valign="top">
<td width="22%">IDYES</td>
<td width="78%">[はい]ボタンが選択されました。</td>
</tr>
</tbody>
</table>
<br>
<p>
メッセージボックスに[キャンセル]ボタンが用意されている状態で、ユーザーがEscキーを押すか[キャンセル]ボタンを選択すると、IDCANCEL値が返ります。メッセージボックスに[キャンセル]ボタンがない場合、Escキーを押しても何も起こりません。</p>
<p>
関数が失敗すると、0が返ります。拡張エラー情報を取得するには、GetLastError関数を使います。</p>
<h4>解説</h4>
<p>
システムのメモリ不足を知らせるためにシステムモーダルのメッセージボックスを作成する場合、<i>lpText</i>と<i>lpCaption</i>の各パラメータが指す文字列をリソースファイルから取得するべきではありません。このような状況でリソースをロードしようとしても、失敗する可能性があります。</p>
<p>
ダイアログボックスが表示されている場合にメッセージボックスを作成するときは、<i>hWnd</i>パラメータにダイアログボックスのハンドルを指定してください。<i>hWnd</i>パラメータで、ダイアログボックス内のコントロールなどの子ウィンドウを指定するべきではありません。</p>
<p>
「ウィンドウステーション」などは、本書の制作時点で日本語情報が提供されていません。簡単に言うと、「ウィンドウステーション」とは、デスクトップオブジェクトやクリップボードからなる、セキュリティで保護されたオブジェクトのことです。「対話型のウィンドウステーション」とは、このうち可視状態にあり、ユーザーがキーボードやマウスを使って操作できるものです。それ以外のウィンドウステーションは、不可視状態で、ユーザーが操作できないものですが、サービスなど、ユーザインターフェイスを必要としない目的で利用できます。</p>
<p>
「デスクトップ」とは、同じくセキュリティで保護されたオブジェクトであり、表示サーフェス、ウィンドウ、メニューなどで構成されています。1つのウィンドウステーションの中に複数のデスクトップを用意することもできます。各アプリケーションは、モーダルの使い分けやリモートコンピュータの操作など、必要に応じてデスクトップを切り替えることができます。「既定のデスクトップ」とは、ウィンドウステーションに最初から用意されているデスクトップを意味します。上記のように、必要に応じて、1つのウィンドウステーション内に複数のデスクトップを作成できますが、その場合、最初から存在していたデスクトップが既定のデスクトップになります。「現在の入力デスクトップ」とは、デスクトップのうち、ユーザーの入力を受け取るものを指します。「アクティブなデスクトップ」と呼ばれることもありますが、ActiveDesktopとは異なる概念です。</p>
<p><b>Windows
95:</b>システムは、最大16,364個のウィンドウハンドルをサポートできます。</p>
<p><b>Windows NT/2000:</b>MB_SERVICE_NOTIFICATION
という値は、WindowsNT4.0 以降で利用できます。Windows
NT4.0以降は、<b>MessageBox</b>の実装に当たって古い値を新しい値へマッピングすることにより、従来のサービスとの下位互換性を提供しています。このマッピングは、リンカが設定したバージョン番号が4.0未満である実行可能ファイルにのみ適用されます。</p>
<p>MB_SERVICE_NOTIFICATION
を使うサービスをビルドし、WindowsNT3.<i>x</i> と Windows
NT4.0以降の両方で動作させるには、次の手順のいずれかを実行します。</p>
<p>
•リンク時に、4.0未満のバージョン番号を指定します。</p>
<p>
•リンク時に、バージョン番号として4.0を指定します。実行時にGetVersionEx関数を使って、システムのバージョンをチェックします。次いで、WindowsNT3.<i>x</i>
環境で実行する場合はMB_SERVICE_NOTIFICATION_NT3Xを指定し、Windows
NT
4.0以降の環境で実行する場合はMB_SERVICE_NOTIFICATIONを指定します。</p>
<h4>対応情報</h4>
<p><b>Windows NT/2000:</b>Windows NT 3.1 以降<br>
<b>Windows 95/98:</b>Windows 95 以降<br>
<b>ヘッダーファイル:</b>Winuser.h内で宣言、Windows.hをインクルード<br>
<b>インポートライブラリ:</b>User32.lib を使用<br>
<b>Unicode:</b>すべてのプラットフォームで Unicode
版とANSI版を実装</p>
<h4>参照</h4>
<p>FlashWindow,
MessageBeep,MessageBoxEx,MessageBoxIndirect,SetForegroundWindow</p>
<div class="sapop" id="rpop" style="VISIBILITY: hidden">
<h4>対応情報</h4>
<p><b>Windows NT/2000:</b>Windows NT 3.1 以降<br>
<b>Windows 95/98:</b>Windows 95 以降<br>
<b>ヘッダーファイル:</b>Winuser.h内で宣言、Windows.hをインクルード<br>
<b>インポートライブラリ:</b>User32.lib を使用<br>
<b>Unicode:</b>すべてのプラットフォームで Unicode
版とANSI版を実装</p>
</div>
<div class="sapop" id="sapop" style="VISIBILITY: hidden">
<h4>参照</h4>
<p>FlashWindow,
MessageBeep,MessageBoxEx,MessageBoxIndirect,SetForegroundWindow</p>
</div>
<div style="DISPLAY: none"></div>
<table class="buttonbarshade" cellspacing="0">
<tbody>
<tr>
<td></td>
</tr>
</tbody>
</table>
<h1>MessageBox</h1>
<p>
メッセージボックスの作成、表示、操作を行います。メッセージボックスは、アプリケーション定義のタイトルとメッセージ、および任意の定義済みのアイコンとプッシュボタンの組み合わせによって構成されます。</p>
<p>
言語識別子を指定するには、MessageBoxEx関数を使います。</p>
<pre class="syntax">
<b>int MessageBox(<br></b><b>HWND</b><i> hWnd</i><b>, </b>// オーナーウィンドウのハンドル<br>
<b>LPCTSTR</b><i> lpText</i><b>, </b>// メッセージボックス内のテキスト<br>
<b>LPCTSTR</b><i> lpCaption</i><b>, </b>// メッセージボックスのタイトル<br>
<b>UINT</b><i> uType</i> // メッセージボックスのスタイル<br>
<b>);</b>
</pre>
<div class="reftip" id="reftip" style=
"VISIBILITY: hidden; OVERFLOW: visible; POSITION: absolute"></div>
<h4>パラメータ</h4>
<dl>
<dt><i>hWnd</i></dt>
<dd>
[入力]作成したいメッセージボックスのオーナーウィンドウのハンドルを指定します。NULLを指定すると、オーナーウィンドウを持たないメッセージボックスが作成されます。</dd>
<dt><i>lpText</i></dt>
<dd>
[入力]表示したいメッセージを保持する、NULLで終わる文字列へのポインタを指定します。</dd>
<dt><i>lpCaption</i></dt>
<dd>
[入力]ダイアログボックスのタイトルを保持する、NULLで終わる文字列へのポインタを指定します。NULLを指定すると、既定のタイトル(「エラー」)が表示されます。</dd>
<dt><i>uType</i></dt>
<dd>
[入力]メッセージボックスの内容と動作を指定します。次のフラググループの任意の組み合わせを指定します。
<p>
メッセージボックス内に表示したいボタンを指示するには、次の値のいずれかを指定します。</p>
<table cols="2" cellpadding="5" rules="rows" border="1" frame="below">
<tbody>
<tr valign="top">
<td width="39%"><b>値</b></td>
<td width="61%"><b>意味</b></td>
</tr>
<tr valign="top">
<td width="39%">MB_ABORTRETRYIGNORE</td>
<td width="61%">
メッセージボックスに[中止]、[再試行]、[無視]の各プッシュボタンを表示します。</td>
</tr>
<tr valign="top">
<td width="39%">MB_CANCELTRYCONTINUE</td>
<td width="61%">
<b>Windows2000:</b>メッセージボックスに[キャンセル]、[再実行]、[続行]の各プッシュボタンを表示します。MB_ABORTRETRYIGNOREの代わりに、このメッセージボックスタイプを使ってください。</td>
</tr>
<tr valign="top">
<td width="39%">MB_HELP</td>
<td width="61%"><b>Windows
95/98、WindowsNT4.0以降:</b>メッセージボックスに[ヘルプ]ボタンを追加します。ユーザーが[ヘルプ]ボタンをクリックするかF1キーを押すと、システムはオーナーへWM_HELPメッセージを送信します。</td>
</tr>
<tr valign="top">
<td width="39%">MB_OK</td>
<td width="61%">
メッセージボックスに[OK]プッシュボタンだけを表示します。これは既定のメッセージボックスタイプです。</td>
</tr>
<tr valign="top">
<td width="39%">MB_OKCANCEL</td>
<td width="61%">
メッセージボックスに[OK]、[キャンセル]の各プッシュボタンを表示します。</td>
</tr>
<tr valign="top">
<td width="39%">MB_RETRYCANCEL</td>
<td width="61%">
メッセージボックスに[再試行]、[キャンセル]の各プッシュボタンを表示します。</td>
</tr>
<tr valign="top">
<td width="39%">MB_YESNO</td>
<td width="61%">
メッセージボックスに[はい]、[いいえ]の各プッシュボタンを表示します。</td>
</tr>
<tr valign="top">
<td width="39%">MB_YESNOCANCEL</td>
<td width="61%">
メッセージボックスに[はい]、[いいえ]、[キャンセル]の各プッシュボタンを表示します。</td>
</tr>
</tbody>
</table>
<br>
<p>
メッセージボックス内にアイコンを表示するには、次の値のいずれかを指定します。</p>
<table cols="2" cellpadding="5" rules="rows" border="1" frame="below">
<tbody>
<tr valign="top">
<td width="38%"><b>値</b></td>
<td width="62%"><b>意味</b></td>
</tr>
<tr valign="top">
<td width="38%">MB_ICONEXCLAMATION,<br>
MB_ICONWARNING</td>
<td width="62%">感嘆符(!)アイコンを表示します。</td>
</tr>
<tr valign="top">
<td width="38%">MB_ICONINFORMATION, MB_ICONASTERISK</td>
<td width="62%">
丸の中に小文字の「i」が描かれたアイコンを表示します。</td>
</tr>
<tr valign="top">
<td width="38%">MB_ICONQUESTION</td>
<td width="62%">疑問符(?)アイコンを表示します。</td>
</tr>
<tr valign="top">
<td width="38%">MB_ICONSTOP,<br>
MB_ICONERROR,<br>
MB_ICONHAND</td>
<td width="62%">停止マークアイコンを表示します。</td>
</tr>
</tbody>
</table>
<br>
<p>
既定のプッシュボタンを表示するよう指示するには、次の値のいずれかを指定します。</p>
<table cols="2" cellpadding="5" rules="rows" border="1" frame="below">
<tbody>
<tr valign="top">
<td width="39%"><b>値</b></td>
<td width="61%"><b>意味</b></td>
</tr>
<tr valign="top">
<td width="39%">MB_DEFBUTTON1</td>
<td width="61%">
最初のボタンを既定のプッシュボタンにします。
<p>
MB_DEFBUTTON2、MB_DEFBUTTON3、MB_DEFBUTTON4のいずれかが指定されていない限り、MB_DEFBUTTON1が既定になります。</p>
</td>
</tr>
<tr valign="top">
<td width="39%">MB_DEFBUTTON2</td>
<td width="61%">
2番目のボタンを既定のプッシュボタンにします。</td>
</tr>
<tr valign="top">
<td width="39%">MB_DEFBUTTON3</td>
<td width="61%">
3番目のボタンを既定のプッシュボタンにします。</td>
</tr>
<tr valign="top">
<td width="39%">MB_DEFBUTTON4</td>
<td width="61%">
4番目のボタンを既定のプッシュボタンにします。</td>
</tr>
</tbody>
</table>
<br>
<p>
ダイアログボックスのモーダル状態を指示するには、次の値のいずれかを指定します。</p>
<table cols="2" cellpadding="5" rules="rows" border="1" frame="below">
<tbody>
<tr valign="top">
<td width="37%"><b>値</b></td>
<td width="63%"><b>意味</b></td>
</tr>
<tr valign="top">
<td width="37%">MB_APPLMODAL</td>
<td width="63%">
ユーザーは、メッセージボックスに応答しなければ、<i>hWnd</i>パラメータで指定されたウィンドウで作業を継続できません。他のスレッドのウィンドウへ移動して作業することはできます。
<p>
アプリケーション内のウィンドウの階層にもよりますが、ユーザーは、同じスレッド内の他のウィンドウへ移動できることがあります。このメッセージボックスの親ウィンドウに対するすべての子ウィンドウ(メッセージボックスの「兄弟」ウィンドウ)は、自動的に無効になりますが、ポップアップウィンドウはこの限りではありません。</p>
<p>MB_APPLMODAL
は、MB_SYSTEMMODALとMB_TASKMODALのどちらも指定されていない場合の既定値です。</p>
</td>
</tr>
<tr valign="top">
<td width="37%">MB_SYSTEMMODAL</td>
<td width="63%">
メッセージボックスがWS_EX_TOPMOSTスタイルを備えている以外は、MB_APPLMODALと同じです。ユーザーがすぐに対処する必要がある重大なエラー(たとえばメモリの不足)を通知するために、システムモーダルのメッセージボックスを使います。ユーザーは、<i>hWnd</i>に関連付けられていないウィンドウを通常の方法で操作できます。</td>
</tr>
<tr valign="top">
<td width="37%">MB_TASKMODAL</td>
<td width="63%">
<i>hWnd</i>パラメータがNULLの場合、現在のスレッドに所属するすべてのトップレベルウィンドウが無効になること以外は、MB_APPLMODALと同じです。呼び出し側のアプリケーションまたはライブラリが有効なウィンドウハンドルを持っておらず、かつ他のスレッドを中断せずに現在のスレッドの他のウィンドウへの入力を禁止したいときにこのフラグを使います。</td>
</tr>
</tbody>
</table>
<br>
<p>
これら以外のオプションの指示をするには、次の値を指定します。</p>
<table cols="2" cellpadding="5" rules="rows" border="1" frame="below">
<tbody>
<tr valign="top">
<td width="35%"><b>値</b></td>
<td width="65%"><b>意味</b></td>
</tr>
<tr valign="top">
<td width="35%">MB_DEFAULT_DESKTOP_ONLY</td>
<td width="65%">
<b>WindowsNT/2000:</b>対話型のウィンドウステーションで、システムが既定のデスクトップにのみメッセージボックスを表示すること以外は、MB_SERVICE_NOTIFICATIONと同じです。詳細については、MSDNライブラリの「WindowStationsandDesktops」およびこの関数の「解説」を参照してください。
<p>
<b>WindowsNT4.0以前:</b>現在の入力デスクトップが既定のデスクトップではない場合、関数は失敗します。</p>
<p>
<b>Windows2000:</b>現在の入力デスクトップが既定のデスクトップではない場合、ユーザーが既定のデスクトップへ切り替えるまで、<b>MessageBox</b>は制御を返しません。</p>
<p><b>Windows 95/98:</b>このフラグは何もしません。</p>
</td>
</tr>
<tr valign="top">
<td width="35%">MB_RIGHT</td>
<td width="65%">テキストを右寄せします。</td>
</tr>
<tr valign="top">
<td width="35%">MB_RTLREADING</td>
<td width="65%">
メッセージとキャプションの各テキストを右から左へ表示します。ヘブライ語やアラビア語をサポートしているシステムで有効です。</td>
</tr>
<tr valign="top">
<td width="35%">MB_SETFOREGROUND</td>
<td width="65%">
メッセージボックスをフォアグラウンドウィンドウにします。システムは内部で、メッセージボックスに対してSetForegroundWindow関数を呼び出します。</td>
</tr>
<tr valign="top">
<td width="35%">MB_TOPMOST</td>
<td width="65%">
WS_EX_TOPMOSTウィンドウスタイルを指定し、メッセージボックスを最前面ウィンドウとして作成します。</td>
</tr>
<tr valign="top">
<td width="35%">MB_SERVICE_NOTIFICATION</td>
<td width="65%">
<b>WindowsNT/2000:</b>呼び出し側がユーザーへイベントを通知するサービスである場合に指定します。どのユーザーもコンピュータにログオンしていない場合も、この関数は現在のアクティブなデスクトップにメッセージボックスを表示します。
<p>
<b>TerminalServices:</b>呼び出し側のスレッドが偽装トークンを備えている場合、この関数はメッセージボックスを、偽装トークン内で指定されているセッションへリダイレクトします。</p>
<p>
このフラグをセットするときは、<i>hWnd</i>パラメータにNULLを指定しなければなりません。その結果、<i>hWnd</i>に対応するデスクトップではなく、他のデスクトップにメッセージボックスを表示できます。</p>
<p>Windows NT 3.51 と
WindowsNT4.0の違いについては、この関数の「解説」を参照してください。</p>
</td>
</tr>
<tr valign="top">
<td width="35%">MB_SERVICE_NOTIFICATION_NT3X</td>
<td width="65%"><b>Windows NT/2000:</b>この値は、Windows
NT3.51でMB_SERVICE_NOTIFICATION
として定義された値に対応します。
<p>Windows NT 3.51 と
WindowsNT4.0の違いについては、この関数の「解説」を参照してください。</p>
</td>
</tr>
</tbody>
</table>
<br></dd>
</dl>
<h4>戻り値</h4>
<p>関数が成功すると、次の値のいずれかが返ります。</p>
<table cols="2" cellpadding="5" rules="rows" border="1" frame="below">
<tbody>
<tr valign="top">
<td width="22%"><b>値</b></td>
<td width="78%"><b>意味</b></td>
</tr>
<tr valign="top">
<td width="22%">IDABORT</td>
<td width="78%">[中止]ボタンが選択されました。</td>
</tr>
<tr valign="top">
<td width="22%">IDCANCEL</td>
<td width="78%">[キャンセル]ボタンが選択されました。</td>
</tr>
<tr valign="top">
<td width="22%">IDCONTINUE</td>
<td width="78%">[続行]ボタンが選択されました。</td>
</tr>
<tr valign="top">
<td width="22%">IDIGNORE</td>
<td width="78%">[無視]ボタンが選択されました。</td>
</tr>
<tr valign="top">
<td width="22%">IDNO</td>
<td width="78%">[いいえ]ボタンが選択されました。</td>
</tr>
<tr valign="top">
<td width="22%">IDOK</td>
<td width="78%">[OK]ボタンが選択されました。</td>
</tr>
<tr valign="top">
<td width="22%">IDRETRY</td>
<td width="78%">[再試行]ボタンが選択されました。</td>
</tr>
<tr valign="top">
<td width="22%">IDTRYAGAIN</td>
<td width="78%">[再実行]ボタンが選択されました。</td>
</tr>
<tr valign="top">
<td width="22%">IDYES</td>
<td width="78%">[はい]ボタンが選択されました。</td>
</tr>
</tbody>
</table>
<br>
<p>
メッセージボックスに[キャンセル]ボタンが用意されている状態で、ユーザーがEscキーを押すか[キャンセル]ボタンを選択すると、IDCANCEL値が返ります。メッセージボックスに[キャンセル]ボタンがない場合、Escキーを押しても何も起こりません。</p>
<p>
関数が失敗すると、0が返ります。拡張エラー情報を取得するには、GetLastError関数を使います。</p>
<h4>解説</h4>
<p>
システムのメモリ不足を知らせるためにシステムモーダルのメッセージボックスを作成する場合、<i>lpText</i>と<i>lpCaption</i>の各パラメータが指す文字列をリソースファイルから取得するべきではありません。このような状況でリソースをロードしようとしても、失敗する可能性があります。</p>
<p>
ダイアログボックスが表示されている場合にメッセージボックスを作成するときは、<i>hWnd</i>パラメータにダイアログボックスのハンドルを指定してください。<i>hWnd</i>パラメータで、ダイアログボックス内のコントロールなどの子ウィンドウを指定するべきではありません。</p>
<p>
「ウィンドウステーション」などは、本書の制作時点で日本語情報が提供されていません。簡単に言うと、「ウィンドウステーション」とは、デスクトップオブジェクトやクリップボードからなる、セキュリティで保護されたオブジェクトのことです。「対話型のウィンドウステーション」とは、このうち可視状態にあり、ユーザーがキーボードやマウスを使って操作できるものです。それ以外のウィンドウステーションは、不可視状態で、ユーザーが操作できないものですが、サービスなど、ユーザインターフェイスを必要としない目的で利用できます。</p>
<p>
「デスクトップ」とは、同じくセキュリティで保護されたオブジェクトであり、表示サーフェス、ウィンドウ、メニューなどで構成されています。1つのウィンドウステーションの中に複数のデスクトップを用意することもできます。各アプリケーションは、モーダルの使い分けやリモートコンピュータの操作など、必要に応じてデスクトップを切り替えることができます。「既定のデスクトップ」とは、ウィンドウステーションに最初から用意されているデスクトップを意味します。上記のように、必要に応じて、1つのウィンドウステーション内に複数のデスクトップを作成できますが、その場合、最初から存在していたデスクトップが既定のデスクトップになります。「現在の入力デスクトップ」とは、デスクトップのうち、ユーザーの入力を受け取るものを指します。「アクティブなデスクトップ」と呼ばれることもありますが、ActiveDesktopとは異なる概念です。</p>
<p>
<b>Windows95:</b>システムは、最大16,364個のウィンドウハンドルをサポートできます。</p>
<p><b>Windows
NT/2000:</b>MB_SERVICE_NOTIFICATIONという値は、WindowsNT4.0
以降で利用できます。WindowsNT4.0以降は、<b>MessageBox</b>の実装に当たって古い値を新しい値へマッピングすることにより、従来のサービスとの下位互換性を提供しています。このマッピングは、リンカが設定したバージョン番号が4.0未満である実行可能ファイルにのみ適用されます。</p>
<p>
MB_SERVICE_NOTIFICATIONを使うサービスをビルドし、WindowsNT3.<i>x</i>
と
WindowsNT4.0以降の両方で動作させるには、次の手順のいずれかを実行します。</p>
<p>
•リンク時に、4.0未満のバージョン番号を指定します。</p>
<p>
•リンク時に、バージョン番号として4.0を指定します。実行時にGetVersionEx関数を使って、システムのバージョンをチェックします。次いで、WindowsNT3.<i>x</i>環境で実行する場合はMB_SERVICE_NOTIFICATION_NT3Xを指定し、WindowsNT4.0以降の環境で実行する場合はMB_SERVICE_NOTIFICATIONを指定します。</p>
<h4>対応情報</h4>
<p><b>Windows NT/2000:</b>Windows NT 3.1 以降<br>
<b>Windows 95/98:</b>Windows 95 以降<br>
<b>ヘッダーファイル:</b>Winuser.h内で宣言、Windows.hをインクルード<br>
<b>インポートライブラリ:</b>User32.lib を使用<br>
<b>Unicode:</b>すべてのプラットフォームで
Unicode版とANSI版を実装</p>
<h4>参照</h4>
<p>
FlashWindow,MessageBeep,MessageBoxEx,MessageBoxIndirect,SetForegroundWindow</p>
<div class="sapop" id="rpop" style="VISIBILITY: hidden">
<h4>対応情報</h4>
<p><b>Windows NT/2000:</b>Windows NT 3.1 以降<br>
<b>Windows 95/98:</b>Windows 95 以降<br>
<b>ヘッダーファイル:</b>Winuser.h内で宣言、Windows.hをインクルード<br>
<b>インポートライブラリ:</b>User32.lib を使用<br>
<b>Unicode:</b>すべてのプラットフォームで
Unicode版とANSI版を実装</p>
</div>
<div class="sapop" id="sapop" style="VISIBILITY: hidden">
<h4>参照</h4>
<p>
FlashWindow,MessageBeep,MessageBoxEx,MessageBoxIndirect,SetForegroundWindow</p>
</div>
表示オプション
横に並べて表示:
変化行の前後のみ表示: