文章来源:http://www.360doc.com/content/15/0409/14/18635950_461812495.shtml
https://blog.csdn.net/calmreason/article/details/43763989
在MFC界面上按组合键(例 Ctrl+A)弹出另外一个对话框的操作步骤;
1、在VS2010中,首先得重载一个父类函数PreTranslateMessage,可以在窗口中找到这个类,
然后在属性窗口中添加重写函数,即如下过程:
1)打开类视图:
2)单击需要使用的PreTranslateMessage类(即需要在哪个界面上按组合键可以弹出另一个对话框
3)在那里你可以找到你需要添加PreTranslateMessage函数的类,在属性窗口中就可以找到这个类的相关属性
4)在属性窗口中单击重写按钮,找到PreTranslateMessage然后添加即可
2、我们现在已经添加好了PreTranslateMessage函数,然后在函数中实现如下代码即可
BOOL CmfcDlg::PreTranslateMessage(MSG* pMsg)
{
static bool m_ctrl_down = false;//此函数第一次调用的时候初始化
if (pMsg->message == WM_KEYDOWN)
{
switch (pMsg->wParam)
{
//VK_A - VK_Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A) 不区分大小写
case 'A'://Ctrl + A
if (m_ctrl_down)
{
AfxMessageBox(_T("Ctrl + A key down"));
return TRUE;
}
break;
case VK_CONTROL:
m_ctrl_down = true;return TRUE;
default:
return TRUE;
}
}
if (pMsg->message == WM_KEYUP)
{
switch (pMsg->wParam)
{
case VK_CONTROL:
m_ctrl_down = false; return TRUE;
}
}
return CDialogEx::PreTranslateMessage(pMsg);
}