WM_KEYUP - STRG-Taste + A gedrückt?



  • Hi!

    Bin schon ziemlich lange im Forum am suchen, wie ich mit WM_KEYUP abfragen kann ob STRG+A (oder +B (egal)) gedrückt wurde. Hab aber leider nichts gefunden.
    Hoffe ihr könnt mir sagen wie ich das mache....

    Gruß,
    Dago



  • Wenn bei WM_KEYUP ein 'A' empfangen wird noch zusätzlich mit GetKeyState(VK_CONTROL) prüfen, ob STRG gedrückt ist...



  • OK.... sorry *selbstankopfklatsch*...
    WM_KEYUP wird ja nur empfangen, wenn das Fenster gerade den Focus hat...

    In meinem Programm gibt es ein EDIT Fenster... wenn STRG+A gedrückt wird soll der gesamte Text markiert werden. Wie ich den Text markieren und so ist kein Problem... Muss nur wissen wie ich STRG+A abfange.

    Danke nochmal..

    Gruß,
    Dago



  • da musst du das edit-feld subclassen und dort WM_KEYUP abfangen.



  • Wie kann ich ein Edit-Feld subclassen? Sorry, hab fast noch nie mit EDIT-Feldern gearbeitet...



  • schau mal im forum nach (tipp: suche 😉 ).

    du brauchst die funktion SetWindowLong, um die Prozedur für das Edit-Feld auszutauschen.



  • Was ist denn das fürn Edit-Feld ? - Machen die Windows-Edit-Controls das nich sowieso bei STRG+A von selber ?



  • Ok, danke für die Hilfe. Hab mit euren Infos jetzt noch ein bisschen im Forum rumgesucht und ne Lösung gefunden. Habs jetzt so geschafft:

    WNDPROC wpOrigEditProc; 
    
    LRESULT APIENTRY SubclassProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam) { 
        switch (uMsg) { 
          case WM_KEYDOWN: 
                if ((GetKeyState(VK_CONTROL) & (1 << 15)) && (int)wParam == 'A') 
                  SendMessage(hwnd_edit,EM_SETSEL,(WPARAM) (INT) 0,
                     (WPARAM) (INT) (SendMessage(hwnd_edit,WM_GETTEXTLENGTH,0,0))); break;
        } 
    
        return CallWindowProc(wpOrigEditProc, hwnd, uMsg, 
            wParam, lParam); 
    } 
    
    void startSubclass(HWND hwndControl) { 
      wpOrigEditProc = (WNDPROC) SetWindowLong(hwndControl, 
                     GWL_WNDPROC, (LONG) SubclassProc); 
    } 
    
    void stopSubclass() { 
      SetWindowLong(hwnd_edit, GWL_WNDPROC, 
        (LONG) wpOrigEditProc);   
    }
    

    geeky schrieb:

    Was ist denn das fürn Edit-Feld ? - Machen die Windows-Edit-Controls das nich sowieso bei STRG+A von selber ?

    Nee... hats komischer Weise nicht gemacht.

    Gruß, Dago


Anmelden zum Antworten