键盘消息:
当用户按下或释放键盘上的键时, Windows 和键盘驱动程序将硬件扫描码转换为格式消息并保存在“系统消息队列”中。 只有当 Windows 应用程序处理完前一个用户输入消息时, Windows 才会从系统消息队列中取出下一个消息,并将其放入应用程序消息队列。
键盘事件消息可以分为“击键”和“字符”两类。
对于可以显示字符的击键组合, Windows 不仅向程序发送击键消息,还发送字符消息。有些键不产生字符,这些键包括 shift 键、 Fn 功能键、光标移动键和特殊字符如 Insert 和 Delete 。
击键消息包括 WM_KEYDOWN 、 WM_KEYUP 、 WM_SYSKEYDOWN 、 WM_SYSKEYUP 四种类型。
WM_KEYDOWN 和 WM_KEYUP 消息通常是在按下或释放不带 Alt 键的键时产生;
WM_SYSKEYDOWN 和 WM_SYSKEYUP 消息通常由与 Alt 组合的击键产生,这些键激活程序菜单或系统菜单上的选项,或切换活动窗口,也可以用作系统菜单加速键。
由于 Windows 处理所有 Alt 键的功能,应用程序无需捕获这些消息。
对于 4 类击键消息, wParam 是虚拟键代码,代表按下或释放的键,而 lParam 包含击键的其他数据。
如果按住一个键不放使得自动重复功能生效,那么该键最后被释放时, Windows 会给窗口过程发送一系列的 WM_KEYDOWN (或 WM_SYSKEYDWON )消息和一个 WM_KEYUP (或 WM_SYSKEYUP )消息。
真实的键码是由物理键盘硬件产生。这些键码被称之为“扫描码( Scan Codes )”。虚拟键码是以与设备无关的方式处理键盘。大多数虚拟键码名称在 WINUSER.H 头文件中都定义为以 VK_ 开头。具体定义列表可以参考 msdn 文档。
当用户按下或释放键盘上的键时, Windows 和键盘驱动程序将硬件扫描码转换为格式消息并保存在“系统消息队列”中。 只有当 Windows 应用程序处理完前一个用户输入消息时, Windows 才会从系统消息队列中取出下一个消息,并将其放入应用程序消息队列。
键盘事件消息可以分为“击键”和“字符”两类。
对于可以显示字符的击键组合, Windows 不仅向程序发送击键消息,还发送字符消息。有些键不产生字符,这些键包括 shift 键、 Fn 功能键、光标移动键和特殊字符如 Insert 和 Delete 。
击键消息包括 WM_KEYDOWN 、 WM_KEYUP 、 WM_SYSKEYDOWN 、 WM_SYSKEYUP 四种类型。
WM_KEYDOWN 和 WM_KEYUP 消息通常是在按下或释放不带 Alt 键的键时产生;
WM_SYSKEYDOWN 和 WM_SYSKEYUP 消息通常由与 Alt 组合的击键产生,这些键激活程序菜单或系统菜单上的选项,或切换活动窗口,也可以用作系统菜单加速键。
由于 Windows 处理所有 Alt 键的功能,应用程序无需捕获这些消息。
对于 4 类击键消息, wParam 是虚拟键代码,代表按下或释放的键,而 lParam 包含击键的其他数据。
如果按住一个键不放使得自动重复功能生效,那么该键最后被释放时, Windows 会给窗口过程发送一系列的 WM_KEYDOWN (或 WM_SYSKEYDWON )消息和一个 WM_KEYUP (或 WM_SYSKEYUP )消息。
真实的键码是由物理键盘硬件产生。这些键码被称之为“扫描码( Scan Codes )”。虚拟键码是以与设备无关的方式处理键盘。大多数虚拟键码名称在 WINUSER.H 头文件中都定义为以 VK_ 开头。具体定义列表可以参考 msdn 文档。
Backspace、Tab、Enter、Escape和SpaceBar等键操作在Windows中通常以字符消息(而非击键消息)处理。
数字和字符的虚拟键码正好是ACSII码。