CheckBox/GroupBox mit Text hat weißen Hintergrund
-
Hab das gleiche Problem, meine GroupBox nimmt die Hintergrundfarbe vom Hauptfenster an. Gibt es eine Möglichkeit das zu verhindern bzw. wie kann man die gleiche Hintergundfarbe festlegen wie die CheckBox hat?
-
Damit mußt du wohl leben, das ist Windows. Microsoft hat uns da ordentlich paar Probleme gemacht.
Mein Tip: Gib dem Hauptfenster einfach die richtige Farbe.
-
Nicht so toll, ich denke das wird nicht wirklich schön aussehen.
Aber wie komme ich denn an die genaue Farbe ran?
-
Dir sind die WM_CTLCOLOR... Nachrichten bekannt, die an das Parent gesendet werden?
-
Das nützt mir nichts, weil das Parent Window ist ja die GroupBox, ich komme also nicht an die Nachricht ran.
Man kann übrigens die Hintergrundfarbe einfach mit "SetClassLong" ändern, dh. der Tip von "lmaa" ist nicht nötig.
-
Dann ist Dein Design falsch.
Group-Boxes werden nicht als Parent für Child Windows gesetzt. Groupboxes liegen immer auf dem selben Level wie die Childs. Sie haben nur den Stil WS_GROUP!
-
Nein, ich glaube er meint eine richtige GroupBox (BS_GROUPBOX)
-
lmaa schrieb:
Nein, ich glaube er meint eine richtige GroupBox (BS_GROUPBOX)
Ja! Und?
Alle Controls in Dialogen sind so konstruiert, dass sie auf der seben Ebene liegen. Wenn er Heckboxen als Kinder der Groupbox alget, dann muss er Probleme bekommen...Wie immer: Man lese mal ein Tutorial oder die Doku...
Wir programmieren ja nicht in VB oder?
-
Meint ihr so was, wie aus den FAQ:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39375.html
-
Das kann man natürlich auch machen, ist aber sehr unlogisch, für einen Anfänger kaum verständlich und zu viel Aufwand.
Nachdem ich hier meinen Spaß hatte nun eine ganz einfache Lösung:
SetClassLongPtr(hwnd_check_group,GCL_HBRBACKGROUND,(COLOR_BTNFACE+1));
Gibt der GroupBox die Hintergrundfarbe von Buttons.(Bitte nicht SetClassLong!)
falls es noch nötig ist Nachrichten abzufangen:
SetWindowLongPtr(hwnd_check_group,GWLP_WNDPROC,(int)&WndProc);
-
SetClassLongPtr ist keine Lösung! Weil es nicht nur ein Fenster betrifft, sondern alle Fenster in Deinem Prozess!
-
Es betrifft nicht alle Fenster, sondern nur Fenster einer Klasse. Wenn natürlich jede GroupBox eine andere Farbe haben soll...
-
lmaa schrieb:
Es betrifft nicht alle Fenster, sondern nur Fenster einer Klasse. Wenn natürlich jede GroupBox eine andere Farbe haben soll...
Korekt. Mein Einwurf war zu allgemein. Es betrifft alle Buttons des aktuellen Prozesses!!!
-
Das war ja auch das Ziel oder nicht?
Aber bei normalen Buttons wie z.B. einer CheckBox sollte das keine Wirkung haben. Wenn wäre es aber auch egal, es ist ja die Standarthintergrundfarbe für Buttons also ändert sich nichts.
-
Warum erzeugt ihr nicht einfach eine eigene Fensterklasse mit der richtigen Hintergrundfarbe? Das ist kein großer Aufwand und funktioniert super. Mache ich nur so.
Es betrifft alle Buttons des aktuellen Prozesses!!!
Nein, nicht wirklich. Wie "lmaa" schon schrieb kann man solche Eigenschaften bei normalen Buttons gar nicht ändern weil sie keine richtigen Fenster sind.
-
Paul P. schrieb:
Nein, nicht wirklich. Wie "lmaa" schon schrieb kann man solche Eigenschaften bei normalen Buttons gar nicht ändern weil sie keine richtigen Fenster sind.
Sie sind es sehr wohl, und bei Radios+Checkboxen könnte dies in der gesamten Anwendung unerwünschte Resultate haben.
-
Habe ich nie so genau ausgetestet, schon möglich. Ich fand die GroupBox nie wirkich nützlich und habe immer meine eigene Klasse erzeugt. Finde ich auch etwas sauberer.
Mit "keine richtigen Fenster" meinte ich das sie auf sowas normalerweise nicht reagieren. Windows behandelt sie natürlich trotzdem als Fenster.
-
Paul P. schrieb:
Mit "keine richtigen Fenster" meinte ich das sie auf sowas normalerweise nicht reagieren. Windows behandelt sie natürlich trotzdem als Fenster.
Tun sie doch
Auch sie geben Notifications ab.
Sind dann Statics und ReadOnly Edit Controls auch keine richtigen Fenster?