CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

为何在VC6.0中,EDIT在控件上只要一按enter程序就退出?

楼主Meuck(如果你相信什么,你就应当有所了解)2003-06-03 07:59:12 在 VC/MFC / 基础类 提问

我是用MFC中的mfc.exe创建应用程序的. 问题点数:50、回复次数:16Top

1 楼cherish0107(某某某)回复于 2003-06-03 08:11:00 得分 0

重载OnOK函数Top

2 楼jnxulei(石头)回复于 2003-06-03 08:17:42 得分 25

一定是你对话框中“IDOK”按纽是默认按纽,当按enter时系统认为你按下的是OK按纽。将OK按纽的“默认按纽”属性去掉。Top

3 楼skyzxg(sky)回复于 2003-06-03 08:23:53 得分 5

就是你的ok按钮,你esc还会关闭窗口,那是因为cancel按钮Top

4 楼yangzhb2003()回复于 2003-06-03 08:25:48 得分 10

系统默认enter为退出,只需重载下面函数屏住ENTER  
  BOOL   COperateDlg::PreTranslateMessage(MSG*   pMsg)    
  {  
  //   TODO:   Add   your   specialized   code   here   and/or   call   the   base   class  
  if(pMsg->message==0x100   &&   pMsg->wParam==13)//屏住ENTER  
  {  
  return   TRUE;  
  }  
  return   CDialog::PreTranslateMessage(pMsg);  
  }  
  Top

5 楼kwiner(ak.net)回复于 2003-06-03 08:33:03 得分 0

双击默认的OK按纽,会产生一个OnOK()函数,把CDialog::OnOK()删除Top

6 楼yndfcd(YNDFCD)回复于 2003-06-03 08:37:39 得分 0

在Edit的属性中将WANTRETURN勾上就行了。Top

7 楼lifejoy(山外青衫)回复于 2003-06-03 08:40:17 得分 5

唉!你的焦点在OK上了你可以移出就行了Top

8 楼Meuck(如果你相信什么,你就应当有所了解)回复于 2003-06-10 00:00:32 得分 0

to   jnxulei(石头)  
  我有两个问题:  
  (1)没错,我按Enter时的焦点也是在OK按钮上了,那么也就是说Edit控件得不到焦点吗?  
        (没有焦点还可以用键盘输入?)  
  (2)为何单单把IDOK的默认属性去掉还不行,必须在其它按钮上把默认属性添加上?  
   
  因为学过Dephi,现在刚学VC,觉得它们有很多地方不一样,所以就麻烦各位了...Top

9 楼Meuck(如果你相信什么,你就应当有所了解)回复于 2003-06-10 00:07:31 得分 0

另外:skyzxg(sky)    
  说的,esc也可以退出程序啊,我实验过地确是调用了OnCancel函数,  
  之前所说的按Enter键会退出程序,是由于焦点在IDOK上,而这次总不会是  
  焦点问题了吧?  
   
  还有就是,就算把OK按钮在介面上删除了,它还是可以得到焦点.  
  VC真的不可思意.  
   
   
  Top

10 楼alickguo(靠键盘活着)回复于 2003-06-10 00:12:59 得分 0

OK   是默认的焦点,把OK   和Cancle都删了就可以了  
  然后用自己的按扭去代替他们的实现  
  相信你的OK不会是只想退出程序这么简单吧。  
  不然就设table顺序   把EDIT设为第一个。  
   
  Top

11 楼snowx(宠物幽灵)回复于 2003-06-10 01:43:10 得分 5

我想应该是这样的  
  mfc中间的消息机制你没有弄清楚,它并不像dephi那样固定按键鼠标的事件  
  当你按enter的时候,会有其他的消息处理函数先捕捉到这个消息  
  具体如何你应该读读-深入浅出mfc  
  解决办法  
  取消默认  
  另外就是重载按钮的默认on_ok函数  
  楼上几位已把方法列出  
  Top

12 楼andy_lau(天行键,君子当自强不息!)回复于 2003-06-10 09:09:46 得分 0

系统默认enter为退出,只需重载下面函数屏住ENTER  
  BOOL   COperateDlg::PreTranslateMessage(MSG*   pMsg)    
  {  
  //   TODO:   Add   your   specialized   code   here   and/or   call   the   base   class  
  if(pMsg->message==0x100   &&   pMsg->wParam==13)//屏住ENTER  
  {  
  return   TRUE;  
  }  
  return   CDialog::PreTranslateMessage(pMsg);  
  }  
   
   
  若要屏蔽esc同样的道理。  
  Top

13 楼Waitan(大雾)回复于 2003-06-10 09:19:05 得分 0

回车---OnOK  
  ESC-------OnCancel  
   
  解决办法有很多,直接办法就是在这两个函数入手。Top

14 楼Linux2001(闭关开发中)回复于 2003-06-10 09:26:21 得分 0

大家都说了,你怎么都还不结贴Top

15 楼Meuck(如果你相信什么,你就应当有所了解)回复于 2003-06-10 11:35:15 得分 0

to   alickguo(傻旦):  
  begino,给你说中了啊.  
   
   
   
  Top

16 楼njtu_shiyl(玉晶)回复于 2003-06-10 11:42:03 得分 0

看来解决了啊?  
  接分!Top

相关问题

  • 【提问?回答!】用VC生成一个对话框的程序,在对话框上按ESC和EDIT控件内按回车就退出程序了。怎么让它不退出?请教
  • Edit控件
  • Edit Box控件
  • 在VC++里用WINSOCK控件?
  • vc里有excel控件吗?
  • VC編制Activex控件
  • 请问怎样在对话框窗口中的Edit控件里按下Enter键后不要退出
  • 控件如何阻止容器退出?
  • 关于Edit控件
  • Edit控件问题

关键词

  • 函数
  • 属性
  • mfc
  • vc
  • 系统
  • 消息
  • 默认
  • 按纽
  • pmsg
  • 退出

得分解答快速导航

  • 帖主:Meuck
  • jnxulei
  • skyzxg
  • yangzhb2003
  • lifejoy
  • snowx

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo