mfc如何屏蔽单个快捷键

作者:小知 发布时间:2017-07-24 分类:MFC

     技术所限,难免错误,如有不对之处,敬请留言指正!

    本篇文章使用的工程源码test.rar点击可下载,可用vc++6.0或者vs2008打开。



      mfc开发软件的时候有时候需要屏蔽键盘的按键操作对窗体的影响,接下来讲一下mfc窗体屏蔽键盘按键操作的步骤。

    1:使用vc++6.0新建一个基于对话框的mfc工程,并把窗体样式改成调整大小的,勾选最大化框。

QQ截图20170724100411.png

    此时编译运行程序,并点击最大化,按下键盘的ESC按键会发现窗体退出,按下ENTER按键会发现窗体也退出了,按下F1按键会发现打开了系统的帮助文件。这都是由于没有屏蔽键盘上的这些按键造成的。

QQ截图20170724101215.png

    2:这时候我们在窗体上点击鼠标右键建立类向导,在里面添加一个函数PreTranslateMessage。

QQ截图20170724101614.png

    这时候我们在添加的函数里面添加下面这一段代码:

if(pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_ESCAPE)
{
return TRUE;
}


QQ截图20170724102230.png

    这时再次编译运行会发现ESC按键按下对窗体已经没有任何影响,这段代码已经屏蔽了ESC按键,pMsg->message == WM_KEYDOWN表示键盘按下的操作,pMsg->wParam == VK_ESCAPE表示按下ESC按键,同理下面这段代码屏蔽了ENTER按键


if(pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN)
{
return TRUE;
}


    但是,要注意的是上面这段代码只是屏蔽了这个类所对应的窗体上的ENTER按键事件,对mfc工程里面的其他类所在的窗体是无效的,也就是说再新建一个窗体,如果这个窗体的类是另外一个类,那么要屏蔽ENTER按键还是要重复进行步骤1和步骤2。

    屏蔽F1按键有点特殊,不是加代码进行屏蔽,而是删除代码进行屏蔽。而且删除这段代码可以屏蔽这个工程的所有窗体的F1快捷键事件。进入到工程名字命名的cpp文件找到下图所在的位置对应的代码,删除或者用双斜杠//注释掉。

QQ图片20170724103312.png

    再次运行会发现,按下F1按键对窗体没有任何影响。

    常见键盘VK键值列表,在代码if(pMsg->message == WM_KEYDOWN && pMsg->wParam == (这里替换即可):

VK_ESCAPE      ESC键

VK_RETURN      回车键 

VK_TAB         TAB键 

VK_CAPITAL     Caps Lock键 

VK_SHIFT       Shift键 

VK_CONTROL     Ctrl键 

VK_MENU        Alt键 

VK_SPACE       空格键 

VK_BACK        退格键 

VK_LWIN        左徽标键 

VK_RWIN        右徽标键 

VK_APPS        鼠标右键快捷键 

VK_INSERT      Insert键 

VK_HOME        Home键 

VK_PRIOR       Page Up键

VK_NEXT        Page Down键

VK_END         End键 

VK_DELETE      Delete键 

VK_LEFT        方向键(←) 

VK_UP          方向键(↑) 

VK_RIGHT       方向键(→) 

VK_DOWN        方向键(↓) 

VK_F1          F1键 

VK_F2          F2键 

VK_F3          F3键 

VK_F4          F4键 

VK_F5          F5键 

VK_F6          F6键 

VK_F7          F7键 

VK_F8          F8键 

VK_F9          F9键 

VK_F10         F10键 

VK_F11         F11键 

VK_F12         F12键 

VK_NUMLOCK     Num Lock键 

VK_NUMPAD0     小键盘0 

VK_NUMPAD1     小键盘1 

VK_NUMPAD2     小键盘2 

VK_NUMPAD3     小键盘3 

VK_NUMPAD4     小键盘4 

VK_NUMPAD5     小键盘5 

VK_NUMPAD6     小键盘6 

VK_NUMPAD7     小键盘7 

VK_NUMPAD8     小键盘8 

VK_NUMPAD9     小键盘9 

VK_DECIMAL     小键盘. 

VK_MULTIPLY    小键盘*  

VK_ADD         小键盘+ 

VK_SUBTRACT    小键盘- 

VK_DIVIDE      小键盘/ 

VK_PAUSE       Pause Break键 

VK_SCROLL      Scroll Lock键 


本篇完。



  

呃 本文暂时没人评论 来添加一个吧

发表评论

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。