Как узнать, изменился ли значок указателя мыши - PullRequest
1 голос
/ 11 декабря 2008

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

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

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

1 Ответ

2 голосов
/ 11 декабря 2008

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

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

...