wenn ich SetWindowCallback verwende und ein TextGadget aus und wieder einblende, verschwindet die Hintergrundfarbe des Textes.
Vielleicht kann mir jemand helfen, wie man es besser macht.
Hier ein kleines sinnloses Beispiel, in den man es sieht.
Code: Alles auswählen
EnableExplicit
Enumeration Window
#TestFenster
EndEnumeration
Enumeration Gadgets
#TestFenster_Cont_links
#TestFenster_Txt_links
#TestFenster_ScrlBar_links
#TestFenster_Check_links
#TestFenster_Cont_rechts
#TestFenster_Txt_rechts
#TestFenster_ScrlBar_rechts
#TestFenster_Check_rechts
#TestFenster_Btn_verstecke_links
#TestFenster_Btn_vestecke_rechts
EndEnumeration
Enumeration Font
#TestFenster_Font_0
#TestFenster_Font_1
EndEnumeration
LoadFont(#TestFenster_Font_0, "Arial", 14)
LoadFont(#TestFenster_Font_1, "Arial", 22)
Procedure myCallback(hWnd, uMsg, wParam, lParam)
Select uMsg
Case #WM_CTLCOLORSTATIC
If hWnd = GadgetID(#TestFenster_Cont_links)
ProcedureReturn CreateSolidBrush_(RGB(153, 217, 201))
ElseIf hWnd = GadgetID(#TestFenster_Cont_rechts)
ProcedureReturn CreateSolidBrush_(RGB(224, 188, 133))
EndIf
Case #WM_CTLCOLORSCROLLBAR
ProcedureReturn CreateSolidBrush_(RGB(240, 130, 50))
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
Procedure Open_TestFenster(X = 0, Y = 0, Width = 800, Height = 600)
If OpenWindow(#TestFenster, X, Y, Width, Height, "Hintergrundfarbe vom TextGadget verschwindet", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_WindowCentered)
SetWindowColor(#TestFenster, RGB(137, 162, 224))
ContainerGadget(#TestFenster_Cont_links, 60, 60, 330, 330, #PB_Container_Raised)
SetGadgetColor(#TestFenster_Cont_links, #PB_Gadget_BackColor, RGB(153, 217, 201))
TextGadget(#TestFenster_Txt_links, 55, 35, 220, 50, "linke Fenster", #PB_Text_Center)
SetGadgetColor(#TestFenster_Txt_links, #PB_Gadget_BackColor, RGB(153, 217, 201))
SetGadgetFont(#TestFenster_Txt_links, FontID(#TestFenster_Font_1))
ScrollBarGadget(#TestFenster_ScrlBar_links, 10, 120, 300, 45, 0, 100, 10)
SetGadgetState(#TestFenster_ScrlBar_links, 25)
CheckBoxGadget(#TestFenster_Check_links, 10, 195, 100, 35, "links")
SetGadgetFont(#TestFenster_Check_links, FontID(#TestFenster_Font_0))
CloseGadgetList()
ContainerGadget(#TestFenster_Cont_rechts, 410, 60, 330, 330, #PB_Container_Raised)
SetGadgetColor(#TestFenster_Cont_rechts, #PB_Gadget_BackColor, RGB(224, 188, 133))
TextGadget(#TestFenster_Txt_rechts, 55, 35, 220, 56, "rechte Fenster", #PB_Text_Center)
SetGadgetColor(#TestFenster_Txt_rechts, #PB_Gadget_BackColor, RGB(224, 188, 133))
SetGadgetFont(#TestFenster_Txt_rechts, FontID(#TestFenster_Font_1))
ScrollBarGadget(#TestFenster_ScrlBar_rechts, 10, 120, 300, 45, 0, 100, 10)
SetGadgetState(#TestFenster_ScrlBar_rechts, 75)
CheckBoxGadget(#TestFenster_Check_rechts, 10, 195, 100, 40, "rechts")
SetGadgetFont(#TestFenster_Check_rechts, FontID(#TestFenster_Font_0))
CloseGadgetList()
ButtonGadget(#TestFenster_Btn_verstecke_links, 135, 440, 180, 75, "verstecke links")
SetGadgetFont(#TestFenster_Btn_verstecke_links, FontID(#TestFenster_Font_0))
ButtonGadget(#TestFenster_Btn_vestecke_rechts, 485, 440, 180, 75, "vestecke rechts")
SetGadgetFont(#TestFenster_Btn_vestecke_rechts, FontID(#TestFenster_Font_0))
SetWindowCallback(@myCallback())
EndIf
EndProcedure
Open_TestFenster()
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
Select EventGadget()
Case #TestFenster_Btn_verstecke_links
HideGadget(#TestFenster_Cont_links, #True)
HideGadget(#TestFenster_Cont_rechts, #False)
Case #TestFenster_Btn_vestecke_rechts
HideGadget(#TestFenster_Cont_links, #False)
HideGadget(#TestFenster_Cont_rechts, #True)
EndSelect
EndSelect
ForEver
Ich benutze Windows 11 und PureBasic 6.00 LTS (Windows - x64)
Viele Grüße
Thomas