OLE嵌入方式下word如何打开新的文档??
我用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也不行,郁闷了