Вопросы по определенным номерам заголовочного файла

Я никогда не пытался сделать GUI без дизайнера GUI, и теперь я учусь разрабатывать приложения для Palm OS с книгой " Программирование на Palm OS: Руководство для разработчиков". И на нем у меня есть этот код, который является объявлением некоторых элементов графического интерфейса:

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

#define GoodnightMoonAlert 1101

#define FirstBeep 1010

#define SecondBeepmore 1000

Я хочу знать некоторые вещи:

  • Мне нужно сделать это в виде заказа?
  • Почему мне нужно объявить эти цифры?
  • В чем они мне помогут?
  • У них есть что-нибудь, связанное с типом предмета, которым они являются?

3 ответа

Решение

Они идентификаторы ресурсов. Вы не обязаны определять такие макросы, но если вы этого не сделаете, вам придется использовать необработанные целочисленные значения, когда вы пытаетесь обратиться к виджетам пользовательского интерфейса в коде. Например, типичным способом получения указателя на элемент управления пользовательского интерфейса будет вызов:

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

Вам нужно было бы получить указатели на виджеты пользовательского интерфейса, чтобы выполнять такие действия, как чтение их состояний (например, для флажков), изменение текстовых меток, их динамическое отображение или скрытие и т. Д.

Нет никакой безопасности типов между идентификаторами ресурса и тем, что вы делаете с указателем, который вы получаете FrmGetObjectPtr; Вы несете ответственность за то, чтобы отслеживать, какой идентификатор соответствует какому типу контроля (обычная практика - использовать описательные имена).

Это, вероятно, "удобочитаемые человеком ярлыки" (кажется, в виде макросов C), связанные с элементами GUI: на упомянутые элементы, вероятно, ссылаются только через целые числа в хост-системе. Вы не предоставили нам много деталей для работы здесь.

Преимущество такой техники обычно связано с более простым обслуживанием (среди прочего).

Они предоставляют пару преимуществ.

  1. Документирование кода. Вы бы предпочли звонок как LoadForm(1000); или же LoadForm(HelloWorldForm); в вашем исходном коде?
  2. Они могут фактически использоваться файлом, который определяет ресурсы. Если вам когда-нибудь понадобится изменить нумерацию ресурсов (возможно, вы объединяете два проекта, в которых оба использовали 1000 для разных форм), вам нужно будет изменить значение только в одном месте.
Другие вопросы по тегам