Chatprogramm EditboxProblem
-
warum nicht einfach das ENTER am Schluss des Editboxtextes einfach löschen?
char *search search = strrchr(editboxtext, '\n'); if(search){ *search = 0; }
-
Das hab ich auch überlegt nur ich weiß nicht so recht wo ich das jetzt aufrufen soll...
Da wo die Editevents verarbeitet werden oder im Hauptfenster?
Aber vllt gibt es ja auch einen einfacheren Weg..
-
xenus schrieb:
Das hab ich auch überlegt nur ich weiß nicht so recht wo ich das jetzt aufrufen soll...
Da wo die Editevents verarbeitet werden oder im Hauptfenster?
Aber vllt gibt es ja auch einen einfacheren Weg..na hier
if(message == WM_KEYDOWN && cbuf[VK_RETURN]&0x80) { char *search GetWindowText(hEin,Self.message,1900); search = strrchr(Self.message, '\n'); if(search){ *search = 0; }
-
Ja das Problem ist ja die Message wird ja richtig verarbeitet etc.
Und der EditboxText wird auch auf "" gesetzt nur dann kommt nach dem dies alles passiert ist bzw. abgehandelt wurde von der Funktion ein Umbruch rein obwohl das Event eigentlich schon abgearbeitet sein sollte.Deshalb würde es glaub ich nichts bringen das letzte \n vom Eingabetext wegzunehmen.
-
Ja dann musst du hat deinen Text an verschiedenen Stellen deines Programms mal ausgeben, z.B. in eine Datei, um nachzuvollziehn ab wann sich der unerwünschte Zeilen Umbruch einschleicht.
-
Du hast das "subclassing" schon richtig gemacht. Bist Du aber sicher, dass ENTER etc, tatsächlich abgefangen werden? Füge in ChildProc mal Kontrollausgaben ein. Vielleicht fehlt - wie bei Dialogen - eine Abfrage auf WM_GETDLGCODE mit return DLG_WANTALLKEYS oder so etwas ähnliches.
-
Ja darauf wollt ich ja hinaus die Taste wird nicht ganz abgefangen sie wird zwar untersucht und dementsprechend wird gehandelt aber wirklich abgefangen ist sie noch nicht wenn sie nämlich die Callback vom Child verläßt ist der Edittext auch leer aber dann kommt erst der nächste Zeilenumbruch in dem Editfeld...
Also wird sie noch nicht ganz abgefangen ...
-
Ich habe versucht, das Problem mit einem Testprogramm nachzuvollziehen. In einer mehrzeiligen Edit-Box kannst Du das ENTER zwar zu sehen bekommen, aber leider nicht vollkommen abfangen als wäre nichts geschehen. Der Zeilenumbruch bleibt.
-
seid ihr alle hohl oder was lol
static WNDPROC oldProc; LRESULT CALLBACK EditProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_CHAR: if(wParam == VK_RETURN) { SetWindowText(hDlg, ""); return 0; } } return CallWindowProc(oldProc, hDlg, message, wParam, lParam); }
-
LOL

Okay also manchmal hat man aber auch ein Brett vorm Kopf oO
Vielen Dank WM_CHAR war die Lösung
