次へメッセージボックスを表示させてみるメッセージボックス今回はメッセージボックスを表示させてみましょう。前回も出てきましたが、メッセージボックスといっても、HSPオブジェクトのメッセージボックスではありません。HSPのdialog命令で表示されるあのウィンドウです。APIを使うとdialog命令では表示できないメッセージボックスも表示させることができるようになります。前回の記述にも会ったように、メッセージボックスの表示にはMessageBox関数を使います。メッセージボックスのタイプ);この関数は引数として文字列のアドレスを渡していますから、関数名の最後には"A"が付けられています。これを忘れないようにしなければいけません。最初の引数(hWndパラメータ)には、オーナーウィンドウのハンドルを指定します。オーナーウィンドウというのは、表示するメッセージボックスを「所有する」ウィンドウのことです。メッセージボックスの持ち主をどのウィンドウにするかということです。ここで指定されたウィンドウは、メッセージボックスが表示されている間は停止された状態になり、ウィンドウの操作もできなくなります。このパラメータに0を指定してオーナーウィンドウを持たないメッセージボックスを作成することもできますが、今回はHSPウィンドウを指定することにします。HSPウィンドウのハンドルは、BMSCR構造体に格納されているので、mref命令で取得することができます。BMSCR構造体については、『構造体』の項を参照してください。次に、2番目と3番目の引数(pszTextパラメータとpszCaptionパラメータ)には、メッセージボックスの内部に表示する文字列のアドレスと、キャプションバー(タイトルバー)に表示する文字列のアドレスを指定します。text2最後の引数(uTypeパラメータ)には、表示するメッセージボックスの種類を指定します。[OK][キャンセル]ボタンを持つメッセージボックスの場合には、1(MB_OKCANCELと定義されている)を指定します。組み合わせて指定することで、吹き出しに「i」マークのアイコンを表示させることもできます。知らない方のために説明しておきますと、0x30の「0x」というのは、その値が16進数を示すということを表します。これはHSPで「$30」と記述したのとまったく同じ意味になります。HSPではどちらの表記法を使うこともできますが、このページでは「0x」を使うことが多いと思いますので、了承しておいてください。ここで1つ注意しておくことは、API関数の引数ではよく「値を組み合わせて指定する」というものが出てきます。MessageBox関数のuTypeパラメータもその1つです。この場合には、それぞれの値の論理和(OR結合)をとった値を指定します。演算子「|」で結びつけた値を指定するということです。0x30(すなわち0x31)を指定することになります。API関数のパラメータとして指定するために演算子「|」で結びつけた値は、一般的にはそれらの値を足し合わせたものと等しくなります。場合によっては単純に和をとった場合とは値が異なってしまう場合もありますから、できるだけ論理演算を行なうようにして下さい。MB_ICONEXCLAMATIONこの関数は、呼び出した後の戻り値から、どのボタンが押されたのかを知ることができます。どのような値が返されるかは、表示されたメッセージボックスによって異なります。[OK][キャンセル]ボタンを持つメッセ—ボックスでは、[OK]が押されると1が、[キャンセル]が押されると2が返されます。これらは変数hspdllおよびシステム変数statに格納されているので、このうちのどちらかを調べて判断します。サンプルスクリプト以下のスクリプトは、[OK][キャンセル]ボタンを表示させてどのボタンが押されたのかを表示するスクリプトです。