MFC快捷键的编程
来源:互联网 发布:网络病毒营销案例 编辑:程序博客网 时间:2024/06/07 15:10
最近在做一个即时通信软件,用到了类似QQ中按下 Alt+S键就可以把消息发送出去的功能,本来以为这个功能很简单,在PreTranslateMessage中截获S键然后判断Alt键是否按下就可以了,可是Ctrl或者Shift 都可以,Alt 不行,也就是说这种方法不能实现Alt+S的功能,最后换个思路,用如下的方法解决了,希望对您有所帮助,呵呵.
如何使用 Visual C++ 中的模式对话框中的加速键
键盘加速键处理应用程序的主消息循环中调用 TranslateAccelerator() 函数。 但是,模式对话框框管理器消息循环 (内置 Windows) 用于转换和调度消息。 当然,由于此消息循环不处理加速键,它不会调用 TranslateAccelerator() 函数。
若要处理模式对话框中的加速键,您必须覆盖对话框 PreTranslateMessage() 函数,并尝试通过调用作为快捷键处理消息:: TranslateAccelerator()。 如果该方法将失败,然后处理将继续通过调用基类 PreTranslateMessage()。
下面的例子,我们添加到 MFC MDI 应用程序的 AboutBox 对话框的加速键功能:
1 创建一个名为测试的 MFC MDI 应用程序。
2 添加按钮与资源 ID"IDC_BUTTON1",AboutBox 对话框框资源。
3 双击按钮以添加该按钮处理程序,并为加速键的一个标记中插入以下代码:
AfxMessageBox("Hello");
4 插入新的加速器表资源。
5 通过关联 F 5 将加速键添加到表键为资源 ID"IDC_BUTTON1"。
6 向类添加成员变量,m_hAccelTable 中,CAboutBox:
HACCEL m_hAccelTable;
7 初始化 m_hAccelTable CAboutBox::CAboutBox 中的:
m_hAccelTable = LoadAccelerators(AfxGetInstanceHandle (), MAKEINTRESOURCE(IDR_ACCELERATOR1));
8 使用代码向导 (在类向导在 Visual C++6.0 及更早版本) 为该 CAboutDlg 中添加该 PreTranslateMessage 的重写。
9 在 CAboutBox::PreTranslateMessage() 方法中添加代码以下行:
BOOL CAboutDlg::PreTranslateMessage(MSG* pMsg)
{
if (m_hAccelTable)
{
if (::TranslateAccelerator(m_hWnd, m_hAccelTable, pMsg)) {
return(TRUE);
}
}
return CDialog::PreTranslateMessage(pMsg);
}
10 编译并运行 CTestApp。
结果在 CAboutBox 处于活动状态时,快捷键 F 5 键立即触发 button 1 处理程序。
这篇文章中的信息适用于:
Microsoft Foundation Class Library 4.2 当用于
o Microsoft Visual C++ 4.1 Subscription
o Microsoft Visual C++ 4.2 企业版
o Microsoft Visual C++ 5.0 企业版
o Microsoft Visual C++ 6.0 企业版
o Microsoft Visual C++ 4.2 专业版
o Microsoft Visual C++ 5.0 专业版
o Microsoft Visual C++ 6.0 专业版
o Microsoft Visual C++, 32-bit Learning Edition 6.0
o Microsoft Visual C++ .NET 2002 标准版
o Microsoft Visual C++ .NET 2003 Standard Edition
- MFC快捷键的编程
- vc / mfc 快捷键 的实现
- MFC中快捷键的使用
- VC/MFC 快捷键的实现
- DLL的MFC编程
- MFC状态栏的编程
- MFC的多线程编程
- MFC 快捷键
- MFC快捷键
- MFC快捷键
- vc / mfc 快捷键 的实现(转)
- MFC中临时禁用快捷键的方法
- Java编程常用的快捷键
- MFC编程的入门知识
- MFC的串行化编程
- 我的MFC编程心得
- MFC的DLL编程基础
- MFC编程:窗口的更改
- jvm相关监控工具
- Command(命令)
- C#开源资源超级大汇总
- 利用鼠标键盘钩子截获密码
- 研发团队协同作业解决方案CodeBeamer开始支持DVCS (Digitimes, 2009/7/9)
- MFC快捷键的编程
- vb 6.0 使用存储过程返回的结果集
- 谷歌宣布开发PC操作系统 直接挑战微软核心业务
- 3G资费下调暗藏玄机
- 开发人员一定要加入收藏夹的网站收藏--good
- 关于索引节点(inode,也叫i节点)、硬链接和软链接的一些总结,请指正。
- access导出表结构
- 对PB11生成WebForm时页面上按钮效果的修改
- 谷歌官方博客:Chrome操作系统今年将公开源码