Ресурсы. Файл описания ресурса, страница 5

ФункцииListResourceTypes иWndProc в ENUMRTYP.C

 

cm.    \local-sources\chap07\07-05.txt

 

FindResource                                       • Windows 98   • Windows 2000

 

Описание

Ресурс можно загрузить в память для использования только после того, как он будет найден. Функция FindResource находит ресурс с данным именем в данном модуле и возвращает дескриптор ресурса. Эта функция применяется в сочетании с функцией LoadResource для загрузки ресурсов в память и дальнейшего их использования.

 

Синтаксис

HRSRC FindResource( HMODULE hModule, LPCTSTR IpszName, LPCTSTR IpszType )

 

Параметры

 

hModule

HMODULE. Дескриптор экземпляра модуля, который содержит ресурс. Это может быть приложение или динамически загружаемая библиотека (DLL). Должен быть установлен в NULL для текущего приложения.

 

IpszName

LPCTSTR. Указатель на символьную строку с нулевым символом в конце, содержащую имя ресурса. Это — имя, указанное слева от строки определения ресурса в файле ресурса (RC). Для целочисленных идентификаторов ресурса применяется макрокоманда MAKEINTRESOURCE.

 

IpszType

LPCTSTR. Указатель на строку с нулевым символом в конце, содержащую тип ресурса, который должен быть найден. Для стандартных типов ресурса этот параметр может иметь одно из значений, приведенных в табл. 7.2, за исключением RT_VXD.

 

Возвращаемое значение

HRSRC. Дескриптор ресурса в файле ресурса. NULL, если ресурс не мог быть найден. Этот дескриптор отличен от дескриптора памяти загруженного ресурса. Для получения дескриптора памяти применяется функция LoadResource.

 

Включаемый файл

winbase.h

 

См. также

FindResourceEx, LoadResource

 

Пример

В следующем примере выполняется поиск ресурса типа RCDATA с помощью функции  FindResource, а затем его загрузка с помощью функции LoadResource. Идентификатором ресурса типа RCDATA, определенного в файле описания ресурса приложения, является "TestData". Для доступа к памяти, распределенной для этого ресурса, применяется структура RESDATA

Данные ресурса в файле описания ресурса

TestData   RCDATA  DISCARDABLE BEGIN 0x0001, 0x0002, 0x0003 END

Структура данных в файле заголовка

typedef   struct

{ SHORT  Valuel; SHORT   Value2; SHORT  Value3; }    RESDATA;

Функция WndProc

cm.    \local-sources\chap07\07-06. txt

FindResourceEx                                    • Windows 98   • Windows 2000

Описание

Система Windows поддерживает многоязычные ресурсы, позволяя поставлять приложение во многие страны. Функция FindResourceEx аналогична функции FindResource, за исключением того, что она выполняет поиск ресурсов только для указанного языка.

Синтаксис

HRSRC FindResourceEx( HMODULE hModule, LPCTSTR IpszType, LPCTSTR IpszName, WORD wLanguage )

Параметры

hModule

HMODULE. Дескриптор экземпляра модуля, который содержит ресурс. Это может быть приложение или динамически загружаемая библиотека (DLL). Должен быть установлен в NULL для текущего приложения.

IpszType

LPCTSTR. Указатель на строку с нулевым символом в конце, содержащую тип ресурса, который должен быть найден. Для стандартных типов ресурса этот параметр может иметь одно из значений, перечисленных в табл. 7.2, за исключением RT_VXD.

IpszName

LPCTSTR. Указатель на символьную строку с нулевым символом в конце, содержащую имя ресурса.

wLanguage

WORD. Указывает язык ресурса. Если параметр wLanguageимеет значение MAKELANGID (LANG_NEUTRAL, SUBLANG_NEUTRAL), используется текущий язык, связанный с вызывающей нитью. При указании языка, отличного от текущего, используется макрокоманда MAKELANGID для создания этого параметра на основе значений, перечисленных в описании функции EnumResourceLanguages.

Возвращаемое значение

HRSRC. Дескриптор ресурса в файле ресурса. NULL, если ресурс не найден.

 

Включаемый файл

winbase.h

 

См. также

FindResource, LoadResource

 

Пример

См. пример для функции EnumResourceLanguages.

 

LoadResource                                      * Windows 98   *  Windows 2000

 

Описание

Данные ресурса должны быть загружены в память, прежде чем их можно будет использовать. Функция LoadResource загружает ресурс, который был найден с использованием функции FindResource или FindResourceEx.

 

Синтаксис

HGLOBAL LoadResource( HMODULE hModule, HRSRC hResInfo )

 

Параметры

 

hModule

