1添加“accelerator”资源
2、添加键值
3、添加处理事件
函数声明
afx_msg void OnAcceleratorCtrlO();
消息映射
ON_COMMAND(ID_ACCELERATOR_CTRL_O, &CDlgMain::OnAcceleratorCtrlO)
函数处理
void CDlgMain::OnAcceleratorCtrlO()
{
//
}
4加载资源
在添加快捷键对象
class CDlgMain: public CDialog
{
HACCEL m_hAccel;
};
在窗口的构造函数中加载
CDlgMain:: CDlgMain (CWnd* pParent /*=NULL*/)
: CDialog (CDlgMain::IDD, pParent)
{
m_hAccel = ::LoadAccelerators(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_ACCELERATOR1));
}
5、激活快捷键,重写PreTranslateMessage函数,添加对快捷键处理的调用
virtual BOOL PreTranslateMessage(MSG* pMsg) ;
BOOL CDlgMain::PreTranslateMessage( MSG* pMsg )
{
if (m_hAccel)
{
if (::TranslateAccelerator(m_hWnd, m_hAccel, pMsg))
{
return(TRUE);
}
else
{
/*if(pMsg->message == WM_KEYDOWN)
{
if(int(pMsg->wParam) == VK_F5 )
{
OnAcceleratorF5();
}
else if(GetAsyncKeyState(VK_CONTROL))
{
if( pMsg->wParam == 'O')
OnAcceleratorCtrlO();
else if( pMsg->wParam == 'F')
OnAcceleratorCtrlF();
else if( pMsg->wParam == 'T')
OnAcceleratorCtrlT();
else if( pMsg->wParam == 'J')
OnAcceleratorCtrlJ();
else if( pMsg->wParam == 'M')
OnAcceleratorCtrlM();
else if( pMsg->wParam == 'L')
OnAcceleratorCtrlL();
}
}*/
}
}
return CDialog::PreTranslateMessage(pMsg);
}