WM_KEYDOWN



  • hallo liebe com,

    ich schlage mich seit einiger zeit mit einem fehler rum.
    ich will, dass wenn eine msg geschickt wird, überprüft wird ob es ein 'a' war, und dann soll er ausgeben in einer MessageBox dass ein a gedrückt wurde.
    ich weiß meine frage ist ein bisschen unverständlich desshalb poste ich hier mal den fehlerhaften code..

    case WM_KEYDOWN:
    
    		if (WM_KEYDOWN == 'A' | WM_KEYDOWN == 'a') // hier soll ////////überprüft werden ob es a oder A ist
    		{
    			MessageBox( hWnd, "a wurde gedrückt", "Taste", MB_OK );
    		}else{
    			MessageBox( hWnd, "Fail", "Taste", MB_OK ); // aber egal welche taste ich drücke, immer kommt das else
    		}
    
    		break;
    

    ich danke schonmal im vorraus
    mfg



  • WM_KEYDOWN ist eine Windows-Nachricht, damit bist du hier eindeutig im falschen Board. Außerdem ist es eine Konstante, also macht es wenig Sinn, sie mit irgendwelchen char-Werten zu vergleichen.

    Welche Taste dort gedrückt wurde, kannst du aus dem wParam der Nachricht herauslesen.



  • Dieser Thread wurde von Moderator/in CStoll aus dem Forum C++ (auch C++0x) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • danke für den tipp.
    ich habs herausgefunden durch deine hilfe 🙂

    sry für das posten im falchem bereich

    das jetzt der richtige code

    case WM_KEYDOWN:
    
    		if (wParam == 0x41)
    		{
    			MessageBox( hWnd, "a wurde gedrückt", "Taste", MB_OK );
    		}else{
    			MessageBox( hWnd, "Fail", "Taste", MB_OK );
    		}
    
    		break;
    

    close please



  • Nur ein kleiner Tipp: wenn du möchtest, dass dein Programm immer auf eine betimmte Taste, in dem Fall also "a" reagiert, solltest du ein character lateral nehmen, weil manche Systeme die ASCII-Zeichen anders kodieren. Wenn du 'a' schreibst, sagst du dem System eindeutig, dass es das Zeichen nehmen soll.



  • Andere Systeme haben aber vermutlich auch keine WM_KEYDOWN - Message.


Anmelden zum Antworten