Включение курсора в файл описания ресурсов
Для включения курсора в файл описания ресурсов используется оператор CURSOR, аналогичный оператору ICON:
CursorID CURSOR [параметры загрузки] [тип памяти] имя файла
В качестве параметров загрузки можно указывать значения PRELOAD или LOADONCALL (используется по умолчанию). Ресурс с параметром загрузки LOADONCALL загружается в память при обращении к нему со стороны приложения. Ресурс типа PRELOAD загружается сразу после запуска приложения.
Тип памяти, выделяемой при загрузки ресурса, может быть FIXED или MOVEABLE. Дополнительно для ресурсов типа можно указать MOVEABLE тип DISCARDABLE. Если указан тип FIXED, ресурс будет находиться в памяти по постоянному адресу. Ресурс типа MOVEABLE может перемещаться Windows при необходимости уплотнения памяти. Если для перемещаемого ресурса указан тип DISCARDABLE, Windows может забрать у приложения память, выделенную для ресурса. Если ресурс потребуется приложению, Windows загрузит его повторно из exe-файла приложения.
В качестве имени файла необходимо указать имя файла, подготовленного с помощью приложения Resource Workshop или аналогичного и содержащего курсор, например:
AppCursor CURSOR mycursor.cur
Идентификатор курсора CursorID можно указывать как символическое имя (см. предыдущую строку) или как целое число - идентификатор ресурса:
789 CURSOR custom.cur
После сборки проекта файл курсора будет вставлен в исполняемый файл приложения Windows.
Для загрузки курсора следует использовать функцию LoadCursor:
HCURSOR WINAPI LoadCursor(HINSTANCE hInst, LPCSTR lpszCursor);
Для загрузки нового курсора из ресурсов приложения в качестве параметра hInst необходимо указать идентификатор приложения, полученный через параметр hInstance функции WinMain. Параметр lpszCursor должен при этом указывать на идентификатор ресурса.
Если в файле описания ресурсов идентификатор ресурса представлен символьной строкой, адрес этой строки необходимо указать в параметре lpszCursor:
HCURSOR hCustomCursor; hCustomCursor = LoadCursor(hInstance, "AppCursor");
Если же в качестве идентификатора ресурса-курсора использовано целое число, следует использовать макрокоманду MAKEINTRESOURCE:
HCURSOR hCustomCursor; hCustomCursor = LoadCursor(hInstance, MAKEINTRESOURCE(789));