Учебное пособие: Подклассы окон

LPVOID LockResource( hGlobResource );

и после доступа к данным разрешить его перемещение:

BOOL UnlockResource( hGlobResource );

(Это не отдельная процедура, а обычный GlobalUnlock). После использования ресурса его можно удалить с помощью процедуры:

BOOL FreeResource( hGlobResource );

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

ACCELERATORS – таблица акселераторов клавиатуры; для загрузки применяется функция

HACCEL LoadAccelerators( hInstance, lpszAccName );

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

HBITMAP LoadBitmap( hInstance, lpszBitmapName );

CURSOR – ресурс, представляющий курсор мыши для загрузки применяется функция

HCURSOR LoadCursor( hInstance, lpszCursorName );

DIALOG – диалог с ресурсами типа DIALOG и с самими диалогами мы разберемся позже.

FONT – включение шрифтового ресурса о применении шрифтов мы говорили ранее. Включать ресурс этого типа в Ваше приложение следует специфическим способом, существенно отличающимся от остальных ресурсов.

ICON – иконка для загрузки применяется функция

HICON LoadIcon( hInstance, lpszIconName );

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

HMENU LoadMenu( hInstance, lpszMenuName );

STRINGTABLE – таблица строк ресурс этого типа вообще не загружается целиком. Он представляет собой таблицу строк, имеющих идентификаторы, и обеспечивает доступ к конкретной строке по ее идентификатору. Реально ресурсу этого типа соответствует не блок данных в памяти, а, может быть, несколько - для каждых 16 строк (по порядку номеров) выделяется отдельный блок. Приложение может содержать только один ресурс этого типа, поэтому при описании таблицы строк в файле описания ресурсов ее имя не указывается - указывается только тип этого ресурса. Для доступа к строкам применяется функция

int LoadString( hInstance, idString, lpszBuff, nmaxCount );

Мы достаточно близко познакомились с ресурсами типа BITMAP и FONT; практически можно считать что мы знакомы и с ресурсами типа CURSOR и ICON, так как они описываются так‑же, как и BITMAP. Сейчас нам надо лучше разобраться с тремя новыми типами – ACCELERARTORS, MENU и DIALOG.


Акселераторы

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

Точнее, акселераторы генерируют только сообщение WM_COMMAND, указывая более подробную информацию в параметрах этого сообщения. Параметр wPar сообщения содержит идентификатор, назначенный клавише, а параметр lPar всегда равен 0x00010000L.

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

AccName ACCELERATORS [load-opt] [mem-opt]

BEGIN

key, id [, type] [, options]

...

К-во Просмотров: 583
Бесплатно скачать Учебное пособие: Подклассы окон