HMODULE. Дескриптор экземпляра модуля, который содержит загружаемый ресурс. Если этот параметр имеет значение NULL, ресурс загружается из модуля, который использовался щ\я создания текущего процесса.

 

liResInfo

HRSRC. Дескриптор ресурса, который будет загружен. Этот дескриптор должен быть создан с использованием функции FindResource или FindResourceEx.

 

Возвращаемое значение

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

 

Включаемый файл

winbase.h

 

См. также

FindResource, FindResourceEx, LockResource

 

Пример

См. примеры для функций FindResource и EnumResourceLanguages.

 

LoadString                                        •  Windows 98   •  Windows 2000

 

Описание

Строки в файле ресурса программы размещаются в виде таблицы строк. Каждая строка получает идентификационное значение, которое обычно определено в файле заголовка программы. Функция LoadString копирует строку из файла ресурса в буфер, чтобы с ней можно было выполнить необходимые действия и отобразить. Наилучшим местом хранения строковых констант являются файлы ресурсов. Этот метод хранения позволяет экономить память и в значительной степени упрощает редактирование или перевод строк на другие языки.

 

Синтаксис

int LoadString( HINSTANCE hinst, UINT uID, LPTSTR IpBuffer, int nBuffer )

 

Параметры

 

hinst

HINSTANCE. Дескриптор экземпляра модуля, который содержит ресурс строки.

 

иШ

UINT. Идентификационное значение для строки в таблице строк. Этот параметр обозначает позицию слева от строки в файле ресурса.

 

IpBuffer

LPTSTR. Указатель на буфер, который примет символьную строку. Буфер должен иметь длину не менее nBuffer символов типа TCHAR.

 

nBuffer

int. Максимальное число символов типа TCHAR, которые должны быть скопированы в буфер IpBuffer.

 

Возвращаемое значение

int. Число символов типа TCHAR, скопированных в буфер, без учета нулевого символа, обозначающего конец строки. В случае ошибки возвращаемое значение — 0.

 

Включаемый файл

winuser.h

 

См. также

LoadResource

 

Пример

В следующем примере таблица строк применяется для создания массива строк, доступ к которым может быть получен с помощью функции LoadString. При выборе пункта меню Test! загружается каждая из строк таблицы строк и отображается в окне сообщения.

 

Данные ресурса в файле описания ресурса

 

STRINGTABLE BEGIN IDS_STRINGBASE+0         "This   is   String   1" IDS_STRINGBASE+1         "This   is   String   2" IDS  STRINGBASE+2         "This   is   String   3" END

 

Функция WndProc

 

cm.    \local-sources\chap07\07-07. txt

 

LockResource                                       + Windows 98   *  Windows 2000

 

Описание

Функция LockResource блокирует ресурс, загруженный в память с помощью функции LoadResource, и возвращает указатель на адрес соответствующего блока памяти. В приложениях на основе Win32 нет необходимости разблокировать ресурсы, заблокированные с помощью функции LockResource. Попытка заблокировать ресурс с помощью дескриптора, возвращенного функцией FindResource или FindResourceEx, окажется неудачной и будет возвращено значение, которое является недействительным и указывает на случайные данные.

 

Синтаксис

LPVOID LockResource( HGLOBAL hglb )

 

Параметры

 

hglb

HGLOBAL. Дескриптор ресурса, который должен быть заблокирован. Этот дескриптор возвращает функция LoadResource.

 

Возвращаемое значение

LPVOID. В случае успешного выполнения — указатель на первый байт ресурса; в ином случае возвращаемое значение — NULL.

 

Включаемый файл

winbase.h

 

См. также

LoadResource, FindResource

 

Пример

См. примеры для функций FindResource и EnumResourceLanguages.

 

SizeofResource                                    • Windows 98   • Windows 2000

 

Описание

Функция SizeofResource возвращает размер указанного ресурса в байтах. Поскольку может быть выполнено выравнивание данных по некоторой границе, это значение может не отображать действительный размер, и на него не следует полагаться. Эта функция применялась с функциями AllocResource

 

и AccessResource, которые в Win32 являются устаревшими. Однако она используется для оценки размера ресурса, найденного с помощью функции FindResource или FindResourceEx.

 

Синтаксис

DWORD SizeofResource( HMODULE hModule, HRSRC hrsrc )

 

Параметры

 

hModule

HMODULE. Дескриптор экземпляра модуля, который содержит ресурс.

 

hrsrc

HRSRC. Дескриптор ресурса, который был возвращен функцией  Find-Resource или FindResourceEx.

 

Возвращаемое значение

DWORD. В случае успешного выполнения — число байтов в ресурсе; в ином случае — 0.

 

Включаемый файл

winbase.li

 

См. также

FindResource, FindResourceEx

 

Пример

См. пример для функции FindResource.