HWND Изменить курсор при наведении мыши

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

SetClassLong(hWindow, GCL_HCURSOR, (LONG)LoadCursor (NULL, IDC_CROSS));

Но он применяет курсор к каждому элементу, который совместно использует тот же класс с указанным HWND. Например, в моем случае HWND — это элемент Button, а его класс — «Button», поэтому все кнопки в моем окне будут иметь одинаковый курсор. Как я могу просто изменить курсор на указанный HWND? Что-то вроде этого:

SetHwndCursor(hWindow, GCL_CURSOR, Cursor); //Invented function, just to make the example

Благодарю.

2

Решение

Чтобы показать курсор, отличный от курсора класса по умолчанию, вам нужно обработать WM_SETCURSOR сообщение для окна и вызова SetCursor в ответ на WM_SETCURSOR, Для краткого примера, см. Отображение курсора.

Вам нужно будет создать подкласс для кнопки, чтобы переопределить WndProc кнопки для обработки WM_SETCURSOR, использование SetWindowSubclass создать подкласс окна (а затем удалить подкласс с RemoveWindowSubclass когда кнопка уничтожена, в ответ на WM_NCDESTROYРэймонда Чена Более безопасный подкласс для деталей). SetWindowLongPtr больше не рекомендуется для подклассов Windows.

Спасибо @IInspectable и @JonathanPotter за информацию о SetWindowSubclass,

3

Другие решения

Я достигаю этого, обрабатывая WM_SETCURSOR для рассматриваемого окна и использования SetCursor,

2

По вопросам рекламы [email protected]