Делаем пункт системного контекстного меню WPF переключаемым - PullRequest
2 голосов
/ 10 ноября 2010

У меня есть следующий код, который добавляет пункт «Всегда сверху» в системное контекстное меню, как показано в окне Chrome.Он работает правильно, но мне бы хотелось, чтобы он отображал галочку или подобное, чтобы указать, было ли оно включено / выключено.

Есть идеи, как мне это сделать?

1 Ответ

4 голосов
/ 11 ноября 2010

Вам нужно вызывать CheckMenuItem всякий раз, когда вы меняете Topmost.Подробнее см. Документ CheckMenuItem .Вот подпись P / Invoke и необходимые вам константы:

[DllImport("user32.dll")] 
private static extern bool CheckMenuItem(IntPtr hMenu, Int32 uIDCheckItem, Int32 uCheck); 

private const int MfChecked = 8;
private const int MfUnchecked = 0;

Теперь, чтобы проверить элемент, просто:

CheckMenuItem(systemMenuHandle, SettingsSysMenuId, MfChecked);

и снимите флажок:

CheckMenuItem(systemMenuHandle, SettingsSysMenuId, MfUnchecked);
...