MFC中基于对话框程序快捷键的实现
2010-12-15 14:36
483 查看
MFC中基于SDI和MDI的程序,默认情况下有快捷键资源,直接建立快捷键与消息的映射,就能实现程序的快捷键,而基于对话框的程序默认情况下没有快捷键资源,鉴于网友问到这个问题,下面我就分别用两种方法来实现。
一是在PreTranslateMessage函数中,判断键盘的按键消息,比如快捷键是Ctrl + Q,我们就检测按键消息的Ctrl键和Q是否同时按下就可以了。
//用PreTranslateMessage的方法,判断Ctrl+Q是否按下,按下就执行快捷键对应的操作
![](http://c.chinaitlab.com/UploadFiles_4204/200810/20081011163055921.gif)
二是在PreTranslateMessage函数中,通过载入快捷键资源,并建立快捷键与消息的映射的方法来实现。先插入快捷键资源,通过下面的代码来载入该资源。
HACCEL hAcc;hAcc = LoadAccelerators(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDR_ACCELERATOR1));
在PreTranslateMessage函数中进行快捷键的翻译,如果是WM_KEYDOWN和WM_SYSKEYDOWN消息就翻译,翻译成功返回TRUE.
一是在PreTranslateMessage函数中,判断键盘的按键消息,比如快捷键是Ctrl + Q,我们就检测按键消息的Ctrl键和Q是否同时按下就可以了。
//用PreTranslateMessage的方法,判断Ctrl+Q是否按下,按下就执行快捷键对应的操作
if(pMsg->message == WM_KEYDOWN && pMsg->wParam == 'Q' && IsCTRLPressed()) { AfxMessageBox("Ctrl + Q 被按下"); return TRUE; } |
![](http://c.chinaitlab.com/UploadFiles_4204/200810/20081011163055921.gif)
二是在PreTranslateMessage函数中,通过载入快捷键资源,并建立快捷键与消息的映射的方法来实现。先插入快捷键资源,通过下面的代码来载入该资源。
HACCEL hAcc;hAcc = LoadAccelerators(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDR_ACCELERATOR1));
在PreTranslateMessage函数中进行快捷键的翻译,如果是WM_KEYDOWN和WM_SYSKEYDOWN消息就翻译,翻译成功返回TRUE.
BOOL CAccelerator2Dlg::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class int iResult; //针对WM_KEYDOWN消息和WM_SYSKEYDOWN消息,翻译快捷键 switch(pMsg->message){ case WM_KEYDOWN: case WM_SYSKEYDOWN: iResult = TranslateAccelerator(m_hWnd,hAcc,pMsg); //翻译快捷键成功,返回TRUEif(iResult)return TRUE; } return CDialog::PreTranslateMessage(pMsg); } |
相关文章推荐
- MFC中基于对话框程序快捷键的实现
- MFC中基于对话框程序快捷键的实现
- MFC中基于对话框程序快捷键的实现
- MFC中基于对话框程序快捷键的实现
- [转]MFC中基于对话框程序快捷键的实现。
- MFC中基于对话框程序快捷键的实现
- 在基于对话框的MFC程序中实现按键响应
- MFC基于对话框程序启动时隐藏窗口的实现
- 【MFC-10】VS2010/MFC基于对话框程序的登录窗口实现
- 基于对话框的MFC程序实现非模态对话框主对话框最小化时子对话框不最小化
- 基于对话框的MFC程序实现RTL风格的一种方式
- 基于对话框的MFC程序中,实现非模态子窗口在任务栏显示图标以及窗口左上角加图标
- 将基于MFC的对话框应用程序修改为服务程序
- 给基于对话框的MFC程序添加状态栏并实时显示时间
- MFC程序实现给对话框加入�背景图片
- VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
- MFC基于对话框程序
- 基于MFC对话框程序中添加菜单栏 (CMenu)
- 基于MFC对话框的NT服务程序框架
- 基于MFC对话框程序中添加菜单栏 (CMenu)