引用 WM_CHAR、WM_KEYDOWN和WM_SYSKEYDOWN消息
来源:互联网 发布:永恒之塔淘宝双倍礼包 编辑:程序博客网 时间:2024/05/16 03:30
WM_KEYDOWN和WM_CHAR都是键盘消息。TranslateMessage函数已经将按键消息转换成字符消息了,那么WndProc函数中需要对事件进行选择。如:键入“D”键,就应该选择WM_CHAR,因为WM_CHAR 只是字母,不包含特殊字符如Ctrl等。
如果键盘键入的是“Ctrl+D”,则应该选择WM_KEYDOWN,因为WM_KEYDOWN既包含字母也包含特殊字符。
WM_CHAR是由WM_KEYDOWN消息Translate()之后产生的,然后再发送给窗口过程。例如按下“D”键,产生WM_KEYDOWN消息,此消息经过Translate()处理后变成了WM_KEYDOW、WM_CHAR两个消息传递给窗口过程。
而WM_SYSKEYDOWN是接受快捷键或系统命令按键的,像Alt键就是。所以捕获Alt键时,在WM_KEYDOWN下是无效的,要在WM_SYSKEYDOWN中。Ctrl和shift不属于WM_SYSKEYDOWN。
键盘消息的处理从PreProcessMessage方法开始,按下表所述的逻辑顺序进行。(了解这个过程或许有助于对上面三个消息的理解)
方法说明结果ProcessCmdKey此方法检查按键是否为命令键,例如快捷键或菜单快捷键如果方法返回true,则将不调度键消息,而且将不发生键事件
如果方法返回false,则将调用IsInputKey检查该键是否为常规输入键IsInputKey此方法检查按键是否为常规输入键如果方法返回true,则表示该键为常规字符,将调用ProcessKeyMessage进行消息处理
如果方法返回false,则将调用ProcessDialogKeyProcessDialogKey此方法检查按键是否为导航键,例如Esc、Tab、回车键或箭头键。
如果该控件不处理该键,则将调用基控件或父控件的ProcessDialogKey,直至层次结构中的最顶端控件。如果此方法返回true,则完成消息预处理,而且将不生成键事件
如果此方法返回false,则将调用ProcessKeyMessage进行消息处理ProcessKeyMessage此方法处理由控件的WndProc方法接收的所有键盘消息如果控件有父级,则调用父级的ProcessKeyPreview
如果控件没有父级或父级的ProcessKeyPreview不处理该消息,则调用ProcessKeyEventArgs
ProcessKeyPreview此方法将键盘消息发送到控件的父控件如果此方法返回true,则将不发生键事件
如果此方法返回false,则将调用ProcessKeyEventArgsProcessKeyEventArgs此方法引发KeyDown事件
- 引用 WM_CHAR、WM_KEYDOWN和WM_SYSKEYDOWN消息
- WM_CHAR、WM_KEYDOWN和WM_SYSKEYDOWN消息
- WM_CHAR、WM_KEYDOWN和WM_SYSKEYDOWN消息
- WM_CHAR、WM_KEYDOWN和WM_SYSKEYDOWN消息
- WM_CHAR、WM_KEYDOWN和WM_SYSKEYDOWN消息
- WM_CHAR、WM_KEYDOWN和WM_SYSKEYDOWN消息
- WM_CHAR、WM_KEYDOWN和WM_SYSKEYDOWN消息
- WM_CHAR、WM_KEYDOWN和WM_SYSKEYDOWN消息
- WM_CHAR、WM_KEYDOWN和WM_SYSKEYDOWN消息
- WM_CHAR、WM_KEYDOWN和WM_SYSKEYDOWN消息
- WM_CHAR,WM_KEYDOWN和WM_SYSKEYDOWN
- WM_CHAR,WM_KEYDOWN,WM_SYSKEYDOWN
- WM_Char消息和WM_KeyDown消息!
- 比较WM_KEYDOWN、WM_KEYUP、WM_SYSKEYDOWN、WM_SYSKEYUP与WM_CHAR
- 键盘消息WM_KEYDOWN/WM_KEYUP、WM_SYSKEYDOWN/WM_SYSKEYUP与字符消息WM_CHAR的区别
- WM_CHAR消息与WM_KEYDOWN消息
- CWnd派生类无法接受WM_CHAR和WM_KEYDOWN等消息
- 基于MFC对话框的键盘消息响应 WM_KEYDOWN WM_CHAR消息
- 多比矢量图形控件用户手册(七)-理解控制点
- C#中通过调用webService获取上网IP地址的区域的方法
- 服务器应用程序不可用,错误:0x80070005拒绝访问。
- 文件结构体struct file(Linux 2.6.23内核) (转)
- Setting up a git server on MacOS X Lion
- 引用 WM_CHAR、WM_KEYDOWN和WM_SYSKEYDOWN消息
- Microsoft .NET Framework 3.5 下载
- container_of 理解 2
- 查看端口所用的应用程序
- 系统自带的UIBarButtonSystemItem样式
- 登陆SQL Server 2008时提示评估期已过的解决办法
- window和linux下查询oracle的em端口、isql*plus端口
- C++ Primer读书笔记1(经典收藏)
- 使用Navicat 8.0管理mysql数据库(导入导出数据)