ResEdit、ザ・スタート!
すべてが予定通りにいくなんてことはなかった……。(←
ResEditとリソースのことに全然触れないままなのはどうかと思い、ちょっとばかり書いてみます。
[注意]ResEditは軽くシステムを起動不能にしたりする力があるので、取り扱いには十分気をつけてください! リソースの勉強でシステムファイルなどを開く時は、コピーしてからコピーの方を開くようにします。
「File」メニューから「New...」(名前は「〜.rsrc」がおすすめ)した直後の様子が左で、「Resource」メニューの「Create New Resource」で新しいリソースを追加していくと右のような感じになります。
まずは、versリソースから解説ー。これはバージョンの情報です。とりあえず2つ作って、IDを1と2に変えます。
内容は他のソフトなどを例にして……というか、どうするのが一番正しいマナーなのか、ぎるばーとも理解していません。
あ、でも国名のところは14-Japanにしておきます。これを抜かすとOS Xで盛大に文字化け祭が開催されます……。
Finderの「情報を見る」での見え方です。赤線の上(ID=2)と下(ID=1)の部分に注目!
次はSTR#リソースに行きます。これにはユーザの目に入る文字列を入れます。IDは128からにするのが普通です。
編集は、*****の部分をクリックして「Insert New Field(s)」したり、削除(Deleteキー)したり……。
下は、STR#リソースの文字列をコード側で取り出す例。
Str255 text; ... /* indexは*****の左の数字 */ GetIndString(text, resID, index);
次はMBARリソースとMENUリソースです。MBARリソースがメニューバーで、MENUリソースのIDを入れます。
MENUリソースの方はとりあえずOS 9向けに作って、コードでOS Xに対応(「終了」を除去)するのが分かりやすいと思います。
いろいろと端折りすぎ(←不親切)なコード例。
MenuBarHandle menuBar; ... menuBar = GetNewMBar(128); if (menuBar == NULL) ExitToShell(); SetMenuBar(menuBar); /* OS X向けの修正とか */ /* コマンドIDの設定とか */ ... DrawMenuBar();
次にWINDリソース。これはウインドウの外枠のデータです。ウインドウの種類とサイズ、クローズボックスやタイトルバーなどの設定ができます。「Initially visible」のチェックは外しておいた方がいいような……。
ウインドウをWINDリソースから作る例です。
WindowRef window; ... window = GetNewCWindow(128, NULL, kFirstWindowOfClass); if (window == NULL) ExitToShell(); /* 標準ハンドラをインストール */ InstallStandardEventHandler(GetWindowEventTarget(window)); ... ShowWindow(window);
ダイアログは、以前にはDLOG/DITLリソースとModalDialog関数を使っていたのですが、Carbon Event Managerとの相性がいまいち……。なので、この講座ではCarbon Event Managerの関数を使う方法で行こうと思います。ちょっと先取りすると、ウインドウにCreateRootControlして、ShowWindowした後にRunAppModalLoopForWindow……という流れになります。
さて、できあがったリソースファイルはどうしましょうか?(聞くなよ
……ちゃんと説明します。リソースファイルは、MPW Shellの「Create Build Commands...」でコードファイルと一緒に追加しておくと、ビルドの時にアプリケーションへとコピーされます。
ちなみに、ぎるばーとによくあるミスで、ビルドしたアプリケーションのリソースを直接いじる→再ビルドで元通り→「What?(外人風」となるのがあります。こういうのはまねをしないように!
リソースの種類はまだまだあるので、ハードディスクにあるソフトをResEditで開いて調べてみるといいかもしれません。BNDL/FREFリソースとアイコンの関係とか……。
今回もお疲れ様でした! また次回、不思議の世界でお会いしましょう!(←?)終わりー。