我按照此文档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 *
我也试过了,但也没有运气
有什么想法吗?