リソースの設定をする
[1] 主筆嬢 06/01/26 21:49
一応、目次はこちら。
今回はリソースの設定を行う。
画面に表示する文字列などのロケールに依存する部分は、通常リソースとして切り出すのが慣わしになってる。この辺は途中からやろうとすると大変なことになるから、開発の初期から予定に組み込んでおいた方が良いみたい。
[2] nabiki_t 06/01/26 21:50
あぁそう。まぁ頑張れ。
リソース周辺は何かと厭な問題が多いからな。
[3] 主筆嬢 06/01/26 21:51
まずはいつもの通り、Sun Studio 11とX-Designerを起動する。

ここで「messageBox1」というアイコンを選択した状態で ボタンを押す。
[4] 主筆嬢 06/01/26 21:53
そうするとメッセージボックスのリソースを設定するダイアログが表示される。

ここで「メッセージテキスト」と書かれたところに、適当な文字列を入力する。
[5] 主筆嬢 06/01/26 21:55
そして「適用」と「閉じる」と押してこのダイアログ閉じる。
プレビューの画面に入力した内容が反映される。

[5] 主筆嬢 06/01/26 21:56
次はウィジット名を変更する。

「messageBox1」を選択した状態で、画面上部の「ウィジット名」と「変数名」のところを書き換える。
変数名はプログラム中のWidget型の変数になる。ウィジット名はリソースファイルから参照する時の名前になる。
多分、変数名は重複しない様にした方が良いと思う。ウィジット名は重複しても問題ないし、設計上意図的に重複させることもあり得る。
でも、私は判りやすさのために変数名とウィジット名には同じ名前を付けて、各ウィジットにはそれぞれ別の名前を付けるようにしている。
[6] nabiki_t 06/01/26 21:59
まぁ、その命名規則が必ずしもいいかどうかは判らないけどな。
[7] 主筆嬢 06/01/26 22:02
ここまでやったら、X-Designerを閉じてコンパイルする。
コンパイルに成功すると、実行形式のTestPrj2と共に、「TestPrj2Shell.res」というファイルが生成される。

このファイルには、TestPrj2が動作する際に必要となるリソースが記述されている。
ついでに言うと、生成されるファイル名はX-Designerのコード生成ダイアログで変更することができる。
[8] 広告 06/01/26 22:04
[9] 主筆嬢 06/01/26 22:05
この状態で試しにTestPrj2を実行してみる。

でも、入力した文字列は表示されない。
生成されたリソースファイルを参照するよう設定していないのだから当然。
[10] 主筆嬢 06/01/26 22:07
リソースを設定する方法はいろいろあるし、しかもそれはX Window Systemの設定の話であってSun Studio 11に依存する話ではないから、詳細は省略する。
とりあえず、こういうサイトを紹介するに留めておく。
とりあえず私は、お手軽にできるからという理由から、起動用のスクリプトを書いて、その中でXFILESEARCHPATHを設定するようにしている。
[11] nabiki_t 06/01/26 22:09
XFILESEARCHPATHを使うのはデバッグ用に留めておいた方が良いらしいんだがな。面倒だからな。
[12] 主筆嬢 06/01/26 22:11
で、この起動用スクリプトを使って実行すると、こうなる。
[13] 主筆嬢 06/01/26 22:11

この原因が一体何なのかよく判ってないけど、これはリソースファイルの記述を修正すると直る。
元々はこうなっているけど、
TestPrj2*TestPrj2Shell.MsgBoxDlg.messageString: ほげほげ
|
それをこうする。
TestPrj2*MsgBoxDlg.messageString: ほげほげ
|
一応修正後のリソースファイルも公開しておく。
[14] 主筆嬢 06/01/26 22:13
この修正をやってから実行すると、

めでたく文字が表示される。
[15] 主筆嬢 06/01/26 22:15
こうしておけば、実行するときのロケールや言語が変わっても、プログラムを修正する必要がなくなる。
プログラムを配布する際に、ロケール別のリソースファイルを用意しておいて、起動時のロケールに合わせたリソースファイルを参照するようにしておけば、完全にロケール非依存のプログラムにすることだってできる。
[16] nabiki_t 06/01/26 22:17
なんか、怪しいなぁ。これで良いのか?
[17] 主筆嬢 06/01/26 22:18
動いてるからいい。問題ない。
[18] nabiki_t 06/01/26 22:19
はぁ・・・
[19] 名無しさん 06/01/25 22:23
目次はこちら。
|