メッセージボックスの定数
メッセージボックスの定数は、MessageBox関数を使用するときに使われます。
MessageBox関数は、チャート以外のウィンドウを表示させることができる関数です。
例えば、注意事項を表示させたいときや、YES/NOを選択させたいときに使うと良いでしょう。
MessageBox関数の出力と引数で分けて見てみましょう。
メッセージボックスの定数(出力用)
| 定数 | 数値 | 説明 |
| IDOK | 1 | OKボタンが押された |
| IDCANCEL | 2 | キャンセルボタンが押された |
| IDABORT | 3 | 中止ボタンが押された |
| IDRETRY | 4 | 再試行ボタンが押された |
| IDIGNORE | 5 | 無視ボタンが押された |
| IDYES | 6 | YESボタンが押された |
| IDNO | 7 | NOボタンが押された |
| IDTRYAGAIN | 10 | 再実行ボタンが押された |
| IDCONTINUE | 11 | 続行ボタンが押された |
メッセージボックスの定数(引数用)
メッセージボックスのオプション引数は、3つに分かれています。
それぞれ確認していきます。
メッセージボックスのオプション引数(1番目)
メッセージボックスのボタンの数や種類を設定する定数です。
| 定数 | 数値 | 説明 |
| MB_OK | 0x00000000 | ボタン1つのメッセージボックスを作成 [OK] |
| MB_OKCANCEL | 0x00000001 | ボタン2つのメッセージボックスを作成 [OK] [キャンセル] |
| MB_ABORTRETRYIGNORE | 0x00000002 | ボタン3つのメッセージボックスを作成 [中止] [再試行] [無視] |
| MB_YESNOCANCEL | 0x00000003 | ボタン3つのメッセージボックスを作成 [YES] [NO] [キャンセル] |
| MB_YESNO | 0x00000004 | ボタン2つのメッセージボックスを作成 [YES] [NO] |
| MB_RETRYCANCEL | 0x00000005 | ボタン2つのメッセージボックスを作成 [再試行] [キャンセル] |
| MB_CANCELTRYCONTINUE | 0x00000006 | ボタン3つのメッセージボックスを作成 [キャンセル] [再実行] [続行] |
メッセージボックスのオプション引数(2番目)
メッセージボックスのアイコンを設定する定数です。
| 定数 | 数値 | 説明 |
| MB_ICONSTOP | 0x00000010 | ストップアイコン |
| MB_ICONERROR | 0x00000010 | エラーアイコン |
| MB_ICONHAND | 0x00000010 | ハンドアイコン |
| MB_ICONQUESTION | 0x00000020 | クエスチョンアイコン |
| MB_ICONEXCLAMATION | 0x00000030 | 感嘆符アイコン |
| MB_ICONWARNING | 0x00000030 | 警告アイコン |
| MB_ICONINFORMATION | 0x00000040 | インフォメーションアイコン |
| MB_ICONASTERISK | 0x00000040 | アスタリスクアイコン |
メッセージボックスのオプション引数(3番目)
メッセージボックスのデフォルトで選択されているボタンを設定する定数です。
| 定数 | 数値 | 説明 |
| MB_DEFBUTTON1 | 0x00000000 | 1番目のボタンをデフォルトに設定 |
| MB_DEFBUTTON2 | 0x00000100 | 2番目のボタンをデフォルトに設定 |
| MB_DEFBUTTON3 | 0x00000200 | 3番目のボタンをデフォルトに設定 |
| MB_DEFBUTTON4 | 0x00000300 | 4番目のボタンをデフォルトに設定 |
メッセージボックスの定数の使い方
メッセージボックスの定数は、MessageBox関数で使用されます。
MessageBox関数のオプション引数として、メッセージボックスの定数が使われます。
例えば、以下のように使用します。
サンプルプログラム
//+------------------------------------------------------------------+
//| メッセージボックスの定数 サンプルプログラム |
//+------------------------------------------------------------------+
void OnInit()
{
// メッセージボックスの出力を格納する変数
int msgret;
// ボタン3つのメッセージボックスを作成
// インフォメーションアイコン
// 2番目のボタンをデフォルトに設定
msgret = MessageBox("テストメッセージ",
"ヘッダ",
MB_ICONINFORMATION | MB_YESNOCANCEL | MB_DEFBUTTON2);
// 押されたボタンによって表示を変える
if(msgret == IDYES)
{
Print("はい");
}
else if(msgret == IDNO)
{
Print("いいえ");
}
else if(msgret == IDCANCEL)
{
Print("キャンセル");
}
else
{
Print("他");
}
}
上記のように記述することで、以下のようなメッセージボックスが表示されます。
※文字化けする可能性がありますので、文字コードを指定すると改善されます。

プログラムの解説
上記のサンプルプログラムでは、MessageBox関数の第3引数にメッセージボックスの定数を組み合わせて指定しています。
複数の定数を組み合わせるには、「|」(OR演算子)を使用します。
この例では以下の3つの定数を組み合わせています。
- MB_ICONINFORMATION:インフォメーションアイコンを表示
- MB_YESNOCANCEL:[YES] [NO] [キャンセル] の3つのボタンを表示
- MB_DEFBUTTON2:2番目のボタン(NO)をデフォルトで選択状態にする
MessageBox関数の戻り値は、ユーザーが押したボタンに対応する出力用の定数(IDYES、IDNO、IDCANCELなど)が返されます。
戻り値をif文で判定することで、ユーザーが押したボタンに応じた処理を実行できます。




