Control de teclado para controles

Un control responde a los aceleradores de teclado para que el usuario final pueda iniciar acciones realizadas por el control. El contenedor administra la actividad de teclado para todos sus controles incrustados. Con documentos compuestos, los aceleradores de teclado solo se aplican al objeto activo actualmente. Con los controles, se ha agregado un mecanismo para que un control pueda responder a sus mnemonics de teclado incluso si no está activo actualmente en la interfaz de usuario.

Los métodos IOleControl::GetControlInfo e IOleControl::OnMnemonic y IOleControlSite::OnControlInfoChanged controlan los mnemonics de teclado de un control. Una estructura CONTROLINFO describe los aceleradores mnemónicos de un control y las marcas que se pasan con él a través del método GetControlInfo describen el comportamiento de los controles con las teclas Entrar y Esc. Cuando un control cambia sus mnemonics, llama a OnControlInfoChanged para que el contenedor pueda volver a cargar la estructura si es necesario.

Cuando un control está activo, también es el control con el foco. A medida que los controles se activan y desactivan entre el activo local y los estados activos de la interfaz de usuario, el control llama a IOleControlSite::OnFocus para indicar al contenedor de estos cambios.

Además, cuando un control está activo en la interfaz de usuario, tendrá la primera oportunidad de procesar las pulsaciones de tecla. Para dar a un contenedor la oportunidad de procesar la pulsación de tecla antes del control, el control llama a IOleControlSite::TranslateAccelerator. Si el contenedor no controla la pulsación de tecla, el control lo procesa.

Controles ActiveX