プログラム講座 初級編19

- おみくじを作ろう -

 初級編19です。今回は「おみくじ」を作ります。今回は「リソースエディタ」を利用して、なるべく短いプログラムでMacらしいアプリケーションにしてみます。




ALRTリソースとSTRリソース
 ALRTリソースはユーザーに注意を促す時に使用しますが、これ以外に「ボタン1個つきのダイアログ」として使用することもできます。今回のゆなおみくじでは、メッセージを表示し、ボタンを1つだけ用意しておけば用に足ります。
 今回、新たに勉強するのはSTR というリソースです。STRの3文字ではなく、後ろに半角スペースが必要ですのでリソースを作成したりFuture BASIC上から指定する場合は半角スペースを忘れないようにしてください。
 STRリソースは「255文字までの文字列」のリソースです。簡単なエラーメッセージや文字表示に向いています。今回のおみくじのメッセージにも、もってこいのリソースですね(^^)
 次の項で、このSTRリソースの作成の方法を書きます。今までとは違い作成後にリソース番号を変更する方法も書いてあります。




STRリソースの作成(おみくじメッセージの作成)
 それではリソースエディタを使ってSTRリソースを作成します。STRリソースは1000番から番号をふり、いくつか作成してみます。


 FileメニューのNew...を選択します。


 omikuji.resというファイル名を入力後[New]のボタンを押します。これでリソースファイルが作成されます。



 ウィンドウが1枚作成され表示されます。ResourceメニューからCreate New Resourceを選択します。これは新規リソースを作成するものです。


 STR (最後の半角スペースを忘れず!)と入力するかリストボックスからSTR をクリックして選択します。OKのボタンを押すと次々にウィンドウが開いて文字が入力できる状態になります。


 おみくじで表示されるメッセージを入力します。ただし、最大255文字なので長いメッセージは避けて下さい。



 今回のプログラムではリソースの番号は1000から始まる事になっています。普通に作成したのでは図のように128番から始まってしまいます。そこでリソース番号を変更しなければなりません。番号を変更するリソースを選択しResourceメニューの一番下にあるGet Resource Infoを選択します。


 IDという文字の横に四角い枠があり128となっていますので、これを1000に変更します。あとはウィンドウを閉じればOKです。


 表示するメッセージの分だけ作成しましょう。今回のプログラムではリソース数は調べませんので、いくつリソースを作成したか覚えておきましょう。

 


STRリソースで作成した文字の取得方法
 STRリソースで作成した文字をFuture BASICで取り出すにはちょっと手順が必要です。手順としては以下のようになります。

[1]指定IDのSTRリソースハンドルを得る
[2]ハンドルがゼロかどうか(取得できたかどうか)調べる
[3][2]でハンドルが取得された場合a$ = PSTR$([ハンドル])として文字列変数にコピーする

 このようにしてSTRリソースの文字を取り出します。取り出した文字をダイアログに表示するには2つの仕掛けが必要です。1つはアラートリソースで表示する文字列内で^0と指定しておくこと。このような文字列を記述しておくと、自動的に文字列を置き換えて表示してくれます。置き換えられる文字は最大4つまでです。
 置き換える文字列を設定する場合はCALL PARAMTEXTを使用します。引数に文字列を指定しますが、何も指定しない場合は""とします(空文字、ダブルクオーテーションを2つ列記する)。
 最後にアラートリソースを表示します。アラートリソースを表示する場合はerr = FN ALERT(リソース番号,0)とします。ボタンを押したかどうか、ウィンドウの表示、アップデート等は自動的に行われますので何もする必要はありません。




終わりに
 STRリソースは255文字までしか扱えません。もっと長いメッセージを表示する場合はTEXTリソースを使用します。これについては、また別の講座として解説したいと思います。



今回のプログラムリスト
'---------------------------------------- ' "おみくじ プログラム" '---------------------------------------- RESOURCES "omikuji.res": ' "おみくじリソースを連結" _kuji = 128 RANDOM: ' "乱数の初期値を設定します(チック数)" No = RND(5)+1000-1: ' "RND命令は1から指定値までの乱数を生成します" strResH& = FN GETRESOURCE(_"STR ",No): ' "適当なSTRリソースを読み込む" LONG IF strResH& <> 0 msg$ = PSTR$([strResH&]) CALL PARAMTEXT(msg$,"","",""): ' "表示文字を設定" err = FN ALERT(_kuji,0): ' "おみくじダイアログを表示" END IF