回车键和ESC键的处理

1. 在对话框程序中,按回车键或ESC键会退出当前对话框,原因是回车键相应了OnOK()函数,ESC键相应了OnCancel()函数。

如不想退出当前对话框则在上述两个函数里
 void CDialog::OnOK()
{
// TODO: 在此添加专用代码和/或调用基类

//CDialog::OnOK();
}

 void CDialog::OnCancel()
{
// TODO: 在此添加专用代码和/或调用基类

//CDialog::OnCancel();
 }

// 掉OnOK和OnCancel即可。

 

2. 如果建立程序时把“确定”和“取消”键删除了,找不到这两个函数,直接重载即可:

<span style="font-size:18px;">//CXXXDlg.h中  
protect://public也没错  
virtual void OnOk();  
virtual void OnCancel();  
  
//CXXXDlg.cpp中  
  
void CXXXDlg::OnOk()//啥也不做就OK了  
{  
  
}  
void CXXXDlg::OnCancel()//同上  
  
{  
  
}</span>


 

3. 按上述步骤做完后,会发现,按程序右上角的“X”不能关闭程序,这时需要重载WM_CLOSE消息处理函数。

在ClassWizard中添加WM_CLOSE的消息处理函数,

添加Enddialog(IDCANCEL); //参数可以自己根据需要填写

<span style="font-size:18px;">void CDlgxxx::OnClose()    //X按钮处理  
{  
    // TODO: Add your message handler code here and/or call default  
    EndDialog(IDCANCEL);    //关闭窗口  
    CDialog::OnClose();  
}</span>

这样就可以实现程序关闭功能。

 

相关详细内容可参考:http://blog.csdn.net/phenixyf/article/details/41897055

 

4. 如果即要回车键或ESC不退出窗口,又要对某个控件特别执行特别的操作,这时需要使用PreTranslateMessage函数对这两个键的操作进行拦截,并添加相应的处理操作。

具体实现可参考:http://blog.csdn.net/phenixyf/article/details/41645771

http://blog.csdn.net/phenixyf/article/details/41643977

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值