Fenster Farben zuweisen?
-
Thx, aber könnte mir jemand denn mal ein Beispiel geben??? Wie kann ich z.B. die Backgroundcolor des Buttons Button1 auf Blau setzen??? Ich kapier dat mit diesem Gerätekontext da einfach nicht, den man bei WM_CTLCOLORBTN braucht...
Besten Dank!
code_pilot :p
-
Also eine relativ einfache Methode ist die: sich das Fensterhandle zu nehmen (Bei Button und anderen Controls mit "GetDlgItem") und dann mit SetClassLong und dem Index GCL_HBRBACKGROUND einfach eine Brush für den Hintergrund zu übergeben.
Also bei mir hat das jedenfalls funktioniert.Viel Spass
HoWeR
-
Hallo!
Wie geht das denn???Sowas wie
SetClassLong(IB_OK, GCL_HBRBACKGROUND, GetStockObject(WHITE_BRUSH));
geht nämlich nicht
Kann man denn auch irgendwie RGB-Farben setzen????
Hilf mir!!!
code_pilot
-
SetClassLong verändert die Fensterklasse (also alle Buttons, oder?)!
SetClassLong ( GetDlgItem(hDlg,MAKEINTRESOURCE(IDOK)), GCL_HBRBACKGROUND, GetStockObject(WHITE_BRUSH) );
Hab das jetzt so hingeschrieben (nicht ausprobiert) - weiß also nicht ob's stimmt! Einfach ausprobieren
-
Hallo Code_pilot,
das mit der ID des Controls (auch Buttons) funktioniert natürlich nicht.
Probiers mal so:HWND hControl
hControl = GetDlgItem (hWnd, ID_CONTROL); // hWnd ist ein Handle auf das Parent des Controls
SetClassLong(hWnd, GCL_HBRBACKGROUND, GetStockObject(WHITE_BRUSH));Sollte eigentlich so funktionieren
Viel Spass
HoWeR
-
P.S. den MAKEINTRESOURCE im GetDlgItem hab ich natürlich vergessen.
Viel Spass
HoWeR
-
Thx werds testen
-
Bei SetClassLong musst du dann aber schon auch hControl einsetzen, dazu ermittelst du es ja vorher!
-
Also ich würde das eher mit WM_CTL... machen.
Wie das geht steht hier.
-
flenders hat Recht: kleiner Fehler meinerseits und sollte die Farbe dann noch nicht angezeigt werden, liegt es daran, dass noch nicht aktualisiert wurde.
Das geschieht nämlich nicht automatisch.
Also InvalidateRect (wenn möglich) oder (meistens wenn du controls nimmst) SetWindowPos verwenden.Viel Spass
HoWeR