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


  • Mod

    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.


Anmelden zum Antworten