Die Textbox überschneidet Text
-
Hallo liebes Forum,
ich habe ein komisches Problem
Ich habe eine Textbox
HWND TextBox; TextBox = CreateWindow ("EDIT", "", WS_VISIBLE | WS_CHILD | ES_MULTILINE | WS_HSCROLL | ES_AUTOVSCROLL | WS_HSCROLL, 150, 121, 450, 700, hwnd, (HMENU) ID_TEXTBOX, NULL, NULL);
Jetzt schreib ich in die Textbox.
Das funktioniert auch alles. Aber wenn ich irgendwas verbessern will, dann überschneidet er den Text einfach.Also ddamit meine Ich folgendes
hallo test test testjwadoadwhioasd
usuiaosdiisaidiwiaoskdiawjdso und diese Beiden "Sätze" überschneidet er einfach. Ich kann auch mit der "entf" Taste nichts löschen. Der Cursor geht zwar zurück aber der Text wird nicht gelöscht, so das sowas herauskommt:
http://www.fotos-hochladen.net/uploads/screenshot703dlpohza9f.png
Ich hoffe ihr könnt mir weiterhelfen
-
Ben123 schrieb:
Aber wenn ich irgendwas verbessern will, dann überschneidet er den Text einfach.
Ich wusste schon immer, daß Bill Gates ein übler Knochen ist.
Ben123 schrieb:
Der Cursor geht zwar zurück aber der Text wird nicht gelöscht, so das sowas herauskommt:
http://www.fotos-hochladen.net/uploads/screenshot703dlpohza9f.pngDu hast dir schon mal angesehen was auf dem screenshot erkennbar ist? Ich sehe nur eine amorphe Masse von Rot.
-
Ja genau.
Da hat er den Text überschnitten.
Also ich schhreibe:
Hallo test test test
gehe dann mit dem Cursor hierhin:
Hallo test t(hier)est test
um (z.B.) etwas zu verbessern.
aber dann überschneidet er das einfach (sowie im Screenshot).
Der Grund warum das rot ist, ist weil ich die Schrift halt rot gemacht habe.
-
Tut mir Leid, aber da kann ich dir so auf die Schnelle nicht weiterhelfen weil ich von der WinAPI eher keine Ahnung habe.
Da gibt's hier richtig gute Leute wie Herrn Richter und Herrn Kalmbach z.B.
Ich bin dagegen ein kleines Licht.Ich müsste das mit MFC nachvollziehen, testen und debuggen.
Werde morgen erst mal testen, ob du die editbox überhaupt korrekt aufgesetzt hast.
-
Ne kannst dir die Mühe sparen.
Ich hatte folgenden Code
case WM_CTLCOLORSTATIC: { SetTextColor((HDC)wParam,RGB(111,111,111)); SetBkColor((HDC)wParam,RGB(0,0,2)); SetBkMode((HDC)wParam, TRANSPARENT); return (LRESULT)GetStockObject(WHITE_BRUSH); // return a DC brush. }break; case WM_CTLCOLOREDIT: { //return (LRESULT)GetStockObject(NULL_BRUSH); SetTextColor((HDC)wParam,RGB(253,0,6)); SetBkColor((HDC)wParam,RGB(0,255,255)); SetBkMode((HDC)wParam, TRANSPARENT); return (LRESULT)GetStockObject(WHITE_BRUSH); }break;
Wenn ich das so veränder
case WM_CTLCOLORSTATIC: { SetTextColor((HDC)wParam,RGB(111,111,111)); return (LRESULT)GetStockObject(WHITE_BRUSH); // return a DC brush. }break; case WM_CTLCOLOREDIT: { SetTextColor((HDC)wParam,RGB(253,0,6)); return (LRESULT)GetStockObject(WHITE_BRUSH); }break;
Funktioniert es
-
Trotzdem danke
-
Aehm ne doch noch nicht.
Ich mache die Textbox Transparent
case WM_CTLCOLOREDIT: { SetTextColor((HDC)wParam,RGB(255, 255, 255)); return (LRESULT)GetStockObject(NULL_BRUSH); }break;
Jetzt sieht das folgendermaßen aus
http://www.fotos-hochladen.net/view/screenshot197y6it2nmrh.png
mit
SetBkColor((HDC)wParam,RGB(int, int, int));
kann ich die Farbe des Balkens verändern.
Mit
SetBkMode((HDC)wParam, TRANSPARENT);
Kann ich zwar den Balken wegmachen, aber er überschneidet den Text wieder.
Es muss einen anderen Weg geben. Ich glaube der Grund warum er den Text überschneidet ist ganz einfach. Es liegt an diesem "TRANSPARENT". Er macht den Buchstaben, aber denkt, der Buchstabe ist nicht da weil er halt "TRANSPAARENT" ist (Also unsichtbar)(So ist meine Theorie).
PS: Auf dem Screenshot sollte stehen "Aber der weiße Balken vergrößert sich mit jeder neuen Zeile"
-
Das geht so nicht. Die TextBox muss zuvor, dafür sorgen, dass der Hintergrund wieder hergetsellt wird.
Verwendest Du TRANSPARENT beim zeichnen und einen NULL Brusch wird natürlich der Hintergrund nicht wieder hergestellt.Also zuerst den Hintergund neu mitzeichnen lassen (InvalidateRect auch auf das Parent und UpdateWindow) dann wird auch dsas Child Window mit gezeichnet. Aber das Flackert mit Sicherheit.
Ansonsten dafür sorgen, das das Edit Control den selben Hintergrund zeichnet.