Making a WPF system context menu item toggleable?

You need to call CheckMenuItem whenever you change Topmost. See the CheckMenuItem documentaton for details. Here's the P/Invoke signature and constants you'll need.

Up vote 1 down vote favorite share g+ share fb share tw.

I have the following code, which adds an 'Always on Top' item to the system context menu as displayed on the window chrome. It works correctly, but I'd like it to display a check mark or similar to indicate if it's been toggled on/off. Any idea how I can do this?

Public RibbonShell() { InitializeComponent(); Loaded += (s,e) => { // Get the Handle for the Forms System Menu var systemMenuHandle = GetSystemMenu(Handle, false); // Create our new System Menu items just before the Close menu item InsertMenu(systemMenuHandle, 5, MfByposition | MfSeparator, 0, string. Empty); // /// This is the Win32 Interop Handle for this Window /// public IntPtr Handle { get { return new WindowInteropHelper(this). Handle; } } private IntPtr WindowCommandHandler(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) { // Check if a System Command has been executed if (msg == WmSyscommand && wParam.

ToInt32() == SettingsSysMenuId) { Topmost =! Topmost; handled = true; } return IntPtr. Zero; } wpf contextmenu user32 winapi link|improve this question asked Nov 10 '10 at 11:49Marcus78739 93% accept rate.

You need to call CheckMenuItem whenever you change Topmost. See the CheckMenuItem documentaton for details. Here's the P/Invoke signature and constants you'll need: DllImport("user32.

Dll") private static extern bool CheckMenuItem(IntPtr hMenu, Int32 uIDCheckItem, Int32 uCheck); private const int MfChecked = 8; private const int MfUnchecked = 0; Now to check the item, just: CheckMenuItem(systemMenuHandle, SettingsSysMenuId, MfChecked); and to uncheck: CheckMenuItem(systemMenuHandle, SettingsSysMenuId, MfUnchecked).

I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.

Related Questions