Я пытаюсь добавить контекстные меню в (большой) пользовательский элемент управления в моем приложении, но столкнулся с рядом проблем, связанных с тем, когда их создавать.
Существует 3 случая, когда необходимо создать контекстное меню (если я не забыл одно ...) щелчком правой кнопки мыши, когда нажата клавиша меню и для Shift + F10. Во всех случаях меню создается и отображается методом ContextMenu.
Правая мышь делает какие-то другие специальные вещи и поэтому не всегда должна создавать контекстное меню. Я обрабатываю различные события мыши и вызываю ContextMenu по мере необходимости, и все это прекрасно работает.
Проблема с контекстными меню, генерируемыми клавиатурой. Я установил обработчик в моем элементе управления для EVT_CONTEXT_MENU, который затем просто вызывает ContextMenu. В большинстве случаев обе комбинации клавиш просто игнорируются. Иногда Shift + F10 работает правильно, но в тех же случаях клавиша меню как-то вызывает мои обработчики щелчка правой кнопкой мыши, что приводит к некорректному поведению ...
Для клавиши меню я также пытался обрабатывать события клавиш, но клавиша меню, кажется, никогда не вызывает их в wxWidgets, хотя все остальные клавиши работают нормально ...
Почему ключевые методы так или иначе игнорируются wxWidgets. Они должны работать, пока контроль сосредоточен. Когда они начинают «работать», они продолжают работать до тех пор, пока он снова не потеряет фокус, но я не уверен, почему они не начинают с того, что заставляет их работать (я не обращаюсь ни к какому-либо контекстному меню или ключевым событиям где-либо еще в мое тестовое приложение).
Как событие клавиши меню попадает в мой обработчик EVT_RIGHT_UP вместо событий клавиш или событий контекстного меню?
Полагаю, что в моем понимании того, как wxWidgets обрабатывает эти ключи, что-то в корне неверно, однако, просмотрев документацию и информацию в сети в течение некоторого времени, я не нашел никакой информации относительно моих проблем.
Я использую wxMSW 2.8.10 в Windows Vista.