我们遇到了同样的问题。
我们曾经检查过“兼容性优化”,它在 Office 版本 2202(内部版本 16.0 14931.20132)之前运行良好,并且从 Office 版本 2203(内部版本 16.0 15028.20160)开始停止工作。现在,Word 被取代。
知道如何解决这个问题吗?
CIStorage ciStorage(pStorage);
IFT(!ciStorage.IsEmpty() || COMCALL(StgCreateDocfile(NULL, STGM_SHARE_DENY_WRITE|STGM_DELETEONRELEASE|STGM_READWRITE|STGM_TRANSACTED|STGM_CREATE,
0,顺存储)))
{
CIOleObject ciOleObject;
IFCOM(OleCreateFromFile(CLSID_NULL,cbsFileName,ciOleObject.iidOf(),renderopt,pFormatetc,pSite,ciStorage,
ciOleObject))
{
CLSID_NULL:如记录的 cbsFileName:{m_bstr=0x0000027a33146098
L"C:\ProgramData\MEGA\Hopex 应用程序
服务器\5000\.shadowFiles\hopex.core\15.5.0+6267\Mega_Std\megastyl620.dot"
} renderopt : null pFormatetc : null pSite : 我们的站点组件
实现以下接口:public IOleClientSite,
公共 IOleInPlaceSite,
公共 IOleDocumentSite,
公共 IAdviseSink,
公共 IServiceProvider,
公共 IInternetSecurityManager,
公共 IDocHostUIHandler ciStorage:存储
步骤 2:显示嵌入在我们的 windows 应用程序中的 Word
https://learn.microsoft.com/en-us/windows/win32/api/oleidl/nf-oleidl-ioleobject-doverb
if(!(bOK = (m_ciOleObject.DoVerb(lVerb, &stMsg, m_pSite, 0L ,
m_pSite->m_hWndSite, m_pSite->m_rcClip) == S_OK)))
lVerb:-1(匹配 OLEIVERB_SHOW) sMsg:空 m_pSite:我们的站点
m_pSite->m_hWndSite :必须嵌入单词的父 HWND。
m_pSite->m_rcClip : 我们想要的区域的坐标
插入 OLE 对象(单词)。例如:{LT(0, 0) RB(943, 437)
[943 x 437]}。
需要注意的是DoVerb是在OLE Object创建之后直接调用的。
我们尝试了以下不同的动词,但没有成功。
OLEIVERB_PRIMARY (0L)
OLEIVERB_SHOW (-1)
OLEIVERB_UIACTIVATE (-4)
始终支持这些 API。
我们想知道如何解决这个问题。