public void UpdateMenu(SystemMenuItem menuItem) { var mii = new MENUITEMINFO { fMask = MIIM_CHECKMARKS | MIIM_DATA | MIIM_FTYPE | MIIM_ID | MIIM_STATE | MIIM_STRING }; mii.cbSize = (uint)Marshal.SizeOf(mii); PInvokeUtils.Try(() => GetMenuItemInfo(_hSysMenu, menuItem.Id, false, ref mii)); if (menuItem.Enabled) { mii.fState &= (~MFS_DISABLED); // clear "disabled" flag } else { mii.fState |= MFS_DISABLED; // set "disabled" flag } if (menuItem.Checked) { mii.fState |= MFS_CHECKED; // set "checked" flag } else { mii.fState &= (~MFS_CHECKED); // clear "checked" flag } mii.fMask = MIIM_STATE; PInvokeUtils.Try(() => SetMenuItemInfo(_hSysMenu, menuItem.Id, false, ref mii)); // TODO: From my observations, this function always returns false, even though it appears to succeed. // Am I using it incorrectly? DrawMenuBar(_hSysMenu); }
public SystemMenuItem CreateMenuItem(string text = null, EventHandler clickHandler = null) { var menuItem = new SystemMenuItem(_menuItemIdCounter++) { Text = text }; if (clickHandler != null) { menuItem.Clicked += clickHandler; } return(menuItem); }
public void InsertMenu(uint position, SystemMenuItem menuItem) { PInvokeUtils.Try(() => InsertMenu(_hSysMenu, position, MF_BYPOSITION | MF_STRING, menuItem.Id, menuItem.Text)); _items.Add(menuItem); }
public void AppendMenu(SystemMenuItem menuItem) { PInvokeUtils.Try(() => AppendMenu(_hSysMenu, MF_STRING, menuItem.Id, menuItem.Text)); _items.Add(menuItem); }