找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1179|回复: 6

[ARX程序]:对话框数据记忆

[复制链接]
发表于 2006-12-11 17:07:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
终于作出了对话框,但是对话框中的数据保存却又成了问题,
用SetDialogData,记录只能是CString格式的。
用GetDialogData,得到也是CString 格式的,
到网上查了半天,用CString 转 double "strtod" ,"atof"都试了,
就只认前一位,比如输入45.0就只认4,输入78.0就只认7,
CString m_strDIS;
char *  p_strDIS;
double  m_DIS;

p_strDIS = (LPSTR)(LPCTSTR)m_strDIS;      //把CString 转成 char *
m_DIS = strtod (p_strDIS,&p_strDIS);      //把char * 转成 double

是不是我这段代码有问题,你说用直接用 double 吧,下次运行程序,记不住数,
还得重新输。用CString 吧,这转换还搞不懂,
用CAcUiNumericEdit,能实现数据转换和数据记忆吗?
请高手给指点一下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-12-11 21:42:13 | 显示全部楼层
double EqVal;
CString EqStr;
EqVal=atof(EqStr);
没有问题呀?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-12-12 09:10:38 | 显示全部楼层
CString m_strDIS;
char * p_strDIS;
double m_DIS;
m_strDIS = “12.34”;
p_strDIS = (LPSTR)(LPCTSTR)m_strDIS; //把CString 转成 char *
m_DIS = strtod (p_strDIS,&p_strDIS); //把char * 转成 double
按楼主的代码也没有错啊,m_DIS = 12.3400000,你肯定是其他的地方改变了m_DIS 的值。
而且这个太麻烦,还是直接用atof就行了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-12-12 15:19:26 | 显示全部楼层
我的开发环境组合是ARX2007+VS2005,
double EqVal;
CString EqStr;
EqVal=atof(EqStr);
编译给出的提示是:
error C2664: 'atof' : cannot convert parameter 1 from 'CString' to 'const char *'
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-12-13 16:35:19 | 显示全部楼层
atof(变量),变量 char *型
方法一,使用强制转换
方法二,使用strcpy。
方法三,使用CString::GetBuffer。
都没试成功,大多数推荐第三种,可能是我太菜,就是搞不好,那位高手给指点一下,希望不要从别的网站转贴,最好写完语句后,编译一下,正确无误,再回复,要求有点高啊,呵呵,搜了n多网站,内容几乎都是大同小义,郁闷中...菜鸟的成长的易呀
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-12-13 22:03:08 | 显示全部楼层
直接给文本框关联一个double 变量,限定只能输入数字,编辑文本框的内容后用UpdateData刷新一下不是很方便吗
呵呵,没看清楼主的意思,大概是数据存在外部文件中,也可给文本框关联一个double 变量,初始化对话框时UpdateData刷新一下,只不过一个是用TRUE,一个用FALSE
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-12-14 10:52:19 | 显示全部楼层
6楼楼主您说的方法,是用MFC的标准方法,但是一次再起动对话框的时候,编辑框内的数据还得重新输入,比如对话框中有三个数据,只需要改一个,用MFC的标准方法,就得全重输,用ARX的SetDialogData,就是可以记住输入的数据,即使关了CAD再重新打开,上次输入的数据也在,很神其的,估计是向注册表中写东西了,肯定是用SetDialogData封装了,不就为了用它这个功能吗,不然费那么大劲作啥。
不知道,这回我的意思表达清楚没,关键词:对话框数据记忆。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-23 00:35 , Processed in 0.406031 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表