2013-11-26 38 views
1

我有一個用於登錄/密碼有五個子窗口問了一個窗口:更改光標懸停一個子窗口時

  • 可編輯的一個:登錄
  • 另一個編輯之一:密碼
  • OK按鈕
  • A「忘記密碼」一個
  • 還有一個「註冊」一個。

基本上,當您點擊最後兩個中的任何一個時,就會將您發送到可以執行相應操作的網站。

這一切都很好,但我很想知道如果鼠標光標懸停在兩個鏈接中的某一個上,如何檢查(我猜測有消息),並且如果是這種情況,請將其更改爲一個手形光標。

我特別想知道如何檢測它!我可以弄清楚如何用SetCursor等改變光標!

編輯:我實際上發現WM_SETCURSOR是一個非常容易處理的消息。基本上,你檢查wParam是否等於它懸停在其上的子窗口的句柄,並且瞧!

但我實際上發現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可怕的文件,所以我希望我的貢獻總有一天會幫助我的人! ;)