1、打开资源管理视图
添加或修改快捷键资源
注意,这里的IDR_MAINFRAME是快捷键资源,每个快捷键下的ID是快捷键ID,待会要用到的是前者,不要搞错。
比如要给Ctrl+C添加函数,右键该ID添加响应函数到需要的类下
编写响应函数的内容如:
void COutputWnd::OnEditCopy()
{
CString strLabel;
m_wndTabs.GetTabLabel(m_wndTabs.GetActiveTab(), strLabel);
if (strLabel == _T("1"))
{
m_wnd1.Copy();
}
else if (strLabel == _T("2"))
{
m_wnd2.Copy();
}
else if (strLabel == _T("3"))
{
m_wnd3.Copy();
}
}
2、添加快捷键消息截获
在相应类的头文件中
HACCEL m_hAccel;
virtual BOOL PreTranslateMessage(MSG* pMsg);
在cpp中的OnCreate或者OnInitDialog中添加
m_hAccel=::LoadAccelerators(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
注意这里的IDR_MAINFRAME是快捷键资源ID,不是单个快捷键的ID
最后加上解析函数
BOOL CXXX::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
if (m_hAccel)
{
if (::TranslateAccelerator(m_hWnd, m_hAccel, pMsg))
{
return(TRUE);
}
}
return CXXX::PreTranslateMessage(pMsg);
}