MFC 快捷键

来源:互联网 发布:淘宝上不能买彩票了吗 编辑:程序博客网 时间:2024/06/06 01:58

         看了很多例子,愣是没看懂,一种可能,我智商有问题,第二种可能,写帖子的人压根没打算让人(初学者)看懂,只是想让人知道他会。

         我的例子很简单,建一个单文档的MFC程序(参考网上的一份例子写出来的)。

         1.在资源中加入一个Accelerator,然后进行设置,ID,就是希望的那个能被快捷键代替的按钮的ID,KEY,就是你希望的快捷键,TYPE,我选择了VIRTKEY

         2.在头文件中添加 BOOL PreTranslateMessage(MSG *pMsg) 方法

         3.在CPP文件中完成该方法

         

BOOL CApiTestDlg::PreTranslateMessage(MSG *pMsg){//AfxGetApp()->m_hInstance 获得程序实例//IDR_ACCELERATOR1  就是刚才加入到资源中的那个Accelerator的IDHACCEL hAccelTable;hAccelTable = LoadAccelerators(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDR_ACCELERATOR1));int iResult=0;//我们点击键盘时会向窗体发送消息,在这里我们捕获到消息,然后进行翻译//把按键的消息翻译成点击按钮的消息,这样,就相当于我们点击按钮了(这是我自己的理解)switch(pMsg->message){case WM_KEYDOWN:{}case WM_SYSKEYDOWN://我们只需要关心这个类型的消息就可以了{iResult = TranslateAccelerator(m_hWnd, hAccelTable, pMsg);//这个函数用来翻译资源文件的内容if(iResult){//翻译成功返回TRUEreturn TRUE;}}}return CDialog::PreTranslateMessage(pMsg);}

原创粉丝点击