使用CHotKeyCtrl的几点总结
来源:互联网 发布:python 元组 编辑:程序博客网 时间:2024/05/17 21:56
注:以下CHotKeyCtrl情况的环境是ATL,不知MFC中是否如此,没有验证,需注意
1. 某些情况下,不允许只输入一个不带fsModifiers只有VK键的情况下,可以使用m_editHotkey.SetRules(HKCOMB_NONE, HOTKEYF_CONTROL | HOTKEYF_ALT); //关键是HKCOMB_NONE参数
2. CHotKeyCtrl::SetHotKey和GetHotKey中的wModifiers和RegisterHotKey中的fsModifiers不同:
a. 从CHotKeyCtrl控件得到的Alt和Shift分别是HOTKEYF_ALT和HOTKEYF_SHIFT,而RegisterHotKey中的Alt和Shift则为MOD_ALT和MOD_SHIFT,所以GetHotKey之后,若要注册则需要进行转换
staticWORD Modifiers_HKCtrl_to_RegisterHK(WORD wSource){//#define HOTKEYF_SHIFT 0x01//#define HOTKEYF_CONTROL 0x02//#define HOTKEYF_ALT 0x04//#define MOD_ALT 0x0001//#define MOD_CONTROL 0x0002//#define MOD_SHIFT 0x0004//#define MOD_WIN 0x0008WORD wRet = wSource;wRet &= ~HOTKEYF_EXT;//过滤多余的可能多加的值0x1000if (wSource & HOTKEYF_ALT && wSource & HOTKEYF_SHIFT){wSource &= ~HOTKEYF_ALT;wSource &= ~HOTKEYF_SHIFT;wRet |= MOD_ALT; wRet |= MOD_SHIFT; }else{if(wSource & HOTKEYF_ALT) { wRet &= ~HOTKEYF_ALT; wRet |= MOD_ALT; } if(wSource & HOTKEYF_SHIFT) { wRet &= ~HOTKEYF_SHIFT; wRet |= MOD_SHIFT; } }return wRet;}
b. SetHotKey时,也需要调用相关的转换函数
staticWORD Modifiers_RegisterHK_to_HKCtrl(WORD wSource){//#define HOTKEYF_SHIFT 0x01//#define HOTKEYF_CONTROL 0x02//#define HOTKEYF_ALT 0x04//#define MOD_ALT 0x0001//#define MOD_CONTROL 0x0002//#define MOD_SHIFT 0x0004//#define MOD_WIN 0x0008WORD wRet = wSource;if (wSource & MOD_ALT && wSource & MOD_SHIFT){wRet &= ~MOD_ALT;wRet &= ~MOD_SHIFT;wRet |= HOTKEYF_ALT;wRet |= HOTKEYF_SHIFT;}else{if(wSource & MOD_ALT) { wRet &= ~MOD_ALT; wRet |= HOTKEYF_ALT; } if(wSource & MOD_SHIFT) { wRet &= ~MOD_SHIFT; wRet |= HOTKEYF_SHIFT; } }return wRet;}
b. 从HOTKEYF_SHIFT、HOTKEYF_ALT和MOD_SHIFT、MOD_ALT可以看出,Shift和Alt在CHotKeyCtrl中是相反的(获取的值是你想要的对方的值,不太好说,明白?)
3. 使用GetHotKey要注意,在某些情况下同一个wModifiers值缺得到了不同的值,如:Ctrl + Up和Ctrl + 'P'得到的wModifiers(Ctrl)值不同,当然Shift、Alt得到的值也不同,都比正常值大了0x1000,即HOTKEYF_EXT,所以在GetHotKey时要过滤其中的项,否则调用RegisterHotKey时,函数注册成功了,但没有响应
- 使用CHotKeyCtrl的几点总结
- 使用CHotKeyCtrl的几点总结
- onConfigurationChanged使用的几点总结
- shell脚本使用的几点总结
- 关于使用mybatis的几点总结
- GPUImage使用几点总结
- Erlang的gen_server的terminate使用的几点总结
- 关于使用存储过程的好处的几点总结
- 热键控件使用示例 CHotKeyCtrl
- 热键控件使用示例 CHotKeyCtrl
- 使用被动模式FTP的几点总结
- 使用oracle pl/sql developer的几点总结
- 总结在使用JPA时需要注意的几点
- 关于使用python logging模块的几点总结
- 关于Jenkins使用的个人几点总结
- 求职的几点总结
- 正则的几点总结
- udhcp的几点总结
- 堆栈的应用(2) 中缀算术表达式到后缀(逆波兰记法reverse polish notation)的转换及其计算 C++实现
- fsck.ext3:unable to resolve
- ubuntu安装SCIM输入法及其配置
- asp.net(C#)连接access数据库
- 写代码之前要做什么?
- 使用CHotKeyCtrl的几点总结
- eclipse 反编译插件 jdeclipse
- 资源工具
- XCode调试 设置全局断点并快速定位问题代码所在行
- HTML中预览图片的JQeury代码
- 怎么删除525+桌面上的google搜索
- android添加权限说明
- PS_PTLT_COMP_NAV
- 队列(queue)的链表(list)实现及循环数组(circular array)实现 C++实现