Поделиться через


Обработка клавиатуры для элементов управления

Элемент управления реагирует на ускорители клавиатуры, поэтому конечный пользователь может инициировать действия, выполняемые элементом управления. Контейнер управляет действием клавиатуры для всех встроенных элементов управления. С составными документами ускорители клавиатуры применяются только к активному объекту. С элементами управления был добавлен механизм, позволяющий элементу управления реагировать на его клавишные сочетания, даже если он в настоящее время не активен в пользовательском интерфейсе.

Методы IOleControl::GetControlInfo и IOleControl::OnMnemonic и метод IOleControlSite::OnControlInfoChanged обрабатывают клавиатурные мнемоники элемента управления. Структура CONTROLINFO описывает мнемонические ускорители элемента управления, а флаги, передаваемые обратно через метод GetControlInfo, описывают поведение элемента управления при нажатии клавиш Enter и Esc. При изменении мнемоник элемент управления вызывает OnControlInfoChanged, чтобы контейнер при необходимости перезагрузил структуру.

Если элемент управления активен в интерфейсе пользователя, он также является элементом управления с фокусировкой. Так как элементы управления активируются и деактивируются между активными на месте и активными состояниями пользовательского интерфейса, элемент управления вызывает IOleControlSite::OnFocus, чтобы сообщить контейнеру таких изменений.

Кроме того, при активном пользовательском интерфейсе элемент управления будет иметь первый шанс обработать все нажатия клавиш. Чтобы предоставить контейнеру возможность обрабатывать нажатие клавиш перед элементом управления, элемент управления вызывает IOleControlSite::TranslateAccelerator. Если контейнер не обрабатывает нажатие клавиш, элемент управления обрабатывает его.

контролы ActiveX