MFC VS2015设置快捷键响应函数

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);
}

猜你喜欢

转载自blog.csdn.net/sssaaaannnddd/article/details/78855084