Tastaturabfrage
-
Hallo Leute,ich hab hier ein Problemm.Und zwar will ich ,dass wenn man die Tasten 1-9 drückt,das Programm den Focus auf ein Editfeld setzt.
Dazu hab ich folgendes gemacht:
switch (message) { case WM_COMMAND: if(wParam == 0x30 (...0x39)) { SetFocus(Wert); } }
Doch wenn ich in die Editbox oder andeere Editboxen klicke geht das nicht mehr,nur ganz am Anfang ,beim einschalten des PRogramms.
Wie kann man das lösen??
-
Tastatureingaben in Editboxen kann man mit subclasses in einer eigenen CALLBACK-Funktion abfangen oder man setzt HOOK-Funktionen drüber. Beides erfordert zusätzliche Mühe.
-
Danke für die Antwort.
Hab das jetzt etwas anders gelöst.
Wenn das interessiert:in Winmain:
MSG msg; bool quit=FALSE; while(!quit) { while (PeekMessage(&msg, NULL, 0, 0,PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); if(msg.message == WM_QUIT) { quit = TRUE; } } //Hier kann man machen was man will }
Wird alles neben der Nachrichtenschleife bearbeitet.
-
Jo und jetzt guck dir mal die CPU Auslastung an
-
Lol ich hab 50%:D
Kann man das anders machen??
Es soll ja einfach nur bei einer eingabe einer Zahl in diese Wertebox switchen.Wie geht das
-
1. In der MessageLoop die WM_KEYDOWN Nachrichten übergreifend behandeln.
2. Alle Edit Controls subclassen und WM_CHAR behandeln. (Hat Berniebutt schon gesagt)PS: Solch eine Dauerloop wie Stani dies beschrebt ist dazu nicht notwendig.