void AddinUi::UpdateButtons() { Office::_CommandBarsPtr cbs = theApp.GetVisioApp()->CommandBars; for (size_t i = 0; i < m_buttons.GetCount(); ++i) { ClickEventRedirector* button = m_buttons[i]; Office::CommandBarControlPtr control; cbs->FindControl(vtMissing, vtMissing, variant_t(button->m_tag), vtMissing, &control); if (control != button->m_punk) { button->DispEventUnadvise(button->m_punk); button->m_punk = control; button->DispEventAdvise(button->m_punk); } UpdateButton(control, button->m_cmd_id); } }