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


Практическое руководство. Управление символами

При создании нового ресурса или объекта ресурса среда разработки назначает ему имя символа по умолчанию, например IDD_DIALOG1. Вы можете использовать окно свойств, чтобы изменить имя символа по умолчанию или изменить имя любого символа, уже связанного с ресурсом.

Для символов, связанных с одним ресурсом, можно также использовать окно "Свойства " для изменения значения символа. Диалоговое окно "Символы ресурсов" можно использовать для изменения значения символов, которые в настоящее время не назначены ресурсу.

Обычно все определения символов сохраняются в Resource.h. Однако может возникнуть необходимость изменить имя этого включаемого файла, чтобы, например, работать с несколькими файлами ресурсов, расположенными в одном каталоге.

Примечание.

Если проект еще не содержит RC-файл, см. статью "Практическое руководство. Создание ресурсов".

Ограничения для имен символов

Существуют следующие ограничения на имена символов.

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

  • Допустимые символы в именах: буквы A-Z, a-z, цифры 0-9 и знаки подчеркивания (_).

  • Имена символов не могут начинаться с числа и ограничены 247 символами.

  • Имена символов не могут содержать пробелы.

  • Имена символов не учитывает регистр, но регистр первого определения символов сохраняется.

    Файл заголовков, который определяет символы, используется как компилятором и редактором ресурсов, так и программами C++, для ссылки на ресурсы, определенные в файле ресурсов. Имена символов, отличающиеся только регистром, программы C++ будут считать разными символами, а компилятор (редактор) ресурсов будет считать, что и то, и другое имя ссылается на один и тот же символ.

Примечание.

Если вы не следуете стандартной схеме имен символов (ID*_[keyword]), описанной ниже, и имя символа будет совпадать с ключевым словом, известным компилятором скрипта ресурсов, попытка создать файл скрипта ресурсов приведет к возникновению случайного создания ошибок, которое трудно диагностировать. Чтобы избежать этого, придерживайтесь стандартной схемы именования.

В именах символов используются описательные префиксы, указывающие на тип ресурса или объект, которые они представляют. Эти описательные префиксы начинаются с сочетания знаков "ID". Библиотека классов Microsoft Foundation (MFC) использует соглашения об именовании символов, показанные в следующей таблице:

Категория Префикс Использование
Ресурсы IDR_, IDD_, IDC_, IDI_, IDB_ Акселератор или меню (и связанные или настраиваемые ресурсы), диалоговое окно, курсор, значок, растровое изображение
Пункты меню ID_ Пункт меню
Команды ID_ Команда
Элементы управления и дочерние окна IDC_ Элемент управления
Строки IDS_ Строки в таблице строк
MFC AFX_ Зарезервировано для предопределенных символов MFC.

Изменение имени символа (идентификатора)

  1. В представлении ресурсов выберите ресурс.

  2. В окне "Свойства" введите новое имя символа или выберите из списка существующих символов в поле идентификатора.

    Если ввести новое имя символа, оно автоматически назначается значение.

Примечание.

Диалоговое окно "Символы ресурсов" можно использовать для изменения имен символов, не назначенных ресурсу.

Ограничения для символьных значений

Значение символа может быть любым целым числом, выраженным обычным образом для #define директив препроцессора. Ниже приведены примеры значений символов.

18
4001
0x0012
-3456

Значения символов для таких ресурсов, как ускорители, растровые изображения, курсоры, диалоговые окна, значки, меню, строковые таблицы и сведения о версии, должны быть десятичными числами в диапазоне от 0 до 32 767, но не могут быть шестнадцатеричными. Значения символов для частей ресурсов (элементов управления диалоговых окон или отдельных строк в таблице строк) могут быть в диапазоне от 0 до 65 534 или в диапазоне от –32 768 до 32 767. Дополнительные сведения о диапазонах чисел см. в разделе TN023: Стандартные ресурсы MFC.

Символы ресурса — это 16-разрядные цифры. Вы можете ввести их как подписанные или неподписанные, однако они используются внутренне в качестве целых чисел без знака, поэтому отрицательные числа будут приведение к соответствующему положительному значению.

Ниже перечислены некоторые ограничения значений символов:

  • Среда разработки Visual Studio и MFC используют определенные диапазоны чисел для специальных целей. Все числа с установленным старшим разрядом (от –32 768 до –1 или от 32 768 до 65 534 в зависимости от знака) зарезервированы MFC.

  • Нельзя определить значение символа с помощью других строк символов. Например, следующее определение символов не поддерживается:

    #define IDC_MYEDIT  IDC_OTHEREDIT  //not supported
    
  • Макросы препроцессора нельзя использовать с аргументами в качестве определений значений. Следующий пример не является допустимым выражением независимо от того, что ID оценивается во время компиляции:

    #define   IDD_ABOUT  ID(7) //not supported
    
  • У приложения может быть существующий файл, содержащий символы, определенные с помощью выражений.

Изменение значения символа

  1. В представлении ресурсов выберите ресурс.

  2. В окне "Свойства" введите имя символа, за которым следует знак равенства и целое число в поле идентификатора, например:

    IDC_EDITNAME=5100
    

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

Изменение или удаление символов

В диалоговом окне "Символы ресурсов" можно изменять или удалять существующие символы, которые еще не назначены ресурсу или объекту.

Изменение неназначенного символа

  1. В поле "Имя" выберите неназначенные символы и нажмите кнопку "Изменить".

  2. Измените имя или значение символа в полях, указанных в диалоговом окне "Изменение символа ".

Примечание.

Чтобы изменить символ, назначенный ресурсу или объекту, необходимо использовать окно редактора ресурсов или свойства .

Удаление неназначенного (неиспользуемого) символа

В диалоговом окне "Символы ресурсов" выберите символ, который требуется удалить, и нажмите кнопку "Удалить".

Примечание.

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

Включение символов

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

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

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

#define   IDC_CONTROL1 2100
#define   IDC_CONTROL2 (IDC_CONTROL1+1)

Среда будет правильно интерпретировать эти вычисляемые символы при соблюдении следующих условий:

  • Вычисляемые символы помещены в файл символов с доступом только для чтения.

  • Файл ресурсов содержит ресурсы, которым уже назначены эти вычисляемые символы.

  • Ожидается числовое выражение.

Примечание.

Если ожидается строковое или числовое выражение, выражение не вычисляется.

Включение общих (только для чтения) символов в файл ресурсов

  1. В представлении ресурсов щелкните правой кнопкой мыши файл RC-файла и выберите "Включает ресурс".

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

    Не вызывайте файл Resource.h, так как это имя файла обычно используется файлом заголовка основного символа.

    Примечание.

    То, что вы вводите в поле директив символов только для чтения, включается в файл ресурсов точно так же, как и введите его. Убедитесь в том, что вводимый текст не содержит орфографических или синтаксических ошибок.

    Используйте поле директив символов только для чтения, чтобы включить файлы только с определениями символов. Не включайте определения ресурсов, а при сохранении файла будут созданы повторяющиеся определения ресурсов.

  3. Поместите символы в указанный файл.

    Символы в файлах, включенных таким образом, оцениваются при каждом открытии файла ресурсов, но они не заменяются на диске при сохранении файла.

  4. Нажмите ОК.

Изменение имени файла символов заголовков ресурсов

  1. В представлении ресурсов щелкните правой кнопкой мыши rc-файл и выберите "Включает ресурс".

  2. В поле заголовка символа введите новое имя для файла включения.

Требования

Win32

См. также

Идентификаторы ресурсов (символы)
Практическое руководство. Создание символов
Стандартные идентификаторы символов