Tabelas acelerador

Uma tabela de teclas aceleradoras consiste de uma matriz de ACCEL estruturas, cada uma definindo um acelerador individual. Cada estrutura ACCEL inclui as seguintes informações:

Para processar pressionamentos de tecla aceleradora para um determinado segmento, o desenvolvedor deve chamar o TranslateAccelerator função no loop de mensagem associado com fila de mensagens do thread. O TranslateAccelerator função monitora a entrada do teclado para a fila de mensagens, verificação de combinações de teclas que correspondam a uma entrada na tabela de teclas aceleradoras. Quando TranslateAccelerator localiza uma correspondência, ele traduz a entrada do teclado (ou seja, o WM_KEYUP e WM_KEYDOWN mensagens) em uma mensagem de WM_COMMAND ou WM_SYSCOMMAND e, em seguida, envia a mensagem para o procedimento janela da janela especificada. A ilustração a seguir mostra como os aceleradores são processados.

A mensagem WM_COMMAND inclui o identificador do acelerador que causou TranslateAccelerator gerar a mensagem. O procedimento janela examina o identificador para determinar a origem da mensagem e, em seguida, processa a mensagem de acordo.

Tabelas acelerador existem em dois níveis diferentes. O sistema mantém uma tabela de teclas aceleradoras único, todo o sistema que se aplica a todos os aplicativos. Um aplicativo não é possível modificar a tabela de Teclas Aceleradoras do sistema. Para obter uma descrição dos aceleradores fornecido pela tabela de teclas aceleradoras de sistema, consulte Atribuições de pressionamento de tecla acelerador.

O sistema também mantém acelerador tabelas para cada aplicativo. Um aplicativo pode definir qualquer número de tabelas de acelerador para uso com o seus próprio windows. Um exclusivo 32-bit identificador (HACCEL) identifica cada tabela. No entanto, tabela de teclas aceleradoras apenas um pode estar ativa por vez, para um determinado segmento. O identificador para o tabela de teclas aceleradoras passada para a TranslateAccelerator função determina qual tabela de aceleração está ativa para um thread. Tabela de teclas aceleradoras activa pode ser alterada a qualquer momento, passando um identificador de tabela de teclas aceleradoras diferentes para TranslateAccelerator.

Index