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 строк зарезервирован для строк меню для команд.
См. также
Технические примечания по номеру
Технические примечания по категории