找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 750|回复: 1

[ARX程序]:求救

[复制链接]
发表于 2002-5-17 23:46:04 | 显示全部楼层 |阅读模式

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

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

×
我在arx程序中,获得一些数据,并显示在对话框里面,使用了mfc的updatedata,但是autocad却报错:试图执行系统不支持的操作。
以下是我的部分源代码:
1:部分arx程序
//显示模式对话框
        CDialogAmend DlgPipeAmend;
        DlgPipeAmend.GetDataFromPipe(Gpipeparam);
        DlgPipeAmend.SetDataToDialog();
        DlgPipeAmend.DoModal();
2、部分mfc程序
void CDialogAmend::SetDataToDialog()
{
//        CAcModuleResourceOverride resOverride;
        UpdateData(FALSE);//就在这里报错
}

void CDialogAmend::OnOK()
{
        // TODO: Add extra validation here
        UpdateData(TRUE);
        CAcUiDialog::OnOK();
}

void CDialogAmend::GetDataFromPipe(PIPEPARAM Gpipeparam)
{
//        CAcModuleResourceOverride resOverride;
        //管线类型
        m_strPipeType=Gpipeparam.strLinetype;
        //管线代号
        m_strPipeCodeName=Gpipeparam.strPipeCodeName;
        //公称通径
        m_dGctj=Gpipeparam.dGctj;
        if(m_dGctj<1.e-5)
        {
                m_dGctj=0.0;
        }
        //最大外径
        m_dMaxRad=Gpipeparam.dMaxRad;
        if(m_dMaxRad<1.e-5)
        {
                m_dMaxRad=0.0;
        }
        //起点标高
        m_dStartElev=Gpipeparam.dElevationSp;
        if(m_dStartElev<1.e-5)
        {
                m_dStartElev=0.0;
        }
        //终点标高
        m_dEndElev=Gpipeparam.dElevationEp;
        if(m_dEndElev<1.e-5)
        {
                m_dEndElev=0.0;
        }
        //颜色
        m_iColor=Gpipeparam.iColor;
        //线宽
        m_dLineWide=Gpipeparam.dLineWide;
        if(m_dLineWide<1.e-5)
        {
                m_dLineWide=0.0;
        }
        //管线说明
        m_strRemark=Gpipeparam.strRemark;
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2002-5-18 04:56:07 | 显示全部楼层
在DoModal()前调用SetDataToDialog()是多余的.
我们通常会在ClassWizard中定义与子控制绑定的成员变量。UpdateData(FALSE)的会调用DoDataExchange(实际是调用一系列如SetDlgItemText()之类的函数)把在这些成员变量的值赋值给绑定的控制,反之,UpdateData(True)则会把控制的值赋给变量。

如果不能正确赋值,UpdateData就会报错。
假设你限制m_strPipeCodeName最多只能有8个字符长,而Gpipeparam.strPipeCodeName却有10个字符长, 在m_strPipeCodeName=Gpipeparam.strPipeCodeName后调用UpdateData(FALSE)就会出现此类错误;

请仔细检查.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-25 02:12 , Processed in 0.372905 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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