首页 > 代码库 > 在MFC对话框程序中使用加速键

在MFC对话框程序中使用加速键

新建一个基于对话框的工程,添加一个按钮,修改按钮ID,这里为ID_BTN_OPENFILE,为按钮添加消息响应事件,这里我打开文件保存对话框:

void CAccelDlg::OnBtnOpenfile() 
{
	// TODO: Add your control notification handler code here
	CFileDialog dlg (TRUE);
	dlg.DoModal ();	
}
为工程添加一个加速键资源,添加一条,注意ID要和按钮的ID相同,只有这样才能产生关联

为主对话框类添加一个加速键变量成员:

HACCEL m_hAccel;
在对话框的OnInitDialog初始化函数中加载加速键资源

  // 加载加速键资源
  m_hAccel = LoadAccelerators (AfxGetInstanceHandle (), MAKEINTRESOURCE(IDR_ACCELERATOR1)); 

然而对话框要处理加速键需要处理按键消息,翻译加速键,添加虚函数:PreTranslageMessage,在函数里添加对加速键的翻译函数

TranslateAccelerator (m_hWnd, m_hAccel, pMsg);

Ok, 到这里就可按 Ctrl+o 键达到和点击“打开”按钮一样的效果: