Для чего используются макросы в resource.h?

Когда файл ресурсов создается в Visual Studio, среда IDE автоматически создает файл заголовка с именем resource.h со следующим текстом:

//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by BackupRestore.rc

// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        101
#define _APS_NEXT_COMMAND_VALUE         40001
#define _APS_NEXT_CONTROL_VALUE         1001
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif

Как вы видите, он комментирует и говорит, что они являются «значениями по умолчанию для новых объектов». Что именно это означает? По умолчанию на них есть ссылки, и если нет, то где они будут использоваться? Я пытаюсь создать проект с минимальным количеством кода и файлов и проверил удаление файла resource.h, и решение, кажется, прекрасно работает без него, поэтому мне интересно, действительно ли это важно или удаление приведет к будущему проблемы.

В итоге:
Для чего используется файл resource.h и его содержимое?
Определенные макросы используются в другом месте по умолчанию?
Когда программист может ссылаться на них / использовать их в коде, если вообще?
Являются ли они существенными и будут ли устранять их в будущем?

Заранее спасибо — пожалуйста, знайте, что я очень новичок в C ++ и макросах.

2

Решение

От документация

_APS_NEXT_RESOURCE_VALUE это следующее значение символа, которое будет использоваться для ресурса диалога, ресурса меню и т. д. Допустимый диапазон значений символа ресурса 1 в 0x6FFF,

_APS_NEXT_COMMAND_VALUE это следующее значение символа, которое будет использоваться для идентификации команды. Допустимый диапазон значений символов команды 0x8000 в 0xDFFF,

_APS_NEXT_CONTROL_VALUE это следующее значение символа, которое будет использоваться для диалогового элемента управления. Допустимый диапазон значений символов диалогового окна: 8 в 0xDFFF,

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

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

Если бы вы определили идентификатор ресурса, это должно быть меньшее значение _APS_NEXT без разницы. Например, в вашем resource.h ты можешь иметь

#define IDC_SOME_RADIO_BUTTON    1056

Тогда позже вам придется обновить

#define _APS_NEXT_CONTROL_VALUE       1057

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

void HandleRadioButtion()
{
// do something important
}

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

BEGIN_MESSAGE_MAP(SomeDlg, CDialog)
ON_BN_CLICKED(IDC_SOME_RADIO_BUTTON, HandleRadioButton)
END_MESSAGE_MAP()
5

Другие решения

Эти макросы только для IDE. Сам код нигде не ссылается на них.

Чтобы создать минимальные файлы ресурсов, вы можете пропустить использование среды IDE для создания своих ресурсов и вместо этого записать их с нуля (как текстовые файлы). Действительно, так было сделано до того, как IDE включили всю эту автоматизацию. Формат файла ресурсов задокументировано в MSDN.

1

По вопросам рекламы [email protected]