Avatar billede zerohero Nybegynder
05. marts 2005 - 16:30 Der er 4 kommentarer og
1 løsning

WM_KEYDOWN Messages

Når jeg modtager messages fra Windows, kan jeg kun modtage store bogstaver med WM_KEYDOWN. Er der en måde jeg kan både få store og små bogstaver? Desuden kan jeg heller ikke rigtigt hitte ud af hvornår der bliver tastet eksempelvis: [Venstre pil] eller [%]?

Nogen der har et godt forslag?
Avatar billede nlf Nybegynder
06. marts 2005 - 11:33 #1
Du skal kigge på om shift-tasten er trykket ned, hvilket kan gøres ved at tjekke GetKeyState(VK_SHIFT);
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputfunctions/getkeystate.asp

VK_SHIFT gælder for begge shift-taster.

For at tjekke om shift holdes nede, kan du gøre følgende i din WindowProc:
char a;

case WM_KEYDOWN:
if (wParam >= 'A' && wParam <= 'z')
{
  if (!(GetKeyState(VK_SHIFT) << 15))  // Hvis shift ikke holdes nede
  a = wParam + 31; // a er det lille bogstav
  else
  a = wParam; // a er det store bogstav
}
break;
Avatar billede nlf Nybegynder
06. marts 2005 - 11:36 #2
For at tjekke de specielle taster, som %, ¤, # osv, skal du igen tjekke shift-tasten, da disse jo ikke kan trykkes uden at holde shift nede.
Ligeledes vil VK_CONTROL og VK_ALT give dig information om control og alt tasternes nuværende status.
Avatar billede zerohero Nybegynder
06. marts 2005 - 15:47 #3
Vil GetKeyState() også kunne skelne om [Caps Lock] er aktiv?
Avatar billede nlf Nybegynder
06. marts 2005 - 19:57 #4
Jep, det er netop der adskiller den fra at "hente" tastetrykket fra en almindelig WM_KEYDOWN besked, for den laveste bit (dvs. et bitshift 15 til venstre vil give os dens status) fortæller om tasten er aktiv eller ej.
Caps Lock hedder i øvrigt VK_CAPITAL, men det har du jo sikkert selv fundet frem til.
Avatar billede zerohero Nybegynder
06. marts 2005 - 20:37 #5
Mange mange tak!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester