●はじめに (1999/02/21 KPJ with CCB)
 このコーナーでは、C言語で Windowsプログラムを組むときに、知っていれば便利と思われるものを書く予定です。
 今回は初めてということなので、基本中の基本である MessageBox APIについて書きたいと思います。
●MessageBoxについて

 MessageBoxは、画面にメッセージボックスを表示させるAPIです。(そのままですね・・・)

 MessageBoxは、

int MessageBox(
 HWND hWnd,
 LPCTSTR lpText,
 LPCTSTR lpCaption,
 UINT uType
)
と定義されていて、引数の意味は、

hWnd : 親ウィンドウのハンドル、親ウィンドウを指定しない場合は NULL
lpText : メッセージ本文の文字列(ポインタ)
lpCaption : タイトル部分に表示させる文字列(ポインタ)
uType : メッセージボックスのタイプ

となっています。
 さて、このMessageBoxは、何が便利なんでしょうね。それは、次のようなことができるのです。

lpTextに表示したいデータを設定しておけば、デバッグ情報を表示できます。特に、リリース版でのデバッグには威力を発揮します。

ユーザに確認を取るような簡単なものならダイアログを作らなくて済みます。また、次に説明しますuTypeを指定するだけで色々なダイアログに変身します。

●uTypeとは。

 先ほど、uTypeは「メッセージボックスのタイプ」と書きましたが、どのようなタイプがあるのでしょう。

 そこで、uTypeについて、もう少し説明するために、こんなソースコードを書いてみました。

ソースコードで1つ目の MessageBoxの uTypeで指定されているのは、MB_ICONINFORMATIONと MB_YESNOです。
 MB_ICONINFORMATIONは、メッセージボックスにアイコンを追加します。
MessageBoxで利用できるアイコンは全部で4種類です。

 MB_ICONINFORMATION : "i"マークのアイコン
 MB_ICONQUESTION : "?"マークのアイコン
 MB_ICONEXCLAMATION : "!"マークのアイコン
 MB_ICONSTOP : "STOP"と書かれたアイコン

 MB_YESNOは、メッセージボックスにボタンを追加します。
MessageBoxで利用できるボタンの組み合わせは全部で6種類です。

 MB_YESNO : 「はい」、「いいえ」ボタン
 MB_YESNOCANCEL : 「はい」、「いいえ」、「キャンセル」ボタン
 MB_OK : 「OK」ボタン
 MB_OKCANCEL : 「OK」、「キャンセル」ボタン
 MB_ABORTRETRYIGNORE : 「中止」、「再試行」、「無視」ボタン
 MB_RETRYCANCEL : 「再試行」、「キャンセル」ボタン

 このほかにも、MB_HELPを組み合わせることで「ヘルプ」ボタンの追加が可能です。

 つぎに2つ目の MessageBoxについてですが、1つ目との主な違いは uTypeに MB_DEFBUTTON2が追加されていることです。
 メッセージボックスでは、デフォルトで選択されているボタンを指定することができます。

 MB_DEFBUTTON1 : 1つ目のボタンがデフォルト
 MB_DEFBUTTON2 : 2つ目のボタンがデフォルト
 MB_DEFBUTTON3 : 3つ目のボタンがデフォルト
 MB_DEFBUTTON4 : 4つ目のボタンがデフォルト

 これらの指定がない場合は、1つ目のボタンがデフォルトということで、1つ目のメッセージボックスでは「はい」ボタンがデフォルトでしたが、2つ目では「いいえ」ボタンがデフォルトになります。

●あとがき
 今回は以上ですが、簡単すぎたでしょうか?次回以降もソースコードをもとに説明したいと思います。
 それでは。