MFC对话框程序屏蔽回车与ESC键

=============================================================
标题:MFC对话框程序屏蔽回车与ESC键
摘要:
备注:Windows XP + VC2005
日期:2010.8.3
姓名:朱铭雷
=============================================================
    MFC下基于对话框的程序,默认的会有一个“确定”按钮,还有一个“取消”按钮,那个“确定”按钮是默认按钮。这时候运行程序,按下回车键或者ESC键,程序都会退出。

   
    取消掉“确定”按钮的Default Button属性,按回车键程序依然会退出,即使把“确定”按钮删除掉,效果也是一样。看了下《Inside Visual C++》。引用一下书中的原话:“当用户按下Enter键时,Windows就会自动去查找“输入焦点”落在了哪一个按钮上,获得焦点的按钮的四周将被点线矩形框所包围。如果所有按钮都没有获得输入焦点,Windows就会自动去寻找程序或资源所指定的默认按钮。如果对话框没有默认按钮,那么即使对话框中没有“确定”按钮,OnOK函数也会自动被调用”
    有的时候肯定是不想在按下回车键之后退出对话框程序,ESC也是一样。解决方法也很简单,重载对话框的PreTranslateMessage函数,然后在该函数中干掉ESC和回车这两个按键的消息。
    如:
BOOL CDialog1::PreTranslateMessage(MSG* pMsg)
{
       // TODO: 在此添加专用代码和/或调用基类
       if (pMsg->message == WM_KEYDOWN)
       {
              switch (pMsg->wParam)
              {
              case VK_RETURN:
                     //MessageBox(_T("回车键按下"));
                     return TRUE;
              case VK_ESCAPE:
                     //MessageBox(_T("ESC键按下"));
                     return TRUE;
              default:
                     break;
              }
       }
       return CDialog::PreTranslateMessage(pMsg);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值