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