为何在VC6.0中,EDIT在控件上只要一按enter程序就退出?
我是用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




