我正在尝试开发Windows Office插件int ppt。那里有一个登录按钮。其初始状态未登录。单击它时,其状态更改为登录,我需要更改其上方的文本,我查询要更新的功能是RibbonUI InvalidateControl或Invalidate,但是当我调用这些功能时,单击事件发生当机。但这在office2013中很好。为什么?
STDMETHOD(UILoad)(IDispatch* ribbon)
{
m_ribbonUI = ribbon;
//m_ribbonUI.InvalidateControl(_T("LoginButton"));
return S_OK;
}
STDMETHODIMP CConnect::LoginButtonClicked( IDispatch* ribbon )
{
CConnect::loginLable = CComBSTR(_T("Logged"));
m_ribbonUI.InvalidateControl(_T("LoginButton"));
return S_OK;
}
这是我的项目地址:
https://github.com/Barmaco/NativeAddIn
谢谢!
最佳答案
注意,对ribbon
对象接口(interface)的引用作为参数传递给每个相关的回调调用。因此,缓存对调用UILoad
期间获得的接口(interface)的引用可能不是一个好主意,因为由于后来的自定义或优化可能会重新创建基础对象,并且所引用的对象不再有效。因此,更喜欢使用作为函数参数传递的ribbon
接口(interface)。
关于c++ - 在Office2007中使用CRibbonUI.InvalidateControl或CRibbonUI.Invalidate时崩溃,但在office2013中很好,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49168907/