OLE嵌入方式下word如何打开新的文档??

lilostyle 2004-07-10 11:40:54
我用OLE的方式成功的将word嵌入到我的程序里面,能实现绝大多数功能。
但现在的问题是我在程序刚起来的时候,我可以加载一个doc文件,但在程序运行过程中,想将已经加载的doc文件关闭(不保存),再重新打开一个新的
可是程序总是提醒我不允许这样的操作
还请各位大牛帮忙看看,偶菜菜的说
下面是我的部分代码
void CReportPreView::OnInsertObject()
{
CMainFrame* pMainFrame = (CMainFrame*)AfxGetMainWnd();
CReportPanelView* pPanel = pMainFrame->GetPanelWnd()->GetReportPanel();

if(pPanel->ReportPathList.IsEmpty()) return;

CString strFileName=pPanel->ReportPathList.GetHead();
BeginWaitCursor();

CWordCntrItem* pItem = NULL;
TRY
{
CEndoscopeDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pItem = new CWordCntrItem(pDoc);
ASSERT_VALID(pItem);

CLSID clsid;
if(FAILED(::CLSIDFromProgID(L"Word.Document",&clsid)))
AfxThrowMemoryException();

if(!pItem->CreateFromFile(strFileName,clsid))
{
AfxThrowMemoryException();
}
ASSERT_VALID(pItem);

LPDISPATCH lpDisp;
lpDisp = pItem->GetIDispatch();
MyReportDoc.AttachDispatch(lpDisp);
m_pSelection = pItem;
}
CATCH(CException, e)
{
if (pItem != NULL)
{
ASSERT_VALID(pItem);
pItem->Delete();
}
AfxMessageBox("word加载失败!");
}
END_CATCH
EndWaitCursor();
}

其中if(!pItem->CreateFromFile(strFileName,clsid))
加载了word文件,
但在成功加载之后(能顺利满足我的应用),我试图用这样的程序去更换已经打开的word程序,但是被程序拒绝,郁闷啊,大虾们,既然都看到这里了,帮我想想怎么办吧

COleVariant vFalse((long)0),vTrue((long)1);
COleVariant vOpt((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
_Application app;
app = MyReportDoc.GetApplication();
//不知道如何关闭
//用activewindows的close也被拒绝的说
Documents mydocuments = app.GetDocuments();
mydocuments.Open((COleVariant)ReportFilePath,vFalse,vFalse,vFalse,vOpt,vOpt,vFalse,vOpt,vOpt,vFalse,vOpt,vTrue);
//open也不行,郁闷了



...全文
127 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
vansoft 2004-07-12
  • 打赏
  • 举报
回复
我这里有个微软的控件可以帮你。

MSN:van_flf@hotmail.com
gjd111686 2004-07-11
  • 打赏
  • 举报
回复
CLSID clsid;
if(FAILED(::CLSIDFromProgID(L"Word.Document.8",&clsid)))
AfxThrowMemoryException();
COleClientItem->CreateNewItem(clsid))
quicklight 2004-07-11
  • 打赏
  • 举报
回复
这段代码是什么意思,麻烦解释一下好吗?谢谢
quicklight 2004-07-10
  • 打赏
  • 举报
回复
我也是不能使用Documents 对象的Open 和Close 方法,每次都会异常,真是搞不懂,错在什么地方了,我用了智能指针:
CComQIPtr<MSWord::Documents> documents=m_appWord->GetDocuments();

VARIANT FileName;
FileName.vt=VT_BSTR;
VARIANT vTrue,vFalse,vBlank;
vTrue.vt=VT_BOOL;
vTrue.boolVal=TRUE;
vFalse.vt=VT_BOOL;
vFalse.boolVal=FALSE;
vBlank.vt=VT_BSTR;
CString strBlank="";
vBlank.bstrVal=strBlank.AllocSysString();
VARIANT vFormat;
vFormat.vt=VT_I4;
vFormat.lVal=wdOpenFormatAuto;

CString str(fileName);
FileName.bstrVal=str.AllocSysString();

documents->Open(&FileName,&vTrue,&vFalse,&vTrue,&vBlank,&vBlank,&vFalse,&vBlank,
&vBlank,&vFormat);//vBlank,,&vTrue);

5,139

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