Ir ao conteúdo
  • Cadastre-se

C como capturo uma tecla em c


MatheusRL

Posts recomendados

@MatheusRL Você pode usar a função GetAsyncKeyState() em um loop para determinar se as teclas que você quer avaliar, são pressionadas.

Eu falei disso em outra postagem:

 

2 horas atrás, MatheusRL disse:

usando esse código

 

VK_MBUTTON

Da uma olhada nos códigos virtuais das teclas aqui.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

1 hora atrás, Lucca Rodrigues disse:

Você pode usar a função GetAsyncKeyState() em um loop para determinar se as teclas que você quer avaliar, são pressionadas

 

Pode, mas como eu te disse naquele tópico isso não funciona mais direito. Está claro na documentação. GetAsyncKeyState() durante uns anos era isso: ela trazia o estado da tecla, de modo assíncrono. E também síncrono. E retorna as duas coisas até hoje. Ou tenta. Como eu te expliquei ela retorna um short, 16 bits. E não verdadeiro/falso como seu exemplo parece supor.

 

O que ainda funciona é que ela diz se a tecla está pressionada. O lado síncrono.

O que não funciona é o que está no nome dela, o assíncrono, que diz se a tecla foi pressionada desde chamada anterior.

 

Entenda que os eventos de tecla vem aos pares: primeiro aperta depois solta a tecla: Press/Release. E o que você quer em geral é o segundo. De certo modo Repeat também é um evento.

 

Quando seu programa está rodando e a janela tem o foco cada vez que o usuário solta uma tecla sua janela recebe a mensagem WM_KEYUP e lá claro vem o código da tecla e outras coisas. 

 

Os eventos de entrada no Windows preenchem essa estrutura
 

typedef struct _KEY_EVENT_RECORD {
  BOOL  bKeyDown;
  WORD  wRepeatCount;
  WORD  wVirtualKeyCode;
  WORD  wVirtualScanCode;
  union {
    WCHAR UnicodeChar;
    CHAR  AsciiChar;
  } uChar;
  DWORD dwControlKeyState;
} KEY_EVENT_RECORD;

 

E acho que os nomes falam por si só. E é isso que você deve tratar nas versões de Windows pós anos 80.

 

  • Curtir 2
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!