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

这些可能是与 GUI 元素相关的“人类可读的快捷方式”(似乎是 C 宏的形式):所述元素可能仅通过主机系统中的整数引用。您在这里没有向我们提供太多需要处理的细节。

这种技术的优势通常与更容易维护(等等)有关。

于 2010-01-12T02:59:18.103 回答
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 回答
1

它们提供了一些好处。

  1. 记录代码。你宁愿打电话LoadForm(1000);还是LoadForm(HelloWorldForm);在你的源代码中?
  2. 它们实际上可能被定义资源的文件使用。如果您需要重新编号资源(也许您正在合并两个项目,这两个项目都使用 1000 用于不同的表单),您只需要在一个地方修改值。
于 2010-01-12T04:51:22.230 回答