Я пытаюсь разработать плагин для офиса Windows int ppt. Там есть кнопка входа в систему. Его начальное состояние не зарегистрировано. Когда я нажимаю на него, его статус изменяется на логин, мне нужно изменить текст над ним, я запрашиваю функцию обновления — RibbonUI InvalidateControl или Invalidate, но когда я вызываю эти функции, в щелчке Событие случилось с катастрофой. Но это хорошо в офисе2013. Зачем?
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
интерфейс объекта передается как параметр для каждого связанного обратного вызова. Следовательно, кеширование ссылки на интерфейс, полученный во время вызова UILoad
может не быть хорошей идеей, так как базовый объект может быть воссоздан из-за более поздней настройки или оптимизации, и указанный объект больше не действителен. Поэтому предпочитаю использовать ribbon
интерфейс передается как параметр функции.
Других решений пока нет …