在基于对话框的界面程序中,单行编辑控件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() 不能删除必须保留!
文章评论(0条评论)
登录后参与讨论