windows编程之键盘消息总结

来源:互联网 发布:小米手机mac地址查询 编辑:程序博客网 时间:2024/06/15 05:52
<1>活动窗口:活动窗口通常是顶层窗口,也就是说它的父窗口句柄是NULL
<2>输入焦点:具有输入焦点的窗口是活动窗口或者活动窗口的衍生窗口(活动窗口的子窗口,活动窗口子窗口的子窗口)
<3>焦点信息:WM_SETFOCUS,WM_KILLFOCUS来表示获得或者失去焦点信息。
<4>键盘事件消息分类:按键消息(按下,弹起),字符消息WM_KEYDOWN,WM_KEYUP,WM_SYSKEYDOWN,WM_SYSKEYUP
<5>系统按键和非系统按键
可以知道,有些按键消息时由操作系统来处理的(例如Alt+Tab),这个时候应用程序不会去拦截系统按键消息,而是交给DefWindowProc去实现。非系统按键消息就是那些不带alt按键组合的按键按下或者按键弹起的消息,windows不会处理这些按键消息。
<6>wParam 和 lParam:wParam存放虚拟键码,表示是什么键按下,lParam存储其它按键信息(重复技术,OEM扫描码,内容代码,键先前状态等)
<7>TranslateMessage(&msg):按键消息转换为字符消息,如果消息为WM_KEYDOWN或者WM_SYSKEYDOWN,并且按键与位移状态相组合产生一个字符消息(位移状态指shift,capslock是否按下)WM_CAHR 。在WM_CHAR的消息下,lParam与之前按键消息的lParam参数相同,但是wParam此时不是虚拟键码,它是ANSI或者unicode字码。
<8>消息顺序
字符消息是夹杂在按键消息之间传递给消息处理程序的,例如按下A键,产生的消息依次是:WM_KEYDOWN,WM_CHAR,WM_KEYUP。
<9>关于控制字符:enter,backspace,Escape,这些键当然会产生虚拟键码,但同时也会产生WM_CHAR消息,因而产生字符(控制字符),通常的做法是把这些消息放在WM_CHAR消息中处理。
    case '\b':            // backspace                 //其它行程序            break ;    case '\t':            // tab            //其它行程序            break ;    case '\n':            // linefeed            //其它行程序            break ;    case '\r':            // carriage return            //其它行程序            break ;

<10>插入符号函数
CreateCaret 建立与窗口有关的插入符号 
SetCaretPos 在窗口中设定插入符号的位置  
ShowCaret 显示插入符号
HideCaret 隐藏插入符号  
DestroyCaret 撤消插入符号
1 0
原创粉丝点击