MFC 对话框应用程序添加热键(快捷键)

时间:2024-03-27 09:19:12

首先在testDlg.h(对话框头文件)中添加成员变量:

        HACCEL m_hAccel;//清空编辑框

打开资源视图,然后找到需要添加快捷键按钮所在的对话框,在“ IDD_TEST_DIALOG ” 上右键

MFC 对话框应用程序添加热键(快捷键)MFC 对话框应用程序添加热键(快捷键)

根据第三步右键添加资源弹出 “ 添加资源 ” 弹窗,选择Accelerator选项,然后点击“ 新建 ”按钮。

MFC 对话框应用程序添加热键(快捷键)

在资源视图中会出现 “ Acclerator ” 文件夹, 第6步,打开 “ Acclerator ” 文件夹,在 “ IDR_ACCELERATOR2 ” 右键选择” 打开 “ 按钮

MFC 对话框应用程序添加热键(快捷键)MFC 对话框应用程序添加热键(快捷键)

编辑自己的快捷键。我的为 Ctrl + D 快捷键。

MFC 对话框应用程序添加热键(快捷键)

在对话框.cpp 文件的初始化函数中添加:

m_hAccel = ::LoadAcceleratorsA(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_ACCELERATOR2));//初始化“编辑框”快捷键资源

 

MFC 对话框应用程序添加热键(快捷键)

添加对话框类向导中添加 虚函数 “ PreTranslateMessage(MSG* pMsg) ”

MFC 对话框应用程序添加热键(快捷键)

MFC 对话框应用程序添加热键(快捷键)

        /******************“编辑框”快捷键处理*********************/
       if (WM_KEYFIRST <= pMsg->message && pMsg->message <= WM_KEYLAST)
       {
              HACCEL hAccel = m_hAccel;  
              if (hAccel && ::TranslateAccelerator(m_hWnd,hAccel,pMsg)){
               /*******************按住Ctrl+D快捷键会清空“输出框”中的内容********************/
              if(GetDlgItem(IDC_ComOutPut) ==  GetFocus())
               {
                      GetDlgItem(IDC_ComOutPut)->SetWindowText("");
                      return TRUE;
               }

               /*******************按住Ctrl+D快捷键会清空“输入框”中的内容********************/
               if(GetDlgItem(IDC_ComInPut) ==  GetFocus())
               {
                      GetDlgItem(IDC_ComInPut)->SetWindowText("");
                      return TRUE;
               }
   
        }

       return CDialog::PreTranslateMessage(pMsg);

}

相关文章