①、利用 GetKeyState 函数获得某一按键的按下、弹起状态;
//用 PreTranslateMessage 的方法,判断 Ctrl+Q 是否同时按下:
②、通过载入快捷键资源,并建立快捷键与消息映射的方法来实现:
1> 添加快捷键资源;
2> 修改快捷键资源中的组合键配置;
3> 添加响应函数声明,格式为:afx_msg void OnCtrlW();
4> 添加消息映射,格式为:ON_BN_CLICKED(ID_ACC_1, OnCtrlW) 或者 ON_BN_CLICKED(ID_ACC_1, &CMFCTestDlg::OnCtrlW)
5> 添加响应函数的实现:
void CMFCTestDlg::OnCtrlW()
{
MessageBox(_T("您按下了 Ctrl+W 键!"));
}
6> 初始化快捷键资源;//添加到初始化函数中
hAcc = LoadAccelerators(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDR_ACCELERATOR1));
7> 在 PreTranslateMessage 函数中进行拦截处理:
③、两种方法的比较:
第一种方法比较直接,使用方便,但一般只应用于快捷键比较少的程序;
第二种方法比较实用,虽然实现起来代码量稍微大一些,但是适用于快捷键比较多的程序中;
④、弊端:只在程序为当前活动窗口的时候有效,最小化、非活动窗口时无效!
解决方法:注册全局系统热键
①、注册全局系统热键的优点:
即使程序的窗口不是当前活动窗口、或者窗口最小化、隐藏后,也都可以响应热键;
比如QQ软件的默认呼出热键:Ctrl+Alt+Z 就是注册了全局系统热键;
②、注册窗口全局系统热键的步骤:
1> 调用 RegisterHotKey 函数注册全局系统热键;
BOOL RegisterHotKey(
HWND hWnd,
int id,
UINT fsModifiers,
UINT vk
);
hWnd : 指定响应该热键的窗口句柄;
id : 热键的标识,有点类似于 SetTimer 中的标识,作用域为线程内;
fsModifiers : 指定组合键,这个值可以由 MOD_ALT、MOD_CONTROL、MOD_SHIFT、MOD_WIN 中的一个或几个组成;
vk : 指定热键的虚拟键盘码,如:'A'
备注:这里的 Ctrl+Alt+A 这个组合键的作用域是全局的;
示例:RegisterHotKey(m_hWnd, 1000, MOD_CONTROL|MOD_ALT, 'Q');
2> 响应目标窗口的 WM_HOTKEY 消息;//也可以重写对话框的PreTranslateMessage函数 WM_HOTKEY
3> 调用 UnregisterHotKey 卸载热键:
BOOL UnregisterHotKey(
HWND hWnd,
int id
);
hWnd : 热键关联的窗口句柄;
id : 热键的标识;
可以放到对话框类的 OnDestroy() 函数中进行调用,这样模态与非模态对话框都可以成功的进行卸载;
分享到:
相关推荐
ESD STM11.12 2015.pdf
ANSI ESD STM11.12 2015.pdf
PrinterShareV11.12.5破解版,手机打印软件完美适配android8.0+
ANSI ESD STM11.12-2021平面材料的体积电阻测量.pdf
linux-2.6.11.12内核源码,带有注释,如果想学习linux内核可以参考。
华润11.12.etbp
SCL11.12详细安装文档
11.12营销测算.xls
11.12 ANSI-ESD_STM11.12-2021平面材料的体积电阻测量.pdf
Toolwiz Photos v11.12.apk
11.12_flex布局.xmind
供方管理流程11.12管理流程
安国量产工具alcormpver:11.12.26.md SP:12.02.24 by nat27设定密码为空。可磁盘模式(autorun/加密盘/只读盘/普通盘/本地盘)可调节U盘电流强度(100MA-500MA)高级/低级格式化扫描方式,优化U盘速度或容量等。
内核源码!!linux2.6.11内核源码-中文笔记注释版本linux2.6.11
PTGui Pro是一个多功能的图片全景制作工具的,PTGui Pro能够将零散的几个图片组成一个大幅面的完整图片,但它需要用户编写脚本命令才能工作。PTGui 通过为全景制作工具(Panorama Tools)提供可视化界面来实现对图像...
11.12心理素质拓展活动.zip
发展汉语上册复习课课件11.12
高数下第10.11.12章课件.ppt
android源码开发实战11.12.zip,
全书共分13章,分别介绍了可调节类控件、选择类控件、显示类控件、组合类控件、容器类控件、菜单和工具栏类控件、数据控件、应用类控件、打印类控件、对话框类控件、水晶报表控件、多媒体播放控件、自定义控件等13类...