在C ++ ATL中重新调整Word按钮回调问题

时间:2013-03-15 15:35:25

标签: c++ com automation atl office-automation

我按照此文档http://msdn.microsoft.com/en-us/library/office/bb462633(v=office.12).aspx重新调整Word按钮/切换按钮(如复制,剪切和粗体),并能够成功复制VSTO C#项目中的行为。

我正在尝试将其用于用C ++ / ATL编写的遗留词插件项目。

对于我带的xml:

<command idMso='Cut' onAction='MyOnAction'/>
我在IDL中的

[id(1), helpstring("method MyOnAction")] HRESULT MyOnAction([in] IDispatch* pRibbonCtrl, [in,out] VARIANT_BOOL *fCancelDefault);

在Connect.cpp中我有

STDMETHODIMP CConnect::MyOnAction(IDispatch* pRibbonCtrl, VARIANT_BOOL* bRet)
{
MessageBox(NULL,"I'm here!","APP",MB_OK);
*bRet = VARIANT_FALSE;
return S_OK;
} 

单击Bold时,我从未真正看到消息框。此外,所选文本也不会变为粗体(未报告错误)

我在网上搜索并发现了一些可追溯到2010年的讨论,声称onAction签名的回调实际上是不正确的(http://www.office-outlook.com/outlook-forum/index.php/t/214992/),应该是:

STDMETHODIMP CConnect::MyOnAction(IDispatch* pRibbonCtrl, VARIANT* bRet)

即。用VARIANT *替换VARIANT_BOOL *

我也试过了,但也没有运气

有什么想法吗?

0 个答案:

没有答案