我目前正在爲學校創建一個控制檯遊戲,而我在使用GetAsyncKeyState時遇到了麻煩,無法使用我的主菜單。我的主菜單運行在一個無限循環中,只有當一個按鍵被按下時纔會斷開。例如我有:GetAsyncKeyState用cin創建問題
if(GetAsyncKeyState('1'))
{
Play();
break;
}
這個,單獨工作正常。問題是在我的Play()方法中,我有一個cin語句,並且Menu()中的'1'進入我的Play()。我嘗試過cin.clear()無效,並且cin.ignore(...)阻止了從Menu()到Play()的即時更改。有什麼辦法可以防止這種情況發生?在調用之前
用戶在'1'鍵上有她的胳膊肘。當你要求輸入時,你希望顯示什麼?仔細想想,你不能兩面都有。 –
請注意,您正在錯誤地檢查'GetAsyncKeyState'的返回值。但是這裏的問題是,在用戶放開* 1鍵之前,你的程序正在超前。在退出菜單之前,您可能應該等到釋放按鍵。 –
即使您的應用程序沒有焦點,「GetAsyncKeyState」也會讀取鍵盤狀態。您可能想要使用'GetNumberOfConsoleInputEvents'和'ReadConsoleInput'(或舊的conio.h接口)來只讀取控制檯輸入。 – alexisdm