void AddinUi::InstallButtons(Office::CommandBarControlsPtr menu_items, CMenu* popup_menu ) { // For each items in the menu, for (UINT i = 0; i < popup_menu->GetMenuItemCount(); ++i) { CMenu* sub_menu = popup_menu->GetSubMenu(i); // set item caption CString item_caption; popup_menu->GetMenuString(i, item_caption, MF_BYPOSITION); // create new menu item. Office::CommandBarControlPtr item; menu_items->Add( variant_t(long(Office::msoControlButton)), vtMissing, vtMissing, vtMissing, variant_t(true), &item); // obtain command id from menu UINT command_id = popup_menu->GetMenuItemID(i); CString caption; caption.LoadString(command_id); item->put_Caption(bstr_t(caption)); CString parameter; parameter.Format(L"%d", command_id); item->put_Parameter(bstr_t(parameter)); // Set unique tag, so that the command is not lost CString tag; tag.Format(L"%s_%d", ADDON_NAME, command_id); item->put_Tag(bstr_t(tag)); UpdateButton(item, command_id); m_buttons.Add(new ClickEventRedirector(item, tag, command_id)); } }
/**----------------------------------------------------------------------------- Initializes menu or toolbar item's caption, icon, and command id. ------------------------------------------------------------------------------*/ void InitializeItem(Office::CommandBarControlPtr item, UINT command_id) { CString caption; caption.LoadString(command_id); item->put_Caption(bstr_t(caption)); // The target action is marker add-on, since we work using MarkerEvent. // For more information about that, see the article in MSDN: // http://msdn.microsoft.com/en-us/library/aa140366.aspx CString parameter; parameter.Format(L"%d", command_id); item->put_Parameter(bstr_t(parameter)); // Set unique tag, so that the command is not lost CString tag; tag.Format(L"%s_%d", ADDON_NAME, command_id); item->put_Tag(bstr_t(tag)); m_buttons.Add(new ClickEventRedirector(item)); }