2010-08-24 61 views
0

確定即時將遊標設置在循環中,但是當我移動遊標時,它只是變回原來的樣子。即時通訊使用Win32 API的,我用
SetCursor(LoadCursor(hInstance, MAKEINTRESOURCE(IDC_PROTECTED)));
任何想法C++使用SetCursor設置遊標

回答

2

IIRC的人,你要調用SetCursor以迴應WM_SETCURSOR。如果內存服務,如果窗口類的遊標成員設置爲NULL,則遊標也將保持您設置的內容。

+0

我試過你說的但它沒有工作 – Ramilol 2010-08-24 06:03:11

+0

試過 - 設置類遊標爲NULL,或調用'SetCursor'迴應'WM_SETCURSOR'?在後一種情況下,您還需要從消息處理程序返回「TRUE」。我只是做了一個響應'WM_SETCURSOR'的快速檢查,它工作得非常好。 – 2010-08-24 06:07:17

+0

當我註冊窗口時,我已經將它設置爲我的光標,但是當它運行時,我看到一個小時玻璃光標,而不是當我將它設置爲其他光標時它工作。如果我拿出WM_CURSOR第一個光標的作品,但第二不留 – Ramilol 2010-08-24 06:15:55

0

是。它正在被DefWindowProc()改變。

如果你想有一個不同的遊標移到窗口,使用SetClassLong(),或改變WNDCLASS的HCURSOR領域調用的RegisterClass的時候,如果你是誰調用它youself

+0

即時更改光標不當程序啓動時事件發生 – Ramilol 2010-08-24 06:03:46

+0

@Ramiz:這與建議調用SetClassLong()相矛盾? (實際上,你想要'SetClassLongPtr(GCLP_HCURSOR)'爲64位compat,但這是一個細節) – MSalters 2010-08-24 06:37:16

0

可能你可以在WM_MOUSEMOVE中嘗試setcursor。

+0

非常糟糕的建議,在效率(筆記本電池電量等)方面。 – 2010-08-24 07:27:43