Compartilhar via


Função TranslateAcceleratorW (winuser.h)

Processa chaves de acelerador para comandos de menu. A função converte uma mensagem 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, em seguida, envia a mensagem WM_COMMAND ou WM_SYSCOMMAND diretamente para o procedimento de janela especificado. TranslateAccelerator não retorna até que o procedimento de janela tenha processado a mensagem.

Sintaxe

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

Parâmetros

[in] hWnd

Digite: HWND

Um identificador para a janela cujas mensagens devem ser convertidas.

[in] hAccTable

Tipo: HACCEL

Um identificador para a tabela de aceleradores. A tabela de aceleradores 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 MSG que contém informações de mensagem recuperadas da fila de mensagens do thread de chamada usando a função GetMessage ou PeekMessage .

Retornar valor

Tipo: int

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

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

Comentários

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

As combinações de teclas de aceleração usadas para selecionar itens no menu da janela 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 é convertida, 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 no menu da janela 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 converterá mensagens WM_SYSKEYUP e WM_SYSKEYDOWN em vez de mensagens WM_KEYUP e WM_KEYDOWN .

Se ocorrer um pressionamento de tecla de acelerador que corresponda a um item de menu quando a janela que possui o menu for minimizada, TranslateAccelerator não enviará uma mensagem WM_COMMAND . No entanto, se ocorrer um pressionamento de tecla de acelerador que não corresponda a nenhum dos itens no menu da janela ou no menu da janela , 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.

Observação

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 de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.

Requisitos

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

Confira também