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