Главная » C++ » TranslateAccelerator и отключенные пункты меню
TranslateAccelerator и отключенные пункты меню
В моем приложении я включаю / отключаю элементы меню в зависимости от контекста — и если текстовая область имеет фокус, я отключаю ускорители, которые будут конфликтовать с клавишами навигации (например, Ctrl-Left / Right).
Если акселератор имеет тот же идентификатор, что и пункт меню, а пункт меню отображается серым цветом или отключен, акселератор отключается и не генерирует сообщение WM_COMMAND или WM_SYSCOMMAND.
Однако, если связанный ускоритель меню все еще находится в таблице ускорителей, TranslateAccelerator по-прежнему возвращает true, несмотря на то, что не отправляет никакого сообщения (таким образом, «съедая» событие клавиатуры).
Мне интересно, есть ли способ определить, действительно ли TranslateAccelerator отправил сообщение? Я пытаюсь избежать перестроения таблицы акселераторов при каждом включении или отключении пункта меню.