X作成講座 on FB[05]  (4)メッセージを整える


 ここでは ResEdit を使ってXのメッセージを整えます。

 ResEdit はFBII のCDに入っていますのでハードディスクにコピーしておいて下さい。 ResEdit を恐ろしいもののように思っている方もいるかも知れませんが、システムファイルやアプリケーションなどを無節操にいじらない限りは安全です。また何よりプログラミングには必須のツールですので、是非慣れるようにして下さい。


 最初に、開いていたテストスタックを閉じます。スタックを開いたままではリソースをいじれないからです。

 このスタックを ResEdit にドラッグして開いて下さい。ウィンドウに2つのリソースが見えたと思います。 XFCN と書かれているものをダブルクリックすると、たった今コンパイルしたばかりの tasu というリソースが見えます。これを開いても呪文しか見えませんので、そのまま閉じて下さい。これから編集するのはもうひとつのリソース、STR# です。

 STR# をダブルクリックすると、リストが現れます。これをもう一度ダブルクリックすると STR# の文字列編集画面になります。

 上から4番目、<enter version info here> と書いてあるところにバージョン情報を書き込みます。例えば tasu XFCN ver.1.1 by UDI てなもんです。
 上から5番目、<enter usage info here> と書いてあるところに書式情報を書き込みます。例えば tasu(n,m) のような感じです。

 書き込んだらセーブして ResEdit を終了して下さい。


 では実験。テストスタックをダブルクリックして開いて下さい。

 メッセージボックスに put tasu("!") と打ち込んでリターンキーを押すと、今書き込んだバージョン情報がメッセージボックスに現れます。 put tasu("?") と打ち込んでリターンキーを押すと、書式情報が現れます。
 これらは XCMD/XFCN の標準的なインターフェースで、行儀の良いXならみんなサポートしている動作です。

 思っていたメッセージが現れなかったらスタックを一旦閉じて、ResEdit で開き直してメッセージを修正して下さい。


             −・−・−


 C言語などで作るXでは、Xの使うメッセージ(エラーメッセージやバージョン情報など)はソース中に埋め込んでしまうのが普通です。こうすることで XCMD/XFCN 単体のリソース中にメッセージまで入れてしまうことが出来るからです。

 FBではこれらのメッセージを独立したリソースとして持つようになっています。再コンパイルせずに随時メッセージを変更出来、ローカライズなどが簡単に出来るというメリットがあります。しかし同時に、XCMD/XFCN の動作に STR# リソースが必須となり、リソースの管理やインストールが多少煩わしくなるというデメリットがあります。

 メッセージをリソースで持つのはFBの仕様ではなく、あくまで付属するテンプレートの仕様です。ソース中にメッセージを埋め込むようなテンプレートを作ってしまえば(つまりソース中にバージョン情報やエラーメッセージを直接書けば)、STR# リソースを整える手間は省けます。多くの場合はこの方法の方が便利で一般的だと思います。

 エラーメッセージのハンドリング部分は HyperXcmd Glue.INCL ファイルにあります。 LOCAL FN ErrorHandler(xCmdPtr&,errID%) と言う関数がソレですね。ご丁寧にエラーが起こった時に BEEP を2度鳴らすようになっていますがこれは余計は御世話です。
 よく読むと分かりますが、プログラマが自由にエラーIDを追加して、それに対応することも出来るようになっています。これで遊んでみるのも良いでしょう。


             −・−・−


 これであなたの XFCN "tasu" が完成しました。

 ゴチャゴチャと面倒な手続きはありましたけど、プログラミングそのものは単純でしょ? 外部ウィンドウを扱うようになるとまた少々複雑になりますが、その前に普通の XCMD/XFCN をいくつか作って、Xの作成に慣れて下さい。

 引数を持たない XCMD/XFCN では引数を受け取って変換する部分が不要になります。また XCMD は値を返さないように思われるかも知れませんが、XFCN と同じ手続きで値を返すことが出来ます。 XCMD から返された値は HyperTalk からは the result として読み出します。

 あ、そうそう。 tasu XFCN を他のスタックにコピーする時は、STR# リソースも一緒にコピーするのを忘れずに。

 それから、XCMD/XFCN のプログラミングには一般のFBのコマンドがほとんど使えません。リファレンスマニュアルのコマンド名の右側に ResEdit のようなマークがついているものがありますが、XCMD/XFCN のプログラミングで使えるのはこの「ミニアプリケーション用」コマンドだけです。これで不足する分は ToolBox を直接呼び出すことになります。ファイル関連のコマンドが全滅なのが痛いですね。


inserted by FC2 system
Next



FutureBASIC Lab.

UDI's HomePage