Поделиться через


TN020. Соглашения именования и нумерации идентификаторов

В этой заметке описываются соглашения об именовании и нумеровании идентификаторов, используемые MFC 2.0 для ресурсов, команд, строк, элементов управления и дочерних окон.

Соглашения об именовании и нумеровании идентификаторов MFC предназначены для удовлетворения следующих требований:

  • Предоставьте согласованный стандарт именования идентификаторов, используемый в библиотеке MFC и приложениях MFC, поддерживаемых редактором ресурсов Visual C++. Это упрощает для программиста интерпретацию типа и происхождения ресурса из его идентификатора.

  • Подчеркнуть сильную связь от 1 до 1 между определенными типами идентификаторов.

  • Соответствуют уже широко используемым стандартам именования идентификаторов в Windows.

  • Секционирование пространства нумерирования идентификаторов. Идентификаторы могут назначаться программистом, MFC, Windows и редактируемыми ресурсами Visual C++. Соответствующая секционирование поможет избежать дублирования идентификаторов.

Соглашение об именовании идентификаторов

В приложении может возникнуть несколько типов идентификаторов. Соглашение об именовании идентификаторов MFC определяет различные префиксы для различных типов ресурсов.

MFC использует префикс "IDR_", чтобы указать идентификатор ресурса, который применяется к нескольким типам ресурсов. Например, для заданного окна фрейма MFC использует тот же префикс "IDR_", чтобы указать меню, акселератор, строку и ресурс значка. В следующей таблице показаны различные префиксы и их использование:

Префикс Использование
IDR_ Для нескольких типов ресурсов (в основном используется для меню, акселераторов и лент).
IDD_ Для ресурсов шаблона диалогового окна (например, IDD_DIALOG1).
IDC_ Для ресурсов курсора.
IDI_ Для ресурсов значков.
IDB_ Для ресурсов растрового изображения.
IDS_ Для строковых ресурсов.

В ресурсе DIALOG MFC следует следующим соглашениям:

Префикс или метка Использование
IDOK, IDCANCEL Для стандартных идентификаторов кнопок.
IDC_ Для других элементов управления диалоговым окном.

Префикс "IDC_" также используется для курсоров. Этот конфликт именования обычно не является проблемой, так как типичное приложение будет иметь несколько курсоров и многие элементы управления диалоговым окном.

В ресурсе меню MFC следует следующим соглашениям:

Префикс Использование
IDM_ Для элементов меню, которые не используют архитектуру команд MFC.
ID_ Для команд меню, использующих архитектуру команд MFC.

Команды, следуйте архитектуре команд MFC, должны иметь обработчик команд ON_COMMAND и может иметь обработчик ON_UPDATE_COMMAND_UI. Если эти обработчики команд следуют архитектуре команд MFC, они будут работать правильно, привязаны ли они к команде меню, кнопке панели инструментов или кнопке диалоговой строки. Тот же префикс "ID_" также используется для строки запроса меню, отображаемой на панели сообщений программы. Большинство элементов меню в приложении должны соответствовать соглашениям о командах MFC. Все стандартные идентификаторы команд (например, ID_FILE_NEW) следуют этому соглашению.

MFC также использует "IDP_" в качестве специализированной формы строк (вместо "IDS_"). Строки с префиксом "IDP_" — это запросы, то есть строки, используемые в полях сообщений. Строки "IDP_" могут содержать "%1" и "%2" в качестве заполнителей строк, определенных программой. Строки "IDP_" обычно содержат темы справки, связанные с ними, и строки "IDS_" не выполняются. Строки "IDP_" всегда локализованы, а строки "IDS_" могут не локализоваться.

Библиотека MFC также использует префикс "IDW_" в качестве специализированной формы идентификаторов элементов управления (вместо "IDC_"). Эти идентификаторы назначаются дочерним окнам, таким как представления и разбиения по классам платформы. Идентификаторы реализации MFC имеют префикс "AFX_".

Соглашение об нумеровании идентификаторов

В следующей таблице перечислены допустимые диапазоны идентификаторов определенных типов. Некоторые из ограничений являются техническими ограничениями реализации, а другие — соглашения, предназначенные для предотвращения столкновения идентификаторов с предопределенными идентификаторами Windows или реализациями по умолчанию MFC.

Настоятельно рекомендуется определить все идентификаторы внутри рекомендуемых диапазонов. Нижний предел этих диапазонов равен 1, так как 0 не используется. Рекомендуется использовать общее соглашение и использовать 100 или 101 в качестве первого идентификатора.

Префикс Тип ресурса Допустимый диапазон
IDR_ несколько 1–0x6FFF
IDD_ диалоговые шаблоны 1–0x6FFF
IDC_,IDI_,IDB_ курсоры, значки, растровые изображения 1–0x6FFF
IDS_, IDP_ Общие строки 1–0x7FFF
ID_ commands 0x8000 через 0xDFFF
IDC_ controls От 8 до 0xDFFF

Причины для этих ограничений диапазона:

  • По соглашению идентификатор 0 не используется.

  • Ограничения реализации Windows ограничивают истинные идентификаторы ресурсов меньше или равно 0x7FFF.

  • Внутренняя платформа MFC резервирует следующие диапазоны:

    • 0x7000 через 0x7FFF (см. afxres.h)

    • 0xE000 через 0xEFFF (см. afxres.h)

    • 16000–18000 (см. afxribbonres.h)

    Эти диапазоны могут измениться в будущих реализациях MFC.

  • Несколько команд системы Windows используют диапазон 0xF000 через 0xFFFF.

  • Идентификаторы элементов управления от 1 до 7 зарезервированы для стандартных элементов управления, таких как IDOK и IDCANCEL.

  • Диапазон 0x8000 через 0xFFFF строк зарезервирован для строк меню для команд.

См. также

Технические примечания по номеру
Технические примечания по категории