标题:Edit控件数据是怎样跟变量交换值的?
只看楼主
daisyzhou45
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2006-2-10
 问题点数:0 回复次数:5 
Edit控件数据是怎样跟变量交换值的?
我给一个ID为IDC_XStartEdit的Edit控件加了一个Cstring变量:m_strXStart
怎样才能获得Edit框里输入数值呢?

搜索更多相关主题的帖子: 变量 Edit 控件 数据 
2006-03-09 18:09
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
得分:0 
任何时候作UpdateData(TRUE)就可以在m_strXStart里得到数值了。一般是在Edit Control不被选中的时候(lost focus)作,如果想用户敲一个字就Update一次可以给Edit Control加一个ON_EN_CHANGE的Message Handler,在里面UpdateData(TRUE)。如果要作用户输入的语法检查可以加ON_EN_KILLFOCUS的Message Handler,在这里Update并检查,不过这个操作Microsoft设计的有点问题,稍微复杂一些,如果不用就不说了。

http://myajax95./
2006-03-10 11:57
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
得分:0 
任何时候作UpdateData(TRUE)就可以在m_strXStart里得到数值了。一般是在Edit Control不被选中的时候(lost focus)作,如果想用户敲一个字就Update一次可以给Edit Control加一个ON_EN_CHANGE的Message Handler,在里面UpdateData(TRUE)。如果要作用户输入的语法检查可以加ON_EN_KILLFOCUS的Message Handler,在这里Update并检查,不过这个操作Microsoft设计的有点问题,稍微复杂一些,如果不用就不说了。

http://myajax95./
2006-03-10 11:57
daisyzhou45
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2006-2-10
得分:0 
要检查语法,还得做一些判断,比如说:有一个m_strXEnd,我输入的这个数必须得比m_strXStart大,这个该怎么处理?


2006-03-10 13:35
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
得分:0 
如果只是integer,应该直接定义成int。如果一定要用CString,
用class wizard 给edit control 加 ON_EN_KILLFOCUS message handler.
然后在function里写

CString strOld = m_strXEnd;
UpdateData(TRUE);
if (atoi((LPCSTR)m_strXEnd) <= atoi((LPCCSTR)m_strXStart))
{
MessageBox("error ......");
m_strEnd = strOld;
UpdateData(FALSE);
}
不过你的Dialog中最好不要有地二个这种窗口,否则需要小心

http://myajax95./
2006-03-10 13:57
daisyzhou45
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2006-2-10
得分:0 
我定义成int了,解决了这个问题
谢谢everajax 热心帮助

2006-03-11 09:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-49393-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.074307 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved