簡體   English   中英

win32上的異步鍵盤輸入

[英]Asynchronous keyboard input on win32

我正在使用 Havok 物理引擎的免費版本在 C++ 中的 Windows 7 上創建一個簡單的 3D 游戲。 我想使用 WASD 鍵來移動角色。 代碼的結構使得我需要異步捕獲這個輸入; 在場景的每一幀中都會調用一個 function 來更新角色的 position(我想嘗試檢查當前是否按下了某個鍵,而不是使用某種事件監聽器)。 我四處尋找一個好的解決方案,因為我對 win32 函數知之甚少,並將其放在一起:

if (GetAsyncKeyState(0x41) & 0x8000) posX=-1.0f; //A
if (GetAsyncKeyState(0x44) & 0x8000) posX=1.0f;  //D
if (GetAsyncKeyState(0x57) & 0x8000) posX=1.0f;  //W
if (GetAsyncKeyState(0x53) & 0x8000) posX=-1.0f; //S

在檢查了一些 printf 語句后,可視化調試器似乎沒有接收到任何輸入。 我知道 WM_KEYDOWN 和 WM_KEYUP,但我找不到關於如何使用它們的簡單解釋,而且據我所知,它們比異步更基於事件。

上面的代碼片段有問題,還是我應該嘗試另一種方法?

最佳猜測:您正在檢查“ A ”而不是“ a ”。 當然,除非您同時按住 shift 鍵,否則僅按 a 鍵不會觸發您的代碼。

看來我的問題畢竟不是 GetAsyncKeyState(),而是我使用 FindWindow() 和 GetWindowRect()。 它沒有認識到當前的 window 是可視化調試器。 固定的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM