hi - i had same and solved it :
signature idl file:
HRESULT OnLoad([in] IDispatch* pRibbon);
STDMETHODIMP CConnect::OnLoad(IDispatch* pRibbon)
{
pRibbon->QueryInterface(__uuidof(Office::IRibbonUI), (void**)&m_pRibbonUI);
return S_OK;
}
CComPtr<office::iribbonui xmlns:office="#unknown"> m_pRibbonUI;</office::iribbonui>
and than just call where you need
m_pRibbonUI->Invalidate();
and dont forget invalidate refresh all of your custom controls to re-initialize, better if you use
InvalidateControl(string controlID)