Gadgets ohne Callback färben
Verfasst: 08.04.2014 19:14
Hi Leute,
mit Hilfe von Callbacks, kann man z.B. die Farben von Gadgets ändern (siehe Beispiel). Kann man dies auch ohne Callbacks realisieren?
Gibt es eventuell einen WinAPI-Befehl oder lässt es sich über eine unabhängige Prozedur realisieren (z.B. SetBkColor(#Gadget, Color))?
----------------------
Folgender Fall: Ich habe ein Programm mit mehreren Modulen. Jedes Modul erzeugt in der GUI ein ContainerGadgets mit den darauf enthaltenen Gadgets. Die Hintergrundfarbe der Gadgets entspricht der Systemfarbe, auch wenn die Hintergrundfarbe des Containers geändert wurde. (siehe: http://www.purebasic.fr/german/viewtopi ... =3&t=27755).
Mit einer Callback-Prozedur würde es funktionieren, aber ich möchte nicht eine Callback-Prozedur erstellen, in denen ich alle zu ändernen Gadgets der Module eintrage. Mehrere Callback-Prozeduren gehen scheinbar auch nicht.
Weiß jemand, wie ich das vernünftig lösen könnte?
viele Grüße,
SBond
mit Hilfe von Callbacks, kann man z.B. die Farben von Gadgets ändern (siehe Beispiel). Kann man dies auch ohne Callbacks realisieren?
Gibt es eventuell einen WinAPI-Befehl oder lässt es sich über eine unabhängige Prozedur realisieren (z.B. SetBkColor(#Gadget, Color))?
----------------------
Folgender Fall: Ich habe ein Programm mit mehreren Modulen. Jedes Modul erzeugt in der GUI ein ContainerGadgets mit den darauf enthaltenen Gadgets. Die Hintergrundfarbe der Gadgets entspricht der Systemfarbe, auch wenn die Hintergrundfarbe des Containers geändert wurde. (siehe: http://www.purebasic.fr/german/viewtopi ... =3&t=27755).
Mit einer Callback-Prozedur würde es funktionieren, aber ich möchte nicht eine Callback-Prozedur erstellen, in denen ich alle zu ändernen Gadgets der Module eintrage. Mehrere Callback-Prozeduren gehen scheinbar auch nicht.
Weiß jemand, wie ich das vernünftig lösen könnte?
viele Grüße,
SBond
Code: Alles auswählen
Global Farbe = CreateSolidBrush_($FFF000)
Procedure Callback(hWnd, uMsg, wParam, lParam)
Select uMsg
Case #WM_CTLCOLORSTATIC
If lparam = GadgetID(1)
ProcedureReturn Farbe
EndIf
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
OpenWindow(0, 0, 0, 200, 50, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CheckBoxGadget(1, 10, 10, 150, 20, "CheckBox")
SetWindowCallback(@Callback())
Repeat: Until WaitWindowEvent() = #PB_Event_CloseWindow
DeleteObject_(Farbe)
End