- что такое
- некоторая бинарная информация, которую можно добавить к exe-файлу
- бывают стандартные
- иконки, курсоры, меню и т.д.
- как грузить
FindResource -> LoadResource -> LockResource
- основные типы ресурсов
- курсоры
CreateCursor // создать свой курсор во время работы программы
LoadCursor // загрузить курсор из ресурсов или системный
LoadCursorFromFile // название говорит само за себя (файл должен быть .CUR или .ANI)
(Get)SetCursor // устанавливает свой курсор, работает только есл икурсор либо в клиентской части, либо Captured
(Get)ClipCursor // задает область, в которой курсор может двигаться
(Get)SetCursorPos // управляет положением курсора
DestroyCursor
- иконки
CreateIcon // создать иконку во время работы прогграммы
LoadIcon // загрузить иконку стандартную или из определенного модуля
DestroyIcon
- меню
- схема
- есть основная панель (на ней отображатся пункты)
- есть пункты, это обычно выпадающие менюшки
- элементы выпдаающих могут быть командами или также еще выпадающими менюшками
- также вып
HMENU CreateMenu( void ) // создать пустую панель меню
HMENU CreatePopupMenu( void ) // создать пустое выпадающее меню
BOOL TrackPopupMenuEx( // отображает выпадающее меню (при помощи этогоможно сделать конекстное меню)
HMENU, // меню, которое нужно отобразить
fuFlags, // куча флагов отображений (x,y задают координаты лево парво верх вниз центр, какими кнопками можно выбирать пункты, анимации, отсылать или сообщения родителю)
int x, int y, // координаты меню
HWND, // хэндл кона, которое получает соощения от этого меню (если не утановлен блокирующий флаг)
LPTPMPARAMS) // указатель на спец. структуру ( правда там всего одно поле, какой прямоугольник не включать)
BOOL SetMenu( HWND, HMENU ) // установить у HWND окна HMENU меню !!WARNING!! она не удаляет старое меню (просто не отображает)
BOOL InsertMenuItem( // добавить новый итем в меню
HMENU, // хэндл в меню
UINT uItem, // либо идшник меню, либо позиция
BOOL fByPosition, // параметр, различающий что выше передавался айдишник или позиция
LPCMENUITEMINFO lpmii) // указатель на структуру
typedef struct tagMENUITEMINFO {
UINT cbSize;
UINT fMask; // какие папрамтеры структуры учитывать при
UINT fType; // тип пункта, может быть барьером, просто меню, битмапой
UINT fState; // текущее состояние (checked/unchecked/enabled/highlited)
UINT wID; //
HMENU hSubMenu;
HBITMAP hbmpChecked;
HBITMAP hbmpUnchecked;
ULONG_PTR dwItemData;
LPTSTR dwTypeData;
UINT cch;
HBITMAP hbmpItem;
} MENUITEMINFO, *LPMENUITEMINFO;
BOOL S(GeT)etMenuItemInfo(
HMENU,
UINT uItem,
BOOL fByPosition,
LPMENUITEMINFO )
DrawMenuBar( HWND ) // перерисовывает меню у окна
LoadMenu( HINSTANCE, LPCTSTR lpMenuName ) // загрузить меню
DestroyMenu( HMENU ) //
- строковые таблицы
LoadString( HINSTANCE, UINT uID, LPTSTR lpBuffer, nBufferMax ) // загрузка строки
- ускорители
LoadAccelerators( hInstance, lpTableName )
DestroyAcceleratorTable( HACCEL )
- версия
- вроде явно грузить и не надо
- строковые и числовые идентификаторы ресурсов
- есть строковые, они прописаные в RC_файле
- есть числовые, обычно, есть хжер ресурсов, который содержит айдишники и их значения
- добавление custom ресурса
- создать .rc файл и
- добавить свой rc файл в Compile-Time directives