У меня есть окно, которое запрашивает логин/пароль с пятью дочерними окнами:Изменение курсора при наведении дочернего окна
- редактируемый один: Вход
- Другой редактируемые один: Пароль
- кнопку OK
- «Забыл свой пароль» один
- И «Регистрация».
В принципе, когда вы нажимаете на любое из двух последних, вы отправляетесь на сайт, где вы можете выполнить соответствующие действия.
Все отлично и денди, но я хотел бы знать, как можно проверить (с сообщениями, которые, как я полагаю), если курсор мыши висит над одной из двух ссылок, и если это так, ручной курсор.
Мне особенно хотелось бы узнать, как его обнаружить! Я могу понять, как изменить курсор после SetCursor и так далее!
EDIT: Я действительно узнал, что WM_SETCURSOR - это очень легкое сообщение для обработки. В основном, вы проверяете, равен ли wParam дескриптору дочернего окна, над которым он витает и voilà!
Но я действительно нахожу, что SetCursor
будет большой проблемой.
Вот что я сделал:
Декларация моих курсоров:
static HCURSOR hCursorHand;
static HCURSOR hCursorArrow;
Значение устанавливается здесь (в ручке для WM_CREATE):
hCursorHand = LoadCursor(NULL, IDC_HAND);
hCursorArrow = LoadCursor(NULL, IDC_ARROW);
А вот где я установите его:
else if (msg == WM_SETCURSOR)
{
if ((HWND)wParam == hwndLinkFPasswd || (HWND)wParam == hwndLinkSignUp)
SetCursor(hCursorHand);
else
SetCursor(hCursorArrow);
}
Я знаю, что курсор правильно обнаружен (спасибо, точки останова), но он ничего не делает. Курсор остается стрелкой ...
Erf! Мне просто нужно было возвращать (TRUE), 'после установки курсора! ^^ ' Я добавлю ответ, когда пройдут 8 часов! – Asahi