System.messageBox (メッセージボックスを表示)

  1. 文法
  2. 詳細
  3. 引数
  4. 戻り値

1. 文法

メンバ型
関数
メンバ所有者
global.System (static)
呼び出し
global.System.messageBox( hwnd, text, caption, type )

2. 詳細

メッセージボックスを表示します。

3. 引数

hwnd ( Integer ) [default: -1]
メッセージボックスのオーナとなるウィンドウのウィンドウハンドルを指定します。 Window.HWNDを指定すると、そのウィンドウがオーナとなります。 0を指定すると、オーナウィンドウを持たないメッセージボックスになります。 省略するか、負の値を指定すると、吉里吉里自身のアプリケーションウィンドウハンドルが指定されたものと見なされます。
text ( String )
表示するメッセージを指定します。
caption ( String ) [default: ""]
ウィンドウのキャプションとなる文字列を指定します。
type ( Integer ) [default: tpmbOK]
メッセージボックスの内容と動作を指定します。 次のフラググループの任意の組み合わせ(ビット論理和)を指定します。
メッセージボックス内に表示させるボタン
OK はい いいえ キャンセル 中止 再試行 再実行 続行 無視
tpmbOK × × × × × × × ×
tpmbOKCancel × × × × × × ×
tpmbYesNo × × × × × × ×
tpmbYesNoCancel × × × × × ×
tpmbRetryCancel × × × × × × ×
tpmbCancelTryContinue × × × × × ×
tpmbAbortRetryIgnore × × × × × ×
メッセージボックス内に表示させるアイコン
アイコン
tpmbIconExclamation, tpmbIconWarning 感嘆符
tpmbIconInformation, tpmbIconAsterisk 吹き出しに "i"
tpmbIconQuestion 疑問符
tpmbIconStop, tpmbIconError, tpmbIconHand 停止マーク
既定のプッシュボタン
既定のプッシュボタン
tpmbDefButton1 最初のボタン(MB_DEFBUTTON2、MB_DEFBUTTON3、MB_DEFBUTTON4 のいずれも指定されていない場合の規定値)
tpmbDefButton2 2番目のボタン
tpmbDefButton3 3番目のボタン
tpmbDefButton4 4番目のボタン
モーダル状態
モーダル状態
tpmbApplModal モーダルで表示されます。表示中は他のウィンドウは操作できません。
tpmbSystemModal tpmbApplModalと同じですが、ウィンドウが非アクティブな状態でも、ほかのウィンドウの前面に表示されます。
tpmbTaskModal 基本的にtpmbApplModalと同じです。 hwndが 0 の場合、現在のスレッドに所属するすべてのトップレベルウィンドウが無効になります。 呼び出し側のアプリケーションまたはライブラリが有効なウィンドウハンドルを持っておらず、かつ他のスレッドを中断せずに現在のスレッドの他のウィンドウへの入力を禁止したいときに、このフラグを使用してください。
オプション
意味
tpmbDefaultDesktopOnly Windows NT/2000では、対話型のウィンドウステーションで、システムが既定のデスクトップにのみメッセージボックスを表示すること以外は、tpmbServiceNotification と同じです。 Windows NT 4.0 以前では、現在の入力デスクトップが既定のデスクトップではない場合、関数は失敗します。 Windows 2000では、現在の入力デスクトップが既定のデスクトップではない場合、ユーザーが既定のデスクトップへ切り替えるまで、この関数は制御を返しません。 Windows 95/98では、このフラグは何もしません。
tpmbRight テキストを右寄せします。
tpmbRTLReading メッセージとキャプションの各テキストを右から左へ表示します。ヘブライ語やアラビア語をサポートしているシステムで有効です。
tpmbSetForeground メッセージボックスをフォアグラウンドウィンドウにします。
tpmbTopMost メッセージボックスを最前面ウィンドウとして作成します。
tpmbServiceNotification 他のデスクトップにメッセージボックスを表示できます。 このフラグをセットするときは、 hwndに0を指定してください。 Windows NT/2000では、呼び出し側がユーザーへイベントを通知するサービスである場合に指定します。 どのユーザーもコンピュータにログオンしていない場合でも、現在のアクティブなデスクトップにメッセージボックスが表示されます。 Terminal Servicesでは、呼び出し側のスレッドが偽装トークンを備えている場合、この関数はメッセージボックスを、偽装トークン内で指定されているセッションへリダイレクトします。
tpmbHelp メッセージボックスに[ヘルプ]ボタンを追加します。 ユーザーが[ヘルプ]ボタンをクリックするか F1 キーを押すと、システムはオーナーへ WM_HELP メッセージを送信します。 このメッセージを受け取るには、相応の処理(Windowsメッセージループ等)が必要です。

4. 戻り値

押されたボタンを表す整数値を返します。 戻り値と以下の定数を整数値で比較してください。

tppbOK
[OK]ボタン
tppbYes
[はい]ボタン
tppbNo
[いいえ]ボタン
tppbCancel
[キャンセル]ボタン([キャンセル]ボタンが表示されているときに、ESCキーまたは右上の[×]ボタンを押したときも、「キャンセル」が押されたと見なされます)
tppbAbort
[中止]ボタン
tppbRetry
[再試行]ボタン
tppbTryAgain
[再実行]ボタン
tppbContinue
[続行]ボタン
tppbIgnore
[無視]ボタン

5. 例

普通のアプリケーションダイアログを表示します。

System.messageBox(-1, "こんにちは。", "挨拶");

「はい」「いいえ」「キャンセル」から選択させるダイアログです。 疑問符アイコンが表示されます。 選択結果は chosen に格納されます。

var chosen = System.messageBox(-1, 
  "吉里吉里を終了します。\n設定を保存しますか?", 
  "終了時確認", 
  tpmbYesNoCancel | tpmbIconQuestion);
switch (chosen) {
case tppbYes:
  // 「はい」ボタンが押されたときの処理
  break;
case tppbNo:
  // 「いいえ」ボタンが押されたときの処理
  break;
case tppbCancel:
  // 「キャンセル」ボタンが押されたときの処理
  break;
default:
  // ありえない
  break;
}

二つのウィンドウに対して、モーダル状態を制御してメッセージボックスを表示します。

var win1 = new Window();
var win2 = new Window();
win1.caption = "ウィンドウ1";
win2.caption = "ウィンドウ2";
win1.visible = win2.visible = true;

System.messageBox(win1.HWND, 
  "ウィンドウ1は操作できません。\nウィンドウ2は操作できます。", 
  "ウィンドウ1がオーナ");
System.messageBox(win2.HWND, 
  "ウィンドウ2は操作できません。\nウィンドウ1は操作できます。", 
  "ウィンドウ2がオーナ");
System.messageBox(-1, 
  "ウィンドウ1もウィンドウ2も操作できません。", 
  "アプリケーションウィンドウがオーナ");
System.messageBox(0, 
  "ウィンドウ1もウィンドウ2も操作できます。", 
  "オーナなし");
System.messageBox(0, 
  "ウィンドウ1もウィンドウ2も操作できます。\n非アクティブでも前面に表示されます。", 
  "常に前面に表示",
  tpmbSystemModal);

win1.close();
win2.close();