关于头文件的定义数字的问题

时间:2010-01-12 02:52:10

标签: c palm-os palm

我没有尝试过没有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

我想知道一些事情:

  • 我需要以某种顺序执行此操作吗?
  • 为什么我需要申报这个号码?
  • 他们会帮助我什么?
  • 他们有与项目类型相关的任何内容吗?

3 个答案:

答案 0 :(得分:3)

这些可能是与GUI元素相关联的“人类可读快捷方式”(似乎是C宏的形式):所述元素可能仅通过主机系统中的整数引用。您没有向我们提供有关此处使用的详细信息。

这种技术的优点通常与更容易维护(以及其他)有关。

答案 1 :(得分:3)

他们的资源ID。您不是必需来定义此类宏,但如果不这样做,则在尝试引用代码中的UI小部件时,您将不得不使用原始整数值。例如,您获得指向UI控件的指针的典型方法是调用:

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

您需要获取UI小部件的指针,以便执行诸如读取其状态(例如复选框),更改文本标签,动态显示或隐藏它们等操作。

资源ID与您从FrmGetObjectPtr返回的指针所执行的操作之间没有类型安全性;您有责任跟踪哪个ID对应于哪种控件(通常的做法是使用描述性名称)。

答案 2 :(得分:1)

它们提供了一些好处。

  1. 记录代码。您希望在源代码中使用LoadForm(1000);LoadForm(HelloWorldForm);这样的电话吗?
  2. 实际上,它们可能由定义资源的文件使用。如果您需要重新编号资源(也许您正在合并两个项目,它们都使用1000个不同的表单),您只需要在一个地方修改该值。