将功能键分配给Dialog的简单方法?

| 我有一个MFC对话框,我想将功能键分配给不同的方法。那可能吗? 例如,我想输入F9并得到与按下按钮相同的结果。     
已邀请:
对于基于对话框的应用程序。在资源编辑器中为对话框创建IDR_ACCELERATOR1。并添加所需的键,并为对话框的键创建一个事件。 在sampledlg.h中,请添加
HACCEL m_haccel;
在OnInitDialog()中的sampledlg.cpp中,请添加
m_haccel = LoadAccelerators(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_ACCELERATOR1));
在PreTranslateMessage(MSG * pMsg)的sampledlg.cpp中,请添加
if (m_haccel)
{
  if ((::TranslateAccelerator(*this, m_haccel, pMsg))) 
  {    
      return(TRUE);
  }
}
    
如果您的意思是在基于对话框的应用程序的主对话框中,则可以检查 http://www.codeproject.com/Articles/37130/Implement-Accelerators-in-a-Dialog-Based-Applicati.aspx 如果用于文档/视图应用程序中的对话框: http://support.microsoft.com/kb/117500/zh-CN http://support.microsoft.com/kb/222829/en-us     
比我想的要容易。我不知道这是否是最好的解决方案,但这是我所做的:
BOOL MainDlg::PreTranslateMessage(MSG *pMsg)
{   
  if ( pMsg->message == WM_KEYDOWN)
  {
     if (( pMsg->wParam == VK_F9))
       OnBnClickedButton1(); // Delete Item
 }

  return CDialog::PreTranslateMessage(pMsg);
}
现在,每次按下功能键F9时,都会调用功能OnBClickedButton1()。     

要回复问题请先登录注册