c语言监听函数 c语言监听函数是什么( 二 )


3A-40 -- 未定义
41-5A VK_A-VK_Z 字母键A-Z
5B-5F -- 未定义
60-69 VK_NUMPAD0-VK_NUMPAD9 小键盘数字键0-9
6A VK_MULTIPLY *(乘号)键
6B VK_ADD +(加号)键
6C VK_SEPAPATOR 分隔符键
6E VK_SUBTRACT -(减号)键
6F VK_DECIMAL .(小数点)键
70-87 VK_DIVIDE /(除号)键
88-8F VK_F1-VK_F24 F1-F24功能键
90 VK_NUMBERLOCK Number lock键
91 VK_SCROLL Scroll lock键
92-B9 -- 未定义
BA-C0 -- OEM保留
C1-DA -- 未定义
DB_E4 -- OEM保留
E5 -- 未定义
E6 -- OEM保留
E7-E8 -- 未定义
E9-F5 -- OEM保留
F6-FE -- 未定义
2.输入焦点
同一时刻,Windows中可能有多个不同的程序在运行 , 也就是说有多个窗口同时存在 。这时,键盘由多个窗口共享,但只有一个窗口能够接收到键盘消息 , 这个能够接收键盘消息的窗口被称为拥有输入焦点的窗口 。
拥有输入焦点的窗口应该是当前的活动窗口,或者是活动窗口的子窗口,其标题和边框会以高亮度显示,以区别于其他窗口 。拥有输入焦点的也可以是图标而不是窗口 , 此时,Windows也将消息发送给图标,只是消息的格式略有不同 。
窗口过程可以通过发送WM_SETFOCUS和 WM_KILLFOCUS消息使窗体获得或失去输入焦点 。程序也可以通过捕获WM_SETFOCUS和WM_KILLFOCUS消息来判断窗体何时获得或失去输入焦点 。其中WM_SETFOCUS消息表示窗口正获得输入焦点,WM_ KILLFOCUS消息表示窗口正失去输入焦点 。
3.键盘消息
键盘消息分为系统键消息和非系统键消息 。系统键消息是指由Aft键和其他键组合而产生的按键消息 。当系统键被按下时产生WM_ SYSKEYDOWN消息 , 当系统键被释放时产生WM_SYSKEYUP消息 。Aft键与其他键形成的组合键通常用于对程序菜单和系统菜单进行选择,或用于在不同的程序之间进行切换 。因此,系统键消息应该交由Windows进行处理,用户所编制的程序一般不处理系统键消息,而是将这些消息交由DefWindowProc函数进行处理 。如果用户想对系统键消息进行处理,应该在处理完这些消息后,再将其发送给DefWindowProc函数,使得Windows系统能够正常工作 。
某些击键消息可以被转换成字符消息 , 例如字母键、数字键等 。而有些键只能产生按键消息而没有字符消息,例如 Shift键、Insert键等 。消息循环中的 TranslateMessage函数可以实现从击键消息向字符消息的转化 。当GetMessage函数捕获一个WM_SYSKEYDOWN消息或 WM_KEYDOWN消息后,TranslateMessage函数判断产生该消息的键是否能够被转换成字符消息,如果能,就将该消息转换成字符消息,再通过DispatchMessape函数将转换后的字符消息发送到消息队列中去 。字符消息共有以下四种,如表所示 。
字符 系统字符 非系统字符
普通字符 WM_SYSCHAR WM_CHAR
死字符 WM_SYSDEADCHAR WM_DEADCHAR
其中死字符是由某些特殊键盘上的按键所造成的 , Windows一般忽略死字符所产生的消息 。
Windows的消息一般是通过一个MSG结构体变量传送给消息处理函数的 。对于键盘消息,MSG结构体变量的各个域中较重要的是lParam域和 wParam域 。wParam域用于保存按键的虚拟键代码或字符的ASCII码 。对于非字符消息,wParam域保存按键的虚拟健代码;对于字符消息,wParam域不保存字符的ASCII码 。lParam域则用于保存击键时产生的附加信息,实际上一个32位的lParam变量被分为六部分,记录了以下相关信息:重复次数、OEM扫描码、扩展键标志、关联键标志、前一击键状态和转换状态 。lParam域各位的含义如表所示 。
位数 含义
0-15 击键重复次数累加

推荐阅读