2013-11-26 2 views
1

У меня есть окно, которое запрашивает логин/пароль с пятью дочерними окнами:Изменение курсора при наведении дочернего окна

  • редактируемый один: Вход
  • Другой редактируемые один: Пароль
  • кнопку 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); 
} 

Я знаю, что курсор правильно обнаружен (спасибо, точки останова), но он ничего не делает. Курсор остается стрелкой ...

+0

Erf! Мне просто нужно было возвращать (TRUE), 'после установки курсора! ^^ ' Я добавлю ответ, когда пройдут 8 часов! – Asahi

ответ

2

Итак! Как я уже сказал, я понял это! (Я просто не мог ответить на мой вопрос, в течение первых 8 часов!)

Вот что я пропустил: (для тех, кто с той же проблемой)

else if (msg == WM_SETCURSOR) 
{ 
    if ((HWND)wParam == hwndLinkFPasswd || (HWND)wParam == hwndLinkSignUp) 
    { 
     SetCursor(hCursorHand); 
     return(TRUE); 
    } 
} 

Я найти документацию по этому API ужасно, так Надеюсь, мой вклад однажды поможет кому-то в моей ситуации! ;)

Смежные вопросы