MFC中添加快捷键
基于Dialog的MFC工程中如何添加快捷键呢?大致分为以下几个步骤:
1. 在资源视图中添加资源,选择"Accelerator"选项新建即可;
2. 打开新建的文件夹下的"IDR_ACCELERATOR1"中编辑,其中包括ID、修饰符、键、类型。ID中选择你要添加快捷键的菜单、按钮的ID编号,修饰符中选择你是否要使用组合键,如:Alt、Alt+Shift等等,键中选择你要使用什么样的虚拟键码,类型中选择VK形式或者是ASCII形式。
3. 在你的对话框的头文件中添加快捷键变量,如HACCEL _hAccel;
4. 在你的对话框的源文件的OnInitDialog函数中加载快捷键,如:
HACCEL _hAccel = ::LoadAccelerators( AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_ACCELERATOR1) );
5. 重载函数PreTranslateMessage,使用类向导,重载虚函数PreTranslateMessage
BOOL xAutoH2test::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
if ((pMsg->message == WM_KEYDOWN) || (pMsg->message == WM_SYSKEYDOWN)) {
char keyName[100];
int stringSize = 5;
if (GetKeyNameText(pMsg->lParam, keyName, 100)) {
if (0 == strcmp(keyName, "Space"))
{
OnBtnStart();
}
if (0 == strcmp(keyName, "R"))
{
OnBtnScan();
}
if (0 == strcmp(keyName, "O"))
{
OnBtnOption();
// 因為DoModal其實也有接收訊息,
// 但是結束後已經沒有Handle, 如果往下處理會有問題,
// 所以這邊先回TRUE離開
return TRUE;
}
}
}
return CDialog::PreTranslateMessage(pMsg);
}
参考网址:http://blog.sina.com.cn/s/blog_8216ada70101a8dd.html