读书人

聚合所要求的成员不存在

发布时间: 2012-12-30 10:43:15 作者: rapoo

集合所要求的成员不存在





void CMyDialog::OnBnClickedButton1()
{

CApplication objWordApp; //word对象
COleVariant ovTrue((short)TRUE); //true
COleVariant ovFalse((short)FALSE); //false
COleVariant ovOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);


//创建一个IDispatch指针
if (!objWordApp.CreateDispatch("Word.Application"))
{
AfxMessageBox("Couldn't get Word object.");
return;
}
objWordApp.put_Visible(TRUE); //显示应用程序
objWordApp.put_DisplayAlerts(FALSE);


CDocuments docs(objWordApp.get_Documents()); //word文档
CDocument0 docPrint; //word文档


COleVariant FileName(LPCTSTR(_T("f:\\3.doc")));

COleVarianttempFormat(long(wdOpenFormatDocument),VT_I4);


//打开文件
docPrint=docs.Open(FileName, ovFalse,
ovTrue, ovFalse,
ovOptional,ovOptional,
&ovOptional, &ovOptional,
&ovOptional,&tempFormat, //
ovOptional,ovFalse,
ovFalse, &ovOptional,
ovTrue, &ovOptional);

docPrint.Repaginate();

CDocument0 NewDoc=docs.Add(ovOptional,ovOptional,ovOptional,ovOptional);//产生一个新页

docPrint.Activate();

CSelection sel=objWordApp.get_Selection();

COleVariant What((long)1);
COleVariant Which((long)2);
COleVariant Count((long)1);
COleVariant Name((long)2);

sel.GoTo(What, Which, Count, Name); //第2页

COleVariant Unit((long)6);
COleVariant Extend((long)1);

sel.EndKey(Unit,Extend);//结束改页(选中)


sel.Copy();//拷贝到剪贴板中


NewDoc.Activate();


COleVariant vPlacement(long(0),VT_I4);
COleVariant vDtaType(long(9),VT_I4);//wdPasteEnhancedMetafile
sel.PasteSpecial(ovOptional,ovFalse,vPlacement,ovFalse,vDtaType,ovOptional,ovOptional);//从剪贴中粘贴到新页面


CinlineShapesinlineShapes=NewDoc.get_InlineShapes();

CinlineShapeinlineShape=inlineShapes.Item(0);//这句崩溃了,集合所要求的成员不存在


inlineShape.Select();

sel.Copy();//从新页面拷贝到剪贴板



CinlineShapeinlineShape=inlineShapes.Item(0);//这句崩溃了,集合所要求的成员不存在

这几句,item(1) 也会崩溃。

我是模仿 bcb板块 代码

改成vc就遇到这个问题



[解决办法]
要看前文你的inlineShapes有木有获取到,要是空的话,还.Item肯定出错

读书人网 >VC/MFC

热点推荐