Editbox D I R E K T farbig gestalten ?!
-
Obwohl ich deine Haltung auch etwas sehr dreist finde und auf die Gefahr hin, dass du auch damit wieder nicht zufrieden bist, hier ein Link auf den dazugehörigen FAQ-Beitrag: http://www.c-plusplus.net/forum/viewtopic-var-t-is-39375.html
Und wie Luckie scho sagte, geht es nicht ganz ohne case. Du kannst wählen zwischen WM_CTLCOLOREDIT, Control subclassen, Control superclassen und ganz neu schreiben. Ich würde mal sagen, dass Variante 1 am wenigsten Aufwand mit sich bringt.
-
n()()bi schrieb:
*lol* ... Also Leute, ist es sooo schwer einfach n Bsp. zu posten ? Wie wärs denn, wenn ihr das Forum gleich schließt und nen Link in die MSDN macht?!
Wie wäre es mit etwas Eigeninitiative? Das ist hier kein Kindergarten, wo man als Erzieher mit den Kindern noch zusammen aufs Klo gehen muss.
Ich möchte keine dummen Microsoft-Beschreibungen von einer Funktion, sondern ein einfaches Bsp. ... Wenn ihr immer auf die MSDN verlinkt, dann hat das Forum meiner Meinung nach keinen SINN !
Sag doch gleich das du ein ScriptKiddie bist.
Für die MSDN-Suchfunktion brauche ich eure Hilfe nicht, das kann ich auch alleine!
Ich habe die MSDN schon abgeklappert, doch die Bsp. sind total unübersichtlich, da sie viel zu viel Funktionen beinhalten !
Anscheinend brauchst du doch unsere Hilfe, sgast ja selber, dass du damit nicht zurecht kommst.
Überleg mal, ob Programmieren das richtige Hobbie (Ich hoffe nicht, du machst das beruflich.) für dich ist. Ohne etwas Eigeninitiative zu zeigen wirst du nicht weit kommen. Und schon gar nicht, wenn du dich hier hinstellst, mit dem Fußaufstampfst und die Luft anhältst bis du bekommen hast, was du willst.
Schönen Abend noch.
-
Ich weiss eig. nicht wo euer Problem liegt? Ein einfaches Bsp. würde mir genügen, doch meistens wenn ich hier eine Frage stelle, bekomme ich einen Link auf die MSDN - wo ich schon davor drauf war.
Glaubt ihr wirklich ich würde hier eine Frage stellen ohne davor die MSDN zu "befragen" ??
Ok, mein erster Beitrag war ein wenig plump formuliert, doch es war wirklich nicht "böse" gemeint, wie der Großteil es von euch wahrscheinlich aufgefasst hat. Ich wollte euch nicht beleidigen oder empören, das war wirklich nicht meine Absicht und wenn ich das getan habe, dann tut es mir leid!Zu meinen Prob.:
case WM_CTLCOLORSTATIC: { SetBkMode((HDC)wParam,RGB (0,0,0) ); SetTextColor((HDC)wParam,RGB(255,0,0)); return (long)CreateSolidBrush(RGB(0,0,0)); } case WM_CTLCOLOREDIT: { SetBkMode((HDC)wParam, RGB (0,0,0) ); SetTextColor((HDC)wParam,RGB(255,0,0)); return (long)CreateSolidBrush(RGB(0,0,0)); }Das Farbig-Gestalten funktioniert ja, doch wenn ich in einer Multiline-Editbox versuche Buchstaben mittels Backspace zu löschen, dann springt zwar der Cursor zurück, aber der Buchstabe steht trotzdem noch in der Editbox und wird dann überschrieben!? Wenn ich jetzt WM_CTLCOLOREDIT weglasse, dann funktioniert die Multiline-Editbox wieder ......
hMessageTW = CreateWindowEx(WS_EX_CLIENTEDGE, "edit", Message, WS_CHILD | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | WS_VISIBLE, 60, 190, 360, 100, hWnd, NULL, ((LPCREATESTRUCT) lParam) -> hInstance, NULL);Kennt jemand das Problem, bzw. weiss jemand wie man es löst ?
MFG:n()()bi
-
n()()bi schrieb:
case WM_CTLCOLORSTATIC: { SetBkMode((HDC)wParam,RGB (0,0,0) ); SetTextColor((HDC)wParam,RGB(255,0,0)); return (long)CreateSolidBrush(RGB(0,0,0)); } case WM_CTLCOLOREDIT: { SetBkMode((HDC)wParam, RGB (0,0,0) ); SetTextColor((HDC)wParam,RGB(255,0,0)); return (long)CreateSolidBrush(RGB(0,0,0)); }Du solltest einmal mittels CreateSolidBrush einen (in der WndProc static) Brush erzeugen und den dann jeweils returnen. So wie Du das da machst geht Deinem Programm bald "die Puste aus" was GDI-Resourcen angeht.
Dann nur nicht vegessen den Brush beim beenden wieder mittels DeleteObject zu zerbröseln!
-
...und die doppelte Tipparbeit kannste Dir auch sparen wenn Du's gleich so machst:
static HBRUSH MyBrush; case WM_CREATE: MyBrush = CreateSolidBrush(RGB(0,0,0)); return 0; case WM_CTLCOLORSTATIC: case WM_CTLCOLOREDIT: { SetBkMode((HDC)wParam, RGB (0,0,0) ); SetTextColor((HDC)wParam,RGB(255,0,0)); return (long) MyBrush; } break; case WM_DESTROY: DeleteObject(MyBrush); return 0;
-
n()()bi schrieb:
Zu meinen Prob.:
case WM_CTLCOLORSTATIC: { SetBkMode((HDC)wParam,RGB (0,0,0) ); SetTextColor((HDC)wParam,RGB(255,0,0)); return (long)CreateSolidBrush(RGB(0,0,0)); } case WM_CTLCOLOREDIT: { SetBkMode((HDC)wParam, RGB (0,0,0) ); SetTextColor((HDC)wParam,RGB(255,0,0)); return (long)CreateSolidBrush(RGB(0,0,0)); }Das Farbig-Gestalten funktioniert ja, doch wenn ich in einer Multiline-Editbox versuche Buchstaben mittels Backspace zu löschen, dann springt zwar der Cursor zurück, aber der Buchstabe steht trotzdem noch in der Editbox und wird dann überschrieben!? Wenn ich jetzt WM_CTLCOLOREDIT weglasse, dann funktioniert die Multiline-Editbox wieder ......
hMessageTW = CreateWindowEx(WS_EX_CLIENTEDGE, "edit", Message, WS_CHILD | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | WS_VISIBLE, 60, 190, 360, 100, hWnd, NULL, ((LPCREATESTRUCT) lParam) -> hInstance, NULL);Kennt jemand das Problem, bzw. weiss jemand wie man es löst ?
MFG:n()()bi
Und warum erklärst du nicht gleich, was du wirklich willst bzw. wo du Probleme mit dem Code hast?

