我剛開始MFC編程,並沒有做過任何UI設計或編程。我想知道爲什麼有兩個消息WM_KEYUP和WM_KEYDOWN由Windows生成時,每按下一個鍵肯定會被釋放假設一個工作的鍵盤。爲什麼我們有兩條消息WM_KEYUP和WM_KEYDOWN
我認爲只有一個消息WM_KEYPRESSED或別的東西就足夠了,但有一個原因窗口生成單獨的郵件
感謝
我剛開始MFC編程,並沒有做過任何UI設計或編程。我想知道爲什麼有兩個消息WM_KEYUP和WM_KEYDOWN由Windows生成時,每按下一個鍵肯定會被釋放假設一個工作的鍵盤。爲什麼我們有兩條消息WM_KEYUP和WM_KEYDOWN
我認爲只有一個消息WM_KEYPRESSED或別的東西就足夠了,但有一個原因窗口生成單獨的郵件
感謝
這樣就可以實現組合鍵,像移動和控制。 對於大多數按鍵,您可以忽略WM_KEYUP
,但如果 問題中的按鍵應該修改任何按下時按下的按鍵,但您需要同時按兩下這兩個按鍵。
我曾經問過相同的問題,但答案很簡單。這些只是兩個獨立的事件,Windows讓你也有機會作出迴應。 KEY_DOWN或KEY_UP沒有什麼特別之處,都只是事件。對於大多數需求來說,處理KEY_DOWN通常更有意義,但確定WM_KEYUP
有很多用途。窗口生成的許多消息通常是程序員無法處理的。
假設你想通過在遊戲中按W來向前走並按住WM_KEYPRESSED的解決方案將不起作用。它需要WM_KEYDOWN來啓動前進的「狀態」和WM_KEYUP來停止它。 – Borgleader 2014-10-07 15:11:43
不要忘記,keystoke消息也有一個重複計數器,因此,當您按住某個鍵時,每次都會使用遞增的計數器重複按鍵消息。因此,您可以轉到每個重複消息的下一步。 – 2014-10-07 16:54:33