Compartilhar via


Função TranslateAcceleratorA (winuser.h)

Processa chaves de acelerador para comandos de menu. A função converte uma mensagem de WM_KEYDOWN ou WM_SYSKEYDOWN para uma mensagem de WM_COMMAND ou WM_SYSCOMMAND (se houver uma entrada para a chave na tabela de acelerador especificada) e envia a mensagem WM_COMMAND ou WM_SYSCOMMAND diretamente para o procedimento de janela especificado. TranslateAccelerator não retornará até que o procedimento de janela tenha processado a mensagem.

Sintaxe

int TranslateAcceleratorA(
  [in] HWND   hWnd,
  [in] HACCEL hAccTable,
  [in] LPMSG  lpMsg
);

Parâmetros

[in] hWnd

Tipo: HWND

Um identificador para a janela cujas mensagens devem ser traduzidas.

[in] hAccTable

Tipo: HACCEL

Um identificador para a tabela de aceleradores. A tabela de acelerador deve ter sido carregada por uma chamada para a função LoadAccelerators ou criada por uma chamada para a função CreateAcceleratorTable.

[in] lpMsg

Tipo: LPMSG

Um ponteiro para uma estrutura de do MSG que contém informações de mensagem recuperadas da fila de mensagens do thread de chamada usando a função GetMessage ou PeekMessage.

Valor de retorno

Tipo: int

Se a função for bem-sucedida, o valor retornado não será zero.

Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.

Observações

Para diferenciar a mensagem enviada por mensagens enviadas por menus ou controles, a palavra de alta ordem do parâmetro wParam do WM_COMMAND ou WM_SYSCOMMAND contém o valor 1.

As combinações de teclas de acelerador usadas para selecionar itens na janela menu são convertidas em mensagens WM_SYSCOMMAND; todas as outras combinações de teclas de acelerador são convertidas em mensagens WM_COMMAND.

Quando TranslateAccelerator retorna um valor diferente de zero e a mensagem é traduzida, o aplicativo não deve usar a função TranslateMessage para processar a mensagem novamente.

Um acelerador não precisa corresponder a um comando de menu.

Se o comando acelerador corresponder a um item de menu, o aplicativo será enviado WM_INITMENU e WM_INITMENUPOPUP mensagens, como se o usuário estivesse tentando exibir o menu. No entanto, essas mensagens não serão enviadas se alguma das seguintes condições existir:

  • A janela está desabilitada.
  • A combinação de teclas de acelerador não corresponde a um item na janela menu e a janela é minimizada.
  • Uma captura de mouse está em vigor. Para obter informações sobre a captura do mouse, consulte a função SetCapture.
Se a janela especificada for a janela ativa e nenhuma janela tiver o foco do teclado (que geralmente será o caso se a janela for minimizada), TranslateAccelerator traduzirá mensagens WM_SYSKEYUP e WM_SYSKEYDOWN em vez de mensagens WM_KEYUP e WM_KEYDOWN.

Se ocorrer um pressionamento de teclas de acelerador que corresponda a um item de menu quando a janela que possui o menu for minimizada, TranslateAccelerator não enviará uma mensagem de WM_COMMAND. No entanto, se ocorrer um pressionamento de teclas de acelerador que não corresponda a nenhum dos itens no menu da janela ou na janela menu, a função enviará uma mensagem WM_COMMAND, mesmo que a janela seja minimizada.

Exemplos

Para obter um exemplo, consulte Criando aceleradores para atributos de fonte.

Nota

O cabeçalho winuser.h define TranslateAccelerator como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 2000 Professional [somente aplicativos da área de trabalho]
servidor com suporte mínimo Windows 2000 Server [somente aplicativos da área de trabalho]
da Plataforma de Destino Windows
cabeçalho winuser.h (inclua Windows.h)
biblioteca User32.lib
de DLL User32.dll

Consulte também

Conceitual

CreateAcceleratorTable

GetMessage

de Aceleradores de Teclado

LoadAccelerators

MSG

PeekMessage

de referência de

SetCapture

TranslateMessage

WM_COMMAND

WM_INITMENU

WM_INITMENUPOPUP

WM_KEYDOWN

WM_SYSCOMMAND

WM_SYSKEYDOWN