- UID
- 542955
- 积分
- 1173
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2007-1-25
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2017-8-19 12:58:14
|
显示全部楼层
本帖最后由 xinxirong 于 2017-8-19 13:57 编辑
帮忙看看代码哪里出问题?Serialize什么都没有。
static int ads_oleSave(void)
{
//函数的参数 (oleSave ename )
ads_name insert_ename;
AcDbObjectId insert_ID;
AcDbObjectId idArray[200];//子对象不超过200个
bool bHighlight;
struct resbuf *pArgs =acedGetArgs () ;//pt
if(pArgs->restype!=RTENAME)
{
acutPrintf(_T("\n调用HighlightFirstInBlock参数一(拾取点)不是RTENAME"));
return RTERROR;
}
insert_ename[0]=pArgs->resval.rlname[0];
insert_ename[1]=pArgs->resval.rlname[1];
acdbGetObjectId(insert_ID, insert_ename);//获得OLE的ID
AcDbEntity *pEnt = NULL;
//AcDbOle2Frame *pEnt ;
estat=acdbOpenAcDbEntity(pEnt, insert_ID, AcDb::kForRead);
AcDbOle2Frame *pBlock = AcDbOle2Frame::cast(pEnt);
COleClientItem *d=(COleClientItem*)(pBlock->getOleObject());
//d->GetIDispatch(TRUE)->Invoke();
CDocument *a=(CDocument*)d->GetDocument();
CMemFile mem;
CArchive saveArchive(&mem, CArchive::store);
// Calling the base class COleDocument enables serialization
// of the container document's COleClientItem objects.
a->Serialize(saveArchive);
saveArchive.Flush();
mem.Flush();
saveArchive.Close();
ULONGLONG ul = mem.GetLength();
BYTE* b = mem.Detach();
//---------
//其他处理
//---------
free(b);
mem.Close();
//void fun=CDocument::OnFileSaveAs();//ID_FILE_SAVE_AS只能通过消息调用OnFileSaveAs
//a->OnFileSaveAs();
//d->GetDocument()->OnFileSaveAs();//Protected member function
//d->GetDocument()->OnFileSendMail();
//d->CopyToClipboard(TRUE);//这个只是复制这个ole对象,只能粘贴回cad
return acedRetVoid() ;
}
|
|