2013-04-22 183 views
4

我試圖將光標永久更改爲其他光標。永久更改光標

當我這樣做時,我所得到的只是新光標,直到我再次移動光標。

case WM_RBUTTONDOWN: 
     cursor = LoadCursor (NULL, IDC_CROSS) ; 
     SetCursor(cursor); 
     break; 

我如何改變它,這樣它會是永久性的。我知道它是與WNDCLASS ..

當我做出的WndProc窗口我說wndclass.hIcon到IDC_ARROW但我無法在WM_RBUTTONDOWN中調用wndclass ..

任何幫助?

回答

4

每個鼠標移動都會導致WM_SETCURSOR消息被髮送到您的窗口;默認窗口過程將使用配置的光標進行響應。重寫返回你的新光標。

+0

謝謝。這是我期待的答案! =)。 – 2013-04-22 17:30:12

+0

我確實相信Drew Dormann在這種情況下更爲正確。雖然這兩種解決方案都有效,但我確實相信將光標設置爲一次(或者至少「當您執行某些操作時」)是正確的,而不是每次鼠標移動(在我使用的圖形卡上,將光標設置爲不是一項簡單的操作 - 儘管如果您嘗試像以前一樣設置相同的設置,它仍然是「無操作」,但如果不是數千個時鐘週期,只需要下到驅動程序並再次返回即可)。 – 2013-04-22 18:30:34

+0

@MatsPetersson,我不認爲他的答案有效,因爲一旦你離開當前窗口,光標就會自動重置,並且當你移動它時不會恢復。每當你得到它時,你都應該對WM_SETCURSOR做出響應。 – 2013-04-22 18:32:38

3

the documentation for SetCursor:

如果您的應用程序必須設置光標,而它在一個窗口中,確保該類光標指定的窗口的類設置爲NULL。 如果類遊標不是NULL,則系統每次移動鼠標時恢復類遊標。

您需要從窗口類中刪除任何指定的光標。

+0

感謝您的回答! – 2013-04-22 17:30:46