Как узнать, изменился ли значок указателя мыши

StackOverflow https://stackoverflow.com/questions/358527

  •  21-08-2019
  •  | 
  •  

Вопрос

Я пишу приложение для записи экрана для Windows в Delphi 7 и хочу знать, когда указатель мыши меняется в моем приложении (например, с обычного указателя на указатель изменения размера и т. д.).

В настоящее время я рисую указатель мыши на растровом изображении в памяти каждый раз, когда мышь перемещается (и по таймеру), и выполняю попиксельное сравнение его с последним растровым изображением, которое я нарисовал.

Хотя сравнение происходит довольно быстро (около 2-5 мс), поскольку оно происходит так часто (каждое движение мыши), оно складывается.Я считаю, что должен быть более быстрый и менее сложный способ!

Это было полезно?

Решение

У вас есть дескриптор курсора, верно?Если это то же самое значение дескриптора, которое у вас было раньше, то я думаю, разумно предположить, что оно тоже выглядит так же.Если курсор выглядит по-другому, у него будет другое значение дескриптора.

Это, безусловно, должно быть справедливо для стандартных системных курсоров.Если записываемое приложение создает новые курсоры во время работы, то может быть он сможет обновить внешний вид текущего курсора, фактически не создавая новый объект курсора в ОС (и, таким образом, сохраняя то же значение дескриптора), но я не думаю, что это вероятно, тем более что SetCursor завершается немедленно, когда курсор не изменился, и я ожидаю, что функция API также не выполняет графическое сравнение, которого вы пытаетесь избежать.Он просто сравнивает HCursor ценить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top