2008-12-11 4 views
1

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

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

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

ответ

2

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

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

+0

Действительно, вы, кажется, правы, приветствия! :) – CodeAndCats 2008-12-11 07:04:16