Я следил за этим документом 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_BOOL * на VARIANT *
Я тоже попробовал, но тоже не повезло
Есть идеи?
Задача ещё не решена.
Других решений пока нет …