zoukankan      html  css  js  c++  java
  • IPersistFile的Save函数在WORD2003中的缺陷

    IPersistFile的Save函数可以保存当前文件,如果在WORD2003中打开一个WORD2007格式的文件,并调用Save函数,你会发现原先的2007格式丢失,当前文档成为了97-03格式。由于后缀名依然为.docx,导致WORD2007打开文档时出错。如果你将出错文档的扩展名修改为.doc就可以打开。也就是说在调用Save函数时,WORD2003并没有考虑被打开文档的格式,而是统一以97-03格式保存。测试代码如下:

     1 CComPtr<IOleObject> pole  = NULL;
     2 CComPtr<IBindCtx> pbctx   = NULL;
     3 CComPtr<IMoniker> pmkfile = NULL;
     4 
     5 HRESULT hr = S_OK;
     6 BIND_OPTS bopts = { sizeof(BIND_OPTS), BIND_MAYBOTHERUSER, 0, 10000 };
     7 
     8 LPOLESTR pwszFile = _T(“D:\\Test.docx”);
     9 
    10 bopts.grfMode = (STGM_TRANSACTED | STGM_SHARE_DENY_WRITE | STGM_READWRITE);
    11 
    12 ::CoInitialize(NULL);
    13 
    14 hr = CreateBindCtx(0, &pbctx);
    15 hr = pbctx->SetBindOptions(&bopts);
    16 hr = CreateFileMoniker(pwszFile, &pmkfile);
    17 hr = pmkfile->BindToObject(pbctx, NULL, IID_IOleObject, (void**)&pole);
    18 
    19 CComPtr<IPersistFile> ppfile;
    20 
    21 hr = pole.QueryInterface<IPersistFile>(&ppfile);
    22 hr = ppfile->Save(NULL, TRUE);
    23 
    24 ::CoUninitialize();

     

  • 相关阅读:
    linux软件安装
    shell脚本
    ssh密钥登录及远程执行命令
    shell编程
    vi编辑器
    linux入门
    《玩转Bootstrap(JS插件篇)》笔记
    SharePoint BI
    Apache-ActiveMQ transport XmlMessage
    C#操作AD及Exchange Server总结(二)
  • 原文地址:https://www.cnblogs.com/junchu25/p/2631152.html
Copyright © 2011-2022 走看看