2013-10-27 60 views
0

目前我只使用WM_MOUSEMOVE消息,但它將鼠標移動限制爲最大分辨率。那麼用Win32捕獲鼠標的最佳方式是什麼(在OpenGl窗口中)?我不想使用freeglut或任何額外的庫。捕獲鼠標在win32/Opengl中的移動

回答

2

對於遊戲和實時DirectInput是非常合適的,它適度難以使用。

不是核心的Win32 API,獲取輸入的方式WINAPI要麼是GetCursorPos/SetCursorPos通過自己的更新循環驅動,所以您查詢,並用自己的頻率復位。

SetCapture然後在WM_MOUSEMOVE上撥打SetCursorPos。 設置光標pos的要點是爲移動留出空間,以便您可以獲得增量,即自上次更新以來光標移動的量,然後將光標放回窗口中心。

0

如果你希望能夠捕捉到鼠標事件鼠標已存在的窗口後,那麼你可能要考慮的SetCapture功能

如果你的問題是,你想使一個FPS遊戲,你希望您的角色能夠以連續運動旋轉,然後您希望在每次鼠標移動事件後將鼠標位置設置爲窗口中心,並根據鼠標移動事件時光標位置的差異來處理輸入被解僱和屏幕的中心。要設置鼠標的位置,您可以使用SetCursorPos函數。