タイトル小池邦人のプログラミング日記》2001/11/30<Interface Builderの謎が解決されたのだ>カテゴリーProjectBuilder/Interface Builder, ユーザインタフェース, Carbon/CF, 小池邦人のプログラミング日記
作成日2001/11/30 10:21:5作成者新居雅行
前回の「nterface Builderに再挑戦する」で、Interface Builderに関するいくつかの問題点を取り上げたのですが、さっそく読者の方から解決方法のメールが届きました。ゆうたさん、メールありがとうございました。大変感謝しております。

まずは、Tabアイテムに日本語を入力しても表示されない件です。このトラブルは、現バージョンのInterface Builderでは避けられないようです。ただし、後からAPIを使って日本語に差し替える方法が判明いたしました。まずはTab Infoダイアログで「Control ID」である「Signature:」と「ID:」を設定します。今回の例では、’tab ’と1に設定しています。

 

そして、Project Builderで作成したひな形プロジェクトのソース(main.c)で、SetControlData()を用いた以下のようなルーチンを実行します。

 

これで、作成したTabコントロールの最初のアイテムが「日本語」に差し替えられます。

TabコントロールのControlRefを得るには、先んじて設定しておいた「Signature:」と「ID:」をGetControlID()に渡します。SetControlData()の2番目の引数が、変更したいアイテム番号を指示しています。実は、私もこれと似た方法(ControlTabInfoRec構造体とStr255を使う方法)を試してみていたのですが、なんとテストルーチンをShowWindow( window )の後に実行していたため、Tabの表記が書き変わらず、正しく実行されていたことが分からなかった言うドジを踏んでいました。大変お騒がせいたしました。ちなみに、私が試した方法ですと日本語表記が化けてしまいますので、必ずControlTabINfoRecV1構造体を使う方法を用いてください。

次は、ポップアップメニューのように、メニューリソースを付加する必要があるコントロールのAttributesにメニューIDを入力するカラムが無い件です。こちらは、もっと簡単に解決しました。Nib仕様ではメニューを別に作成し、そのメニューIDをコントロールにリンクする必要はないようです。つまり、メニューアイテムの追加や表示内容の変更は、メニューバーのメニューと同様にその場で編集できるようになっています。表示内容はダブルクリックで入力できますし、新規アイテムは部品パレットからドラッグ&ドロップで追加できます。いやはや、いつまでも「リソース頭」のままではダメだということがよく理解できました。

 

さて、後はProject Builder経由以外でInterface BuilderのImage Tabへ画像やアイコンを追加する方法が判明すれば大変嬉しいのですが。どなたかご存知ないでしょうか?ご連絡をお待ちしております。
[小池邦人/オッティモ]
関連リンクオッティモ