[求助]请问版主如果想用C++封装一个块,CopyObjects的用法
<p>自己写了一段代码如下:</p><p> CString blockName=pos->first;//得到块名<br/> CAcadBlock m_block=m_acadDoc.ObjectIdToObject(pos->second);//得到块对象,跟块名放在同一个Pair里<br/> std::vector<long> m_acadList=m_entityList; //得到实体的ID集合<br/> int num2=m_acadList.size();//得到实体数量<br/> CComVariant var1;<br/> var1.vt=VT_DISPATCH|VT_ARRAY;<br/> SAFEARRAYBOUND rgsabound;<br/> rgsabound.cElements=num2;<br/> rgsabound.lLbound=0;<br/> var1.parray=SafeArrayCreate(VT_VARIANT,1,rgsabound);<br/> for(long j=0;j<num2;j++)<br/> {<br/> LPDISPATCH entity=m_acadDoc.ObjectIdToObject(m_acadList.at(j));//将实体从ID转换为IDispatch指针<br/> SafeArrayPutElement(var1.parray,&j,entity);//加入到数组<br/> }<br/> CComVariant var2;<br/> var2.vt=VT_DISPATCH;<br/> var2.pdispVal=m_block;//将目标快由CAcadBlock对象转化为IDispatch指针</p><p> m_acadDoc.CopyObjects(var1,var2,NULL);调用拷贝函数,这句话有问题.</p><p>看了很多资料,都是用VB写的,用一个可变Object数组就可以了,可是我其他程序都是用C++完成,检查了很长时间,没有发现问题,只好求教版主了?谢谢</p>
页:
[1]