今回はメッセージボックスを表示させてみましょう。メッセージボックスの表示は以前にもAPI関数呼び出しの例としてやっていますが、ここではより細かい設定なども行ってみたいと思います。以前にやったように、メッセージボックスの表示にはMessageBox関数を使います。type);まず、最初のhWndパラメータには、オーナーウィンドウのハンドルを指定します。オーナーウィンドウというのは、表示するメッセージボックスを「所有する」ウィンドウのことです。メッセージボックスの持ち主をどのウィンドウにするかということです。ここで指定されたウィンドウは、メッセージボックスが表示されている間は停止された状態になり、ウィンドウの操作もできなくなります。指定することによってオーナーウィンドウを持たないメッセージボックスを表示させることもできます。今回は、このパラメータに、現在の描画先のウィンドウハンドルであるシステム変数hwndを指定しましょう。次に、2番目のpszTextパラメータと3番目のpszCaptionパラメータには、それぞれ、メッセージボックスの内部に表示する文字列のアドレスとキャプションバー(タイトルバー)に表示する文字列のアドレスを指定しなければなりません。これについては、#funcによる関数定義の引数型指定でこれらのパラメータにsptrを指定しておくことで、文字列を直接指定することができるというのは以前に説明したとおりです。指定することもできます。この場合には、「エラー」というタイトル文字列が表示されることになります。最後のuTypeパラメータには、表示するメッセージボックスの種類を指定します。その他にも、以下の種類が存在します。[再試行][キャンセル]これらの数字だけでは文字列とボタンしか表示されませんが、別の値を組み合わせることでアイコンを表示させることもできます。組み合わせて指定することで感嘆符「!」のアイコンを表示させることができます。そのほかのアイコンは、以下の値で表示させることができます。吹き出しに「i」のアイコン知らない方のために説明しておきますと、0x30の「0x」というのは、その値が16進数表示であることを表しています。これはHSPで「$30」と記述したのとまったく同じ意味になります。HSPではどちらの表記法でも使うことができますが、このドキュメントでは主に「0x」の表記を使用しています。ここで、「値を組み合わせて指定する」と説明しましたが、API関数の引数ではこのように値を組み合わせて指定するパラメータが非常に多く存在します。このuTypeパラメータもその1つです。この場合には、それぞれの値の論理和(OR結合)をとった値を指定します。ビット演算子「|」で結びつけた値を指定するということです。0x30(すなわち0x31)を指定することになります。実際のスクリプトでは直接0x31という値を記述するのではなく、定数名を#defineまたは#constで定義しておいてから使用するほうが分かりやすくてよいと思います。この関数は、呼び出した後の戻り値から、どのボタンが押されたのかを知ることができます。どのような値が返されるかは、表示されたメッセージボックスによって異なります。[OK]が押されると1が、[キャンセル]が押されると2が返されます。そのほか、押されたボタンによって、以下の戻り値になります。いいえこれらの戻り値はシステム変数statに格納されているので、その値を調べて判断します。サンプルスクリプト以下のスクリプトは、[OK][キャンセル]ボタンを表示させてどのボタンが押されたのかを表示するスクリプトです。MessageBox関数の第2、第3パラメータは文字列のアドレスを渡しますが、先ほど述べたとおり、sptr型指定を用いるので、ここでは文字列(変数)を直接指定することができます。varptrを使って文字列変数のアドレスを指定することもできます。"[キャンセル]ボタンが押されました"}end感嘆符のアイコンとともに、[OK][キャンセル]ボタンが表示されます。ボタンを押してメッセージボックスを閉じると、どちらのボタンが押されたのかを、再びメッセージボックス(こちらはdialog命令)で表示しています。ちなみに、右上の[×]ボタンやエスケープキーによって閉じると、[キャンセル]が押されたものと判断されます。