Изменение внешнего вида курсора мыши
В предыдущем приложении мы изменяли пиктограмму курсора мыши, когда он находился над поверхностью окна Client Window . Процедура изменения пиктограммы очень проста - в момент обработки сообщения WM_MOUSEMOVE нужно получить идентификатор нужной пиктограммы и передать его функции WinSetPointer .
Вы можете загрузить идентификатор пиктограммы из ресурсов приложения с помощью функции WinLoadPointer , передав ей в качестве последнего параметра идентификатор курсора мыши, с которым этот курсор определен в файле описания ресурсов приложения, например:
HPOINTER hptr; hptr = WinLoadPointer(HWND_DESKTOP, NULLHANDLE, ID_APP_POINTER);
Здесь подразумевается, что файл описания ресурсов приложения содержит строку вида:
POINTER ID_APP_POINTER MOUSEMOV.PTR
В файле MOUSEMOV.PTR находится изображение курсора мыши, подготовленное приложением Icon Editor . С помощью этого приложения вы можете создавать не только пиктограммы, но и курсоры мыши.
В системе Presentation Manager имеется также набор встроенных изображений курсора мыши, который также доступен для вашего приложения. Получить идентификатор одного из таких курсоров можно с помощью функции WinQuerySysPointer :
hptr = WinQuerySysPointer (HWND_DESKTOP, SPTR_ICONINFORMATION, FALSE);
Идентификатор встроенного курсора передается этой функции через второй параметр. Третий параметр определяет, надо ли копировать курсор для приложения (значение FALSE) либо достаточно просто вернуть идентификатор встроенного курсора (значение TRUE). В первом случае перед завершением приложение должно удалить копию встроенного курсора, передав соответствующий идентификатор фукнции WinDestroyPointer через ее единственный параметр.
Получив идентификатор курсора мыши, вы можете изменить форму курсора при помощи функции WinSetPointer , вызвав ее при обработке сообщения WM_MOUSEMOVE :
WinSetPointer (HWND_DESKTOP, hptr);
Ниже мы приведем список всроенных идентификаторов курсора мыши вместе с кратким описанием и соответствующим изображением:
Идентификатор | Описание | Изображение курсора мыши |
SPTR_ARROW | Стандартный курсор | |
SPTR_TEXT | Текстовый курсор, используется при редакторовании текста | |
SPTR_WAIT | Курсор в виде часов, используется для режима, в котором пользователь должен ждать завершение какой-либо длительной операции | |
SPTR_MOVE | Курсор для перемещения объекта | |
SPTR_SIZENWSE | Курсор для одновременного изменения размеров окна по вертикали и горизонтали | |
SPTR_SIZENESW | Аналогично предыдущему, но с другим направлением стрелки | |
SPTR_SIZEWE | Курсор для изменения ширины окна | |
SPTR_SIZENS | Курсор для изменения высоты окна |
С помощью функции WinQuerySysPointer вы также можете получить идентификаторы встроенных пиктограмм, которые также можно использовать для установки курсора мыши:
Идентификатор | Описание | Изображение пиктограммы |
SPTR_APPICON | Пиктограмма приложения | |
SPTR_ICONINFORMATION | Информационное сообщение | |
SPTR_ICONQUESTION | Запрос информации от пользователя | |
SPTR_ICONERROR | Сообщение об ошибке | |
SPTR_ICONWARNING | Предупреждающее сообщение | |
SPTR_ILLEGAL | Запрещенные действия | |
SPTR_FILE | Файл | |
SPTR_MULTFILE | Группа файлов | |
SPTR_FOLDER | Папка | |
SPTR_PROGRAM | Программа |