private void OnAddMenu(IContextMenuCallback piCallback, ArrayList menuItems, InsertionPointId insertionPointId) { if (menuItems != null) { foreach (ContextMenuItem item in menuItems) { if (item.Visible) { ContextSubMenuItem subMenuItem = item as ContextSubMenuItem; if (subMenuItem == null) { AddItem(piCallback, item, insertionPointId); } else { AddItem(piCallback, subMenuItem, insertionPointId); // Iterate through each sub menu. foreach (ContextMenuItem menuItem in subMenuItem.MenuItems) { if (menuItem.Visible) { AddItem(piCallback, subMenuItem, menuItem); } } } } } } }
private void AddItem(IContextMenuCallback piCallback, ContextSubMenuItem subMenuItem, InsertionPointId insertionPointId) { MmcContextMenuItem item = new MmcContextMenuItem(); item.Name = subMenuItem.Name; item.StatusBarText = subMenuItem.StatusText; item.CommandId = subMenuItem.CommandId; item.InsertionPointId = (uint)insertionPointId; item.Flags = (int)ContextMenuFlags.Popup; item.SpecialFlags = 0; piCallback.AddItem(ref item); }
private void AddItem(IContextMenuCallback piCallback, ContextMenuItem menuItem, InsertionPointId insertionPointId) { MmcContextMenuItem newItem = new MmcContextMenuItem(); newItem.Name = menuItem.Name; newItem.StatusBarText = menuItem.StatusText; newItem.CommandId = menuItem.CommandId; newItem.InsertionPointId = (uint)insertionPointId; if (menuItem.IsSeparator) { newItem.Flags = (int)ContextMenuFlags.Separator; } else { newItem.Flags = (menuItem.IsChecked ? (int)ContextMenuFlags.Checked : (int)ContextMenuFlags.Unchecked) | (menuItem.IsEnabled ? (int)ContextMenuFlags.Enabled : (int)(ContextMenuFlags.Grayed | ContextMenuFlags.Disabled)); } newItem.SpecialFlags = menuItem.IsDefault ? (int)ContextMenuFlags.SpecialDefaultItem : 0; piCallback.AddItem(ref newItem); }