首先创建一个菜单,ID分别为IDM_FILE_NEW,IDM_FILE_OPEN,IDM_FILE_CLOSE。
分别对菜单各项进行响应。
在OnInitDialog()中,添加标题栏菜单:
HMENU hMenu = ::LoadMenu(::GetModuleHandle(nullptr), MAKEINTRESOURCE(IDR_MENU1)); ::SetMenu(this->GetSafeHwnd(), hMenu);
创建一个Accelerator资源,添加如下内容:
ID Modifier Key Type
IDM_FILE_NEW None ^N ASCII
IDM_FILE_OPEN None VK_BACK VIRTKEY
IDM_FILE_CLOSE None ^E ASCII
这样,就把键盘加速键和菜单各个选项联系在一起了。接下来,就要加载一下Accelerator资源文件。
在OnInitDialog()中,加载资源文件IDR_ACCELERATOR:
m_hAccelerator = ::LoadAccelerators(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_ACCELERATOR));
注:private:
HACCEL m_hAccelerator;
7.重载虚函数PreTranslateMessage():
BOOL CAcceleratorDemoDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if (m_hAccelerator)
{
if (::TranslateAccelerator(this->GetSafeHwnd(), m_hAccelerator, pMsg))
return TRUE;
}
return CDialogEx::PreTranslateMessage(pMsg);
}
经过以上步骤,便实现了菜单键盘加速键。
本文出自 “whatever957” 博客,请务必保留此出处http://whatever957.blog.51cto.com/6835003/1623443
原文:http://whatever957.blog.51cto.com/6835003/1623443