MFC中为菜单或按钮添加快捷键功能
1、新建一快捷键资源,ACCELERATOR,关联相应的ID号,下图所示中,其中,第一个ID为自定义快捷键ID,按CTRL+R,此时响应该ID以应的消息响应函数,
第二个ID为菜单ID,此时按CTRL+V,调出ID_NETWORK_PING菜单对应的响应函数。
2、声明一个全局变量HACCEL hAccTable;
3、在OnInitDialog()函数中,添加如下代码:
hAccTable=LoadAccelerators(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_ACCELERATOR1));
4、添加PreTranslateMessage重载函数,在函数中,添加如下代码:
BOOL CComDlg::PreTranslateMessage(MSG* pMsg)
{
if (::TranslateAccelerator(GetSafeHwnd(),hAccTable,pMsg))
{
return true;
}
return CDialog::PreTranslateMessage(pMsg);
}
5、此时假如如上述快捷键菜单中,第一个ID对应的自定义ID,对应的响应函数如下:
void CComDlg::OnAccelerator()
{
system("regedit");
}
第二个ID为网络测试对话框程序,
那么编译成功后,按CTRL+R调出注册表(regedit),按CTRL+V,调出网络测试对话框。
技术改变世界!
--狂诗绝剑