我做了个东西把word嵌入mfc中,嵌入没有问题了,但是保存的时候出现的问题是:当打开(嵌入)多个word文档分别进行修改后,却只能保存第一次嵌入的哪个文档???以下是我的代码.对接口一点也不懂!谢谢! 程序是在网上找的代码做的.
//这个是得到IDispatch函数.
LPDISPATCH CEmbed_WordCntrItem::GetIDispatch()
{
ASSERT_VALID(this);
ASSERT(m_lpObject != NULL);
LPUNKNOWN lpUnk = m_lpObject;
Run();
LPOLELINK lpOleLink = NULL;
if(m_lpObject->QueryInterface(IID_IOleLink,(LPVOID FAR*)&lpOleLink)== NOERROR)
{
ASSERT(lpOleLink != NULL);
lpUnk = NULL;
if(lpOleLink->GetBoundSource(&lpUnk) != NOERROR)
{
TRACE0("Warning: Link is not connected!/n");
lpOleLink->Release();
}
ASSERT(lpUnk != NULL);
}
LPDISPATCH lpDispatch = NULL;
if(lpUnk->QueryInterface(IID_IDispatch,(LPVOID FAR*)&lpDispatch) != NOERROR)
{
TRACE0("Waring: does not support IDispatch!/n");
return NULL;
}
ASSERT(lpDispatch != NULL);
return lpDispatch;
}
//这个是嵌入函数
void CEmbed_WordView::EmbedAutomateWord1() //可以直接打开的哪个东西
{
BeginWaitCursor();
CEmbed_WordCntrItem* pItem = NULL;
TRY
{
CEmbed_WordDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pItem = new CEmbed_WordCntrItem(pDoc);
ASSERT_VALID(pItem);
CLSID clsid;
if (FAILED(::CLSIDFromProgID(L"Word.document", &clsid)))
AfxThrowMemoryException();
if (!pItem->CreateFromFile(m_sPath, clsid))
AfxThrowMemoryException();
pItem->DoVerb(OLEIVERB_SHOW, this);
m_pSelection = pItem;
pDoc->UpdateAllViews(NULL);
LPDISPATCH lpDisp;
lpDisp = pItem->GetIDispatch();
}
CATCH(CException, e)
{
if (pItem != NULL)
{
ASSERT_VALID(pItem);
pItem->Delete();
}
AfxMessageBox(IDP_FAILED_TO_CREATE);
}
END_CATCH
EndWaitCursor();
}
//这个是保存函数,
void CEmbed_WordView::OnFileSave()
{
// TODO: Add your command handler code here
// 显示打开文件对话框
CFileDialog fileDlg(FALSE, "*.doc", "*.doc", OFN_HIDEREADONLY ¦ OFN_OVERWRITEPROMPT, "Word文件(*.doc) ¦*.doc ¦ ¦", NULL);
if (fileDlg.DoModal() != IDOK)
return;
CString sPath = fileDlg.GetPathName();
char cPath[256];
memset(cPath, 0, sizeof(cPath));
memcpy(cPath, sPath, sPath.GetLength());
WCHAR wPath[256];
memset(wPath, 0, sizeof(wPath));
MultiByteToWideChar(CP_ACP, MB_COMPOSITE, cPath, sPath.GetLength(), wPath, sizeof(wPath));
IDispatch *pOle = m_pSelection->GetIDispatch();
if (!pOle )
return; // No ole document
IPersistFile *pPFile = NULL;
pOle->QueryInterface(IID_IPersistFile, (void**)&pPFile);
if (!pPFile)
{
// 不支持IPersistFile接口
if (pOle)
pOle->Release();
if (pPFile)
pPFile->Release();
}
else
pPFile->Save(wPath, FALSE);
}
怎么样才能使它在打开多个word文档时,能够保存所有的文档而不是只能保存第一次嵌入的哪个?
word嵌入vc时出现,保存的时候出现了些问题
最新推荐文章于 2015-04-02 18:44:47 发布
觉得这个帖子和现在做的东西有关联,于是把它保存一下。