Шаг 124 - Общие выводы о работе с курсором

Итак, смотрим на картинку ниже.

124_1.gif (4244 b)

Во-первых, курсор - это специального формата картинка, которая может быть как черно белая так и анимированная. У курсора присутствует горячая точка, то есть место на картинке, которое определяется как сам курсор, читайте "Шаг 148 - О горячей точке курсора (Hot Spot)". Некоторое количество курсоров есть в системе, смотрите "Шаг 53 - TranslateMessage()". Если они Вас не устраивают то Вы можете создать свой курсор, это можно сделать как в Visual Studio: "Шаг 371 - Создание курсора в MFC и горячая точка". Так и воспользоваться специальными программами "Шаг 72 - Тренировка - приложение Pr1", "Шаг 122 - о CWinApp", "Шаг 123 - Дальше CWinApp". Курсоры есть двух типов:

Системный курсор определяться настройками Windows читайте "Шаг 25 - Настройка вида курсора". Информация о нем хранится в реестре, читайте "Шаг 26 - Где в реестре хранить информация о курсоре".

У каждого окна может быть свой курсор это обусловлено тем, что у каждого окна есть структура, а в ней поле для курсора читайте "N/A". Раз каждое окно имеет курсора его можно указывать при создании окна или менять в последующем. Разные средства разработки ПО ведут себя по разному, например в VB можно указать свойство формы "Шаг 63 - Курсор формы". В VC++ можно, например, обрабатывать сообщение OnSetCursor, смотрите "N/A". Но как ни странно все эти стандартные средства работают только с черно-белым курсом. Есть единственный способ, который везде работает одинаково и может использовать курсоры любого типа - это смена курсора использованием функции SetClassLong. Этот способ работает к курсорами любых типов и может использоваться в любых программах, которые поддерживают Win32 API. Пример для MFC: "N/A". Для VB: "N/A". При любых действиях с мышью генерируются события мыши, такие как перемещение или нажатие кнопки. Все эти события можно отловить в окне, в них передается координата мыши по отношению к центру координат окна, а вот если Вы хотите вообще получить позицию курсора относительно экрана, то Вам нужно использовать функцию GetCursorPos, читайте "N/A".


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 31.10.2001