-
Hmmm ... danke fürs "Zeitnehmen", aber das Prob besteht immer noch ?! Farbig gestalten funktioniert, aber wenn ich ein Zeichen in der Editbox lösche, dann springt nur der Cursor zurück, aber das Zeichen das eig. gelöscht werden soll bleibt stehen ... Was ist da los ???
ThX nochmal, MFG:
n()()bi
-
Wird sie eventuell nicht neu gezeichnet?
bei mir ist SetBKMode übrigens so deklariert:
int SetBkMode( HDC hdc, // handle to DC int iBkMode // background mode );Warum gibst du beim zweiten Parameter einen RGB Wert an?

-
Ich habe die BK-Mode auf Schwarz gesetzt, weil mein Hintergrund schwarz erzeugt werden soll ... Mit TRANSPARENT funktioniert es nicht - nur bei Single-Line Editboxen! Das Prob liegt nur an der Multiline-Box, da funktioniert nur das Farbig-Gestalten, doch die Korrektur von Eingaben nicht ! Mich wundert es, dass es bei Single-Lines geht, aber bei Multilines nicht?!
MFG:
n()()bi
-
n()()bi schrieb:
Ich habe die BK-Mode auf Schwarz gesetzt, weil mein Hintergrund schwarz erzeugt werden soll ... Mit TRANSPARENT funktioniert es nicht
Ich denke dann bräuchtest du eher OPAQUE - die Farbe wird dann über SetBkColor gesetzt

-
Jop, ThX! Funktioniert einwandfrei !
MFG:
n()()bi
-
Nur so nebenbei, es heisst Caret...