C++ 为什么我们有两个消息WM_KEYUP和WM_KEYDOWN

C++ 为什么我们有两个消息WM_KEYUP和WM_KEYDOWN,c++,windows,visual-c++,mfc,keyboard,C++,Windows,Visual C++,Mfc,Keyboard,我刚刚开始MFC编程,以前没有做过任何UI设计或编程。我想知道为什么windows会生成两条消息WM_KEYUP和WM_KEYDOWN,而每个被按下的键都会在键盘正常工作的情况下被释放 我认为只有一条消息WM_KEYPRESSED或其他东西应该足够了,但是windows为什么会生成单独的消息呢 谢谢,这样您就可以实现修改键,如shift和control。 对于大多数键,您可以忽略WM_KEYUP,但是如果 问题应该是在按住任何键的同时修改该键 下来,两个都需要。我以前也问过同样的问题,但答案很简

我刚刚开始MFC编程,以前没有做过任何UI设计或编程。我想知道为什么windows会生成两条消息WM_KEYUP和WM_KEYDOWN,而每个被按下的键都会在键盘正常工作的情况下被释放

我认为只有一条消息WM_KEYPRESSED或其他东西应该足够了,但是windows为什么会生成单独的消息呢


谢谢,这样您就可以实现修改键,如shift和control。 对于大多数键,您可以忽略
WM_KEYUP
,但是如果 问题应该是在按住任何键的同时修改该键
下来,两个都需要。

我以前也问过同样的问题,但答案很简单。这仅仅是两个单独的事件,windows也给了您响应的机会。按键向下或按键向上没有什么特别之处,两者都只是事件。通常,在大多数情况下,按下键更有意义,但要确保
WM\u KEYUP
有很多用途。windows生成的消息还有很多,程序员通常无法处理。

如果你想在游戏中按W键,然后按住W键前进,那么你的WM_键按下解决方案就行不通了。它需要WM_KEYDOWN来启动向前移动的“状态”,WM_keydup来停止它。不要忘记keystke消息也有一个重复计数器,所以当你按住一个键时,你会得到重复的击键消息,每次计数器都会增加。因此,您可以在每次重复消息时转到下一步。