RichTextbox Tastenkombinationen
-
Hey liebs Forum.
Da die RichTextbox die Tastenkomination Strg-a nicht kennt (jedoch Strg-Z, Strg-X .. Strg-V (?)), wollte ich diese selber Programmieren.
Ich habe schon alle möglichen Versuche gemacht: vom globalen GetAsyncKeyState bis zum case WM_KEYDOWN:. Kein Ergebnis war zufriedenstellend.
Habt ihr das eine Idee oder einen Tipp, wie ich das Problem mit den Tastenkombinationen lösen kann?
Um den Text zu markieren benutze ich folgenden Code (funktioniert):SendMessage(meineTextbox, EM_SETSEL, static_cast<WPARAM>(0), static_cast<WPARAM>(GetWindowTextLength(meineTextbox)));Vielen Dank im Voraus
-
Hi,
in WM_KEYDOWN:
BYTE cBuf[256]; GetKeyboardState( cBuf ); if ( cBuf[ VK_CONTROL ] & 0x80 && wParamLo == 65) // a SendMessage.....für Strg+A sollte es so gehen (evtl. anpassen).
mfg
kpeter
-
Hey.
Danke für deine schnelle Antwort. Bin grad nach Hause gekommen und probieren es gleich mal aus!*edit*
Hmm. Klappt leider nicht.
Ich habe den Code so eingefügt:LRESULT CALLBACK wnd_proc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { switch (msg) { case WM_KEYDOWN: BYTE cBuf[256]; GetKeyboardState (cBuf); if (cBuf[VK_CONTROL] & 0x80 && lparam == 65) MessageBox (NULL, "klappt", "", MB_OK); break; } [... ...] return false; }Ich habe auch
if (cBuf[VK_CONTROL] & 0x80 && wparam == 65)ausprobiert, leider auch erfolglos.
-
LOWORD( wParam )
-
Ah okay

Es klappt schonmal, das der Text markiert wird, jedoch nicht, wenn ich den Cursor in der Textbox hab (also die Textbox anvisiert hab).
-
DerCoder schrieb:
SendMessage(meineTextbox, EM_SETSEL, static_cast<WPARAM>(0), static_cast<WPARAM>(GetWindowTextLength(meineTextbox)));Nu hast du in der SendMessage so schön gecastet, aber zwei WParams?
DerCoder schrieb:
der Text markiert wird, jedoch nicht, wenn ich den Cursor in der Textbox hab (also die Textbox anvisiert hab).
Hmm, gerade dann sollte es gehen...
-
Ich würde mal raten dass du den falschen Messagehandler erwischt hast, den fürs Fenster und nicht den fürs edit-Control.
-
Um alles zu selektieren benötigst Du nicht die Datenlänge:
Siehe MSDN:
EM_SETSEL
http://msdn.microsoft.com/en-us/library/bb761661(VS.85).aspxIf the start is 0 and the end is –1, all the text in the edit control is selected. If the start is –1, any current selection is deselected