1

私は GUI デザイナーなしで GUI を作ろうとしたことは一度もありませんでした。そして今、『Palm OS Programming: The Developers Guide』という本で Palm OS アプリケーションの開発方法を学んでいます。その上に、いくつかの GUI 項目の宣言である次のコードがあります。

#define HelloWorldForm 1000
#define HelloWorldButtonButton 1003
#define HelloWorldMenuBar 1000

#define GoodnightMoonAlert 1101

#define FirstBeep 1010

#define SecondBeepmore 1000

いくつか知りたいことがあります:

  • これをある種の順序で行う必要がありますか?
  • なぜこの数字を申告する必要があるのですか?
  • 彼らは私を助けるつもりですか?
  • 彼らはアイテムの種類に関連する何かを持っていますか?
4

3 に答える 3

3

それらはリソースIDです。このようなマクロを定義する必要はありませんが、定義しない場合は、コードでUIウィジェットを参照するときに、代わりに生の整数値を使用する必要があります。たとえば、UIコントロールへのポインタを取得する一般的な方法は、次のように呼び出すことです。

FormType* formP = FrmGetActiveForm();
UInt16 index = FrmGetObjectIndex(formP, objectID);
ControlType* controlP = FrmGetObjectPtr(formP, index);

状態の読み取り(チェックボックスなど)、テキストラベルの変更、動的な表示または非表示などを行うには、UIウィジェットへのポインターを取得する必要があります。

リソースIDと、取得したポインターを使用して行うことの間には、型の安全性はありませんFrmGetObjectPtr。どのIDがどのタイプのコントロールに対応するかを追跡するのはあなたの責任です(一般的な方法は説明的な名前を使用することです)。

于 2010-01-12T03:10:17.597 に答える
3

これらはおそらく、GUI 要素に関連付けられた「人間が読めるショートカット」(C マクロの形式のようです) です。これらの要素は、ホスト システムで整数を介してのみ参照される可能性があります。ここで作業するための多くの詳細を提供してくれませんでした。

このような手法の利点は、通常、メンテナンスが容易になることです (とりわけ)。

于 2010-01-12T02:59:18.103 に答える
1

それらにはいくつかの利点があります。

  1. コードの文書化。LoadForm(1000);ソースコードのように、またはソースコード内で呼び出しをLoadForm(HelloWorldForm);行いますか?
  2. これらは、リソースを定義するファイルによって実際に使用される場合があります。リソースの番号を付け直す必要がある場合 (おそらく、両方とも異なるフォームで 1000 を使用していた 2 つのプロジェクトをマージする場合)、値を 1 か所で変更するだけで済みます。
于 2010-01-12T04:51:22.230 に答える