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 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 |