2011-06-13 130 views
0

我正在寫一個Windows C++應用程序,我想檢測一個按鍵(在這個例子中,使用字母'S')。當按下鍵時,程序應該打開或關閉布爾值(取決於其當前狀態)。使用按鍵來切換布爾

我知道在控制檯應用程序中,您可以使用cin.get,但我不熟悉Win32 API。我也希望確保當按下按鍵時,事件只被註冊一次,即如果用戶按下「S」鍵但按下一段時間,程序應該只檢測到「S」。而不是'SSSSSSS'。

+0

請解釋你爲什麼不希望自動重複工作。這是你正在寫的遊戲嗎? – 2011-06-13 13:43:41

+0

這是我寫的一個科學實驗。我正在嘗試啓用或停用某個活動。我不想不小心讓事件同時打開和關閉,只要按下按鈕一次。 – CaptainProg 2011-06-13 14:30:26

回答

0

所以你有一個Windows消息循環去吧?捕獲WM_KEYDOWN並檢查它是否在自動重複。

但我猜你實際上是在使用一個框架,不管是MFC,QT還是別的。該框架將包裝您的Windows消息循環,並允許您捕獲關鍵事件,但如果您希望我們告訴您如何,您必須說出您正在使用的框架。

+0

也許愚蠢的問題,但我不知道什麼是框架...我如何找出我正在使用?我已經開始了一個工作程序,並正在編輯它... – CaptainProg 2011-06-13 11:56:01

+0

考慮: 1)告訴我們你使用的是什麼編譯器/開發環境。我猜猜其中一個Visual Studio版本,但是哪個? 2)瞭解基礎知識。查看不同項目類型的各種結果(http://msdn.microsoft.com/zh-cn/library/6765tta0(v=vs.71).aspx),並與您的示例項目進行比較。 3)接受超過35%的關於SO的問題的答案。 – 2011-06-13 12:30:47