Получение идентификатора произвольных данных из ресурсов приложения - трехступенчатый процесс. Вначале с помощью функции FindResource необходимо определить расположение ресурса в файле приложения:
HRSRC WINAPI FindResource(HINSTANCE hInst, LPCSTR lpszName, LPCSTR lpszType);
Параметр hInst является идентификатором модуля, содержащего ресурс. Для извлечения ресурса из приложения вы должны указать его идентификатор, передаваемый функции WinMain через параметр hInstance.
Параметр lpszName должен содержать адрес имени ресурса. Для загрузки произвольных данных в качестве этого параметра следует передать указатель на строку, содержащую идентификатор ресурса. В приведенном выше примере используется идентификатор "Hello".
Параметр lpszType - адрес строки, содержащий тип ресурса. Для нашего примера это должна быть строка "SOUND".
Таким образом, поиск ресурса, описанного как
Hello SOUND hello.wav
должен выполняться следующим образом:
HRSRC hRsrc; hRsrc = FindResource(hInstance, "Hello", "SOUND");
Функции FindResource в качестве третьего параметра можно передавать идентификаторы предопределенных типов ресурсов, список которых приведен ниже (некоторые из перечисленных типов ресурсов вам пока незнакомы, мы расскажем о них позже).
Идентификатор ресурса | Название ресурса |
RT_ACCELERATOR | Таблица акселераторов |
RT_BITMAP | Изображение bitmap |
RT_CURSOR | Курсор |
RT_DIALOG | Диалоговая панель |
RT_FONT | Шрифт |
RT_FONTDIR | Каталог шрифтов |
RT_ICON | Пиктограмма |
RT_MENU | Меню |
RT_RCDATA | Произвольные данные |
RT_STRING | Таблица строк |
Вы можете использовать функцию FindResource для загрузки таких ресурсов, как пиктограммы или курсоры, указав ей тип ресурса, соответственно, RT_ICON или RT_CURSOR. Однако в документации к SDK сказано, что загрузку предопределенных ресурсов, таких как пиктограммы и курсоры, следует выполнять специально предназначенными для этого функциями (LoadIcon, LoadCursor и т. д.).
На втором этапе, после того как ресурс найден, его следует загрузить, вызвав функцию LoadResource: