描述:
一般书上的例子都是
COleInsertDialog dlg;
if (dlg.DoModal() != IDOK)
return;
....
然后再利用dlg创建,请问还有别的方法吗,我查MSDN好像还有几个函数,但是参数非常多,搞不太轻,烦劳高手予以解答,最好有例子代码,多谢!我的信箱:wen_pc@126.com
解决方案1:
CDocument *pdoc = GetDocument
CxxxCntItem *pItem = new CxxxCntItem(pdoc)
pItem->CreateNewItem(clsid);
其中CxxxCntItem用向导生成的一个函数,clsid是你要创建组件的clsid。
void CWebOfficeView::EmbedAutomateDoc(void)
{
BeginWaitCursor();
CDC* pDC;
pDC=GetDC();
COleVariant vTrue((short)TRUE),vFalse((short)FALSE),vOpt((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
CWebOfficeOleClientItem* pItem=NULL;
TRY
{
CWebOfficeDoc* pDoc=GetDocument();
ASSERT_VALID(pDoc);
pItem=new CWebOfficeOleClientItem(pDoc);
ASSERT_VALID(pItem);
CLSID clsid;
if(FAILED(::CLSIDFromProgID(L"Word.Document.8",&clsid)))
AfxThrowMemoryException();
if(m_FileName.GetLength()==8)
{
if(!pItem->CreateNewItem(clsid))
AfxThrowMemoryException();
}
else
{
if(m_FileName.Find("Http://",0)!=-1)
{
CString m_DocPath=DownTemplate(m_FileName);
if(!pItem->CreateFromFile(m_DocPath,clsid))
{
AfxThrowMemoryException();
}
DeleteFile(m_DocPath);
}
else
{
//if(!pItem->CreateFromFile(DownTemplate(m_FileName),clsid))
if(!pItem->CreateFromFile(m_FileName,clsid))
{
AfxThrowMemoryException();
}
}
}
ASSERT_VALID(pItem);
pItem->DoVerb(OLEIVERB_SHOW,this);
m_pSelection=pItem;
lpDisp=pItem->GetIDispatch();
_Application_Word m_WordApp;
_Document_Word m_WordDoc;
m_WordDoc.AttachDispatch(lpDisp,TRUE);
m_WordDoc.Activate();
m_WordApp=m_WordDoc.GetApplication();
Window_Word m_WordWindow;
m_WordWindow=m_WordDoc.GetActiveWindow();
m_WordWindow.SetDisplayHorizontalScrollBar(TRUE);
m_WordWindow.SetDisplayVerticalScrollBar(TRUE);
m_WordWindow.SetDisplayRulers(TRUE);
Pane_Word m_WordPane;
m_WordPane=m_WordWindow.GetActivePane();
View_Word m_WordView;
m_WordView=m_WordPane.GetView();
Zoom_Word m_WordZoom;
m_WordZoom=m_WordView.GetZoom();
m_WordZoom.SetPercentage((long)75);
if(m_VersionTrack.Find("VersionTrack",0)!=-1)
{
m_WordDoc.SetTrackRevisions(FALSE);
}
else
{
m_WordDoc.SetTrackRevisions(TRUE);
}
/*
if(m_DocStatus.Find("DocStatus",0)!=-1)
{
pItem->DeactivateUI();
}
else
{
//
}
*/
m_WordZoom.ReleaseDispatch();
m_WordView.ReleaseDispatch();
m_WordPane.ReleaseDispatch();
m_WordWindow.ReleaseDispatch();
m_WordDoc.ReleaseDispatch();
m_WordApp.ReleaseDispatch();
pDoc->UpdateAllViews(NULL);
}
CATCH(COleException,e)
{
char strErrorBuf[255];
e->GetErrorMessage(strErrorBuf,255,NULL);
AfxMessageBox(strErrorBuf,MB_ICONINFORMATION);
if (pItem!=NULL)
{
ASSERT_VALID(pItem);
pItem->Delete();
}
}
END_CATCH
EndWaitCursor();
}
I've no idea where you can get it, and I download it from our domain server.
I can give you a copy if you need it, please send me message and tell me your msn.
// Call COM service to create a COPaper instance. We are not
// aggregating it so we ask for its IPaper interface directly.
hr = CoCreateInstance(
CLSID_DllPaper,
NULL,
CLSCTX_INPROC_SERVER,
IID_IPaper,
(PPVOID)&m_pIPaper);