我做了个Document/View方式的程序,并WORD嵌入到我的View中显示,现在显示正常,但我发现我不能将嵌入的Word中的内容(*.doc)保存下来,因为用我的Document/View中的CDocument去保存的话就会用到archive,荐下来的文件是带了CArchive的附加信息的文件,不能用word直接打开,而我调用内嵌的WORD的save()时却也报“文档被其它程序使用"的错,真不知如何是好,急急急呀。。注:
我的要求很简单,就是在我的程序中以内嵌的形式来编辑Word文档(因为我要做一些控制,所以不能以弹出新的WORD窗的形式来编辑),并将编辑的内容存成WORD文件。想信有高手已做过此类程序,能给点代码或是提示吗?先行谢过各位了......(我等)

解决方案 »

  1.   

    不要调用你内嵌WORD的save(),而用WORD 新建一个文档,把内容写到这个新建的文档中,最后保存新建的文件。
      

  2.   

    LPDISPATCH lpDisp;
    lpDisp=m_pWebOfficeFrame->m_pWebOfficeView->m_pSelection->GetIDispatch();
    TCHAR szTempPath[MAX_PATH],szTempFile[MAX_PATH];
        DWORD dwResult=::GetTempPath(MAX_PATH,szTempPath);
    GetTempFileName(szTempPath,_T("TelStar_"),0,szTempFile);
    CString strTempDocPath;
    strTempDocPath=szTempFile;

    USES_CONVERSION;
    WCHAR* wcPathName=T2W(szTempFile);
    IStorage* pStorage=NULL;
    BOOL bSuccess=FALSE;
    if(SUCCEEDED(StgCreateDocfile(wcPathName,STGM_READWRITE|STGM_SHARE_EXCLUSIVE|STGM_CREATE,0,&pStorage)))
    {
    IPersistStorage* pPersistStorage=NULL;
    if(SUCCEEDED(lpDisp->QueryInterface(IID_IPersistStorage,(void**)&pPersistStorage)))
    {
    if(SUCCEEDED(OleSave(pPersistStorage,pStorage,FALSE)))
    {
    pPersistStorage->SaveCompleted(NULL);
    }
    pPersistStorage->Release();
    }
    pStorage->Release();
    }
      

  3.   

    你用的word的库里有保存的函数阿,我以前做过c#的和你一样的东东,用的office2000和word9X的库,我的保存菜单调用的就是word自己的保存函数,如果你知道word保存的快捷键组合,也可以在保存菜单的点击事件中调用这个快捷方式,这样也能调出保存窗口来
      

  4.   

    我按gjd111686(数字金刚) 的方法实现了保存功能,但我想问下gjd111686(数字金刚) ,这样嵌入进去的WORD是不是只有保存需要这样做,其它WORD方面的控制会不会有限制(如痕迹保留等)???我怕以后做到相关的控制时又出现不能做的情况就麻烦了另我按 iamknight(侠客)的做法想新建一个文档再来做操作,但我好像一调用documents的add时就会报出“文档正被其它程序使用”之类的错,不知如何做,能否给点提示??请回答一下我的问题好吗?(我准备结贴了)