2011-06-20 135 views
2

我試圖隱藏鼠標光標使用win32 API ShowCursor(FALSE),但在多屏幕設置時鼠標到達另一個屏幕我沒有得到任何鼠標更新在Windows中,反正有我可以防止這個?在多屏幕設置中隱藏鼠標光標

這是一個全屏視頻遊戲,我似乎沒有找到任何可以做這樣的事情的Windows API。

回答

1

從我的理解,你的問題不是隱藏鼠標光標,而是限制它到你的窗口?

在這種情況下,ClipCursor函數應該完成這項工作。

{ 
    RECT windowRect; 
    GetWindowRect(hWnd, &windowRect); 
    ClipCursor(&windowRect); 
} 

對於無邊框全屏窗口,應該沒問題。如果窗口的位置或大小發生變化或窗口失去焦點,則需要重複該步驟。

對於遊戲編程,儘管可能有更好的方法,例如DirectInput,它提供了獨有的鼠標處理模式(tutorials可用),並在較低級別上爲您執行所有操作。

有一些關於處理這個問題的不同方法的討論,例如this one on the MSDN forums

另一方面,如果您希望光標能夠離開窗口,並且只在窗口上方隱藏光標,則應該處理WM_SETCURSOR消息並使用SetCursor來隱藏光標。

case WM_SETCURSOR: 
    SetCursor(NULL); 
    return TRUE;