查看单个帖子
旧 2009-04-25, 07:50 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 copyobjects中第一个参数实体数组怎么表示?

copyobjects中第一个参数实体数组怎么表示?
www.dimcax.com
copyobjects中第一个参数实体数组怎么表示?
看了很多代码,感觉在vb中只要定义dim retval() as acadentity,就可以调用copyobjects,可是在c++中第一个参数是variant*,到底怎样才能把cacadentity数组转化为variant*呢?我现在使用的是:
variant var1;
var1.vt=vt_dispatch|vt_array;
safearraybound rgsabound[1];
rgsabound[0].celements=num2;
rgsabound[0].llbound=0;
var1.parray=safearraycreate(vt_dispatch,1,rgsabound);
for(long j=0;j<num2;j++)
{
lpdispatch entity=m_acaddoc.objectidtoobject(m_acadlist.at(j));
safearrayputelement(var1.parray,&j,&entity);
}
variant var2;
var2.vt=vt_dispatch;
var2.pdispval=m_block;
m_acaddoc.copyobjects(var1,var2,null);
经测试,一直到倒数第二行都没有错,可以从对应的idispatch正确还原其所代表的实体,看来只可能是最后一句出错了,到底是怎么回事呢,难道这种调用方式不正确?非常感谢,着急ing

没有知道吗?哭ing
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)