Compartilhar via


Manipulação do teclado para controles

Um controle responde aos aceleradores de teclado para que o usuário final possa iniciar ações executadas pelo controle. O contêiner gerencia a atividade do teclado para todos os seus controles incorporados. Com documentos compostos, os aceleradores de teclado se aplicam somente ao objeto ativo no momento. Com os controles, um mecanismo foi adicionado para que um controle possa responder aos seus mnemônicos de teclado mesmo que ele não esteja ativo na interface do usuário no momento.

Os métodos IOleControl::GetControlInfo e IOleControl::OnMnemonic e o método IOleControlSite::OnControlInfoChanged manipulam os mnemônicos de teclado de um controle. Uma estrutura CONTROLINFO descreve os aceleradores mnemônicos de um controle, e os sinalizadores passados de volta com ele através do método GetControlInfo descrevem o comportamento dos controles com as teclas Enter e Esc. Quando um controle altera seus mnemônicos, ele chama OnControlInfoChanged para que o contêiner possa recarregar a estrutura, se necessário.

Quando um controle está ativo na interface do usuário, ele também é o controle com o foco. À medida que os controles são ativados e desativados entre os estados ativo in-loco e ativo da interface do usuário, o controle chama IOleControlSite::OnFocus para informar o contêiner de tais alterações.

Além disso, quando um controle estiver ativo na interface do usuário, ele terá a primeira chance de processar quaisquer pressionamentos de tecla. Para dar a um contêiner a oportunidade de processar o pressionamento de tecla antes do controle, o controle chama IOleControlSite::TranslateAccelerator. Se o contêiner não manipular o pressionamento de tecla, o controle o processará.

Controles ActiveX