按下回车键之后对话框消失,怎么解决

wilehorse 2003-04-08 02:59:16
上次有看到这个问题的解决办法,好像是重载onok还是oncancel函数,记不清楚了,
我现在用的是最笨的方法,把其他按钮设置为default button,哪位高手有简便的解决方法
...全文
470 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
HJHJ001 2003-04-09
  • 打赏
  • 举报
回复
同意yinbeibei的用法。
zhongxd 2003-04-09
  • 打赏
  • 举报
回复
tabby(内存泄漏)说的方法比较好
fangcheng 2003-04-08
  • 打赏
  • 举报
回复
将默认按钮改掉(不是OK,CANCEL)
或重载OK,CANCEL单击事件
fangcheng 2003-04-08
  • 打赏
  • 举报
回复
将默认按钮
sun797 2003-04-08
  • 打赏
  • 举报
回复
重载OnOK();删除CDialog::OnOK();
nava 2003-04-08
  • 打赏
  • 举报
回复
回车键是响应OnOK函数;CDialog::OnOK(); 是DestroyWindow ,不要CDialog::OnOK(); 即可
yinbeibei 2003-04-08
  • 打赏
  • 举报
回复
“VC++技术内幕”
为了使Enter键无效,最简单的办法是将OnOK函数写成空函数,然后再针对OK按钮写一个新的函数来响应。
1、用ClassWizard映射IDOK按钮到OnOK虚函数。
2、利用对话框编辑器改变OK按钮的ID。
3、用ClassWizard创建一个OnClickedOk成员函数。
4、编写OnClickedOk函数的函数体。{CDialog::OnOK();}
5、清除原先OnOK函数。
内存泄漏 2003-04-08
  • 打赏
  • 举报
回复
除了重载OnOk外,还有一种方法,教你用一招绝的。屏蔽掉系统对回车键的响应!

利用ClassWizard,在Message中选择PreTranslateMessage消息,点击Add Function添加函数体,然后点击Edit Code,按下面编辑代码就可以了。

BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
//过滤调回车和ESC两个按键的消息
if(pMsg->message==WM_KEYDOWN)
{
if(pMsg->wParam==VK_RETURN
||pMsg->wParam==VK_ESCAPE)
{
return 1;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
Jiemi 2003-04-08
  • 打赏
  • 举报
回复
yes
feiniaoliang 2003-04-08
  • 打赏
  • 举报
回复
Agree bluestar(蓝色星星)!
bluestar 2003-04-08
  • 打赏
  • 举报
回复
重载OnOK,不要在里面写CDialog::OnOK()这条语句

15,981

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