原创 单行Edit控件Enter及Esc键非法关闭对话框的解决方法

2008-10-21 21:07 5356 5 5 分类: 软件与OS

在基于对话框的界面程序中,单行编辑控件Edit几乎是不可缺少的。


但在VC6中存在着在Edit中按Enter或Esc键关闭对话框的问题。


在我们建立一个基于对话框的工程中,默认了2个按钮(确定和取消),其默认的


消息事件处理函数为Dlg::OnOK()和Dlg::OnCancel() 。


其中确定键默认响应函数为Dlg::OnOK()。它继承了基类的CDialog::OnOK()


这样当在Edit控件内按回车键就执行了默认的按钮函数Dlg::OnOK(),即关闭对话框。


同理,按放弃键Esc后也会执行了函数Dlg::OnOK()或CDialog::OnCancel()。


故必须屏蔽掉CDialog::OnOK()和CDialog::OnCancel();


这样就先解决了单行Edit控件Enter及Esc键非法关闭对话框的问题。


但这里又带来了任何方法也不能正常对话框的后果~~


解决方法如下:


1.去除确定或取消默认钮属性。


2.改写确定或取消的ID(IDOK,IDCANCEL)为IDYES或IDNO或其他自己喜欢的ID.


注意:若想让此2键回复原有的功能可:


在Dlg::OnYes() 函数内重载CDialog::OnOK()


在Dlg::OnNo() 函数内重载CDialog::OnOK()或CDialog::OnCancel()即可。


3.重载Dlg::OnClose()函数,将CDialog::OnClose()替换成CDialog::OnOK()


注意:空函数Dlg::OnOK()和Dlg::OnCancel() 不能删除必须保留!

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条