Pure basic est un langage crossplateform, c'est pour cela que tu ne trouve pas en natif les instructions qui pourraient paraitre logique de voir.
Pour palier à ce manque, PB permet tout de même d'utiliser les API des OS. Lorsque tu vois une commande avec un tiret comme
SetTextColor_ c'est une commande windows et pas purebasic. Il faut donc respecter la syntaxe que demande Windows à voir ici :
https://msdn.microsoft.com/fr-fr/librar ... s.85).aspx
Tu peux donc créer une procédure ou un module qui te permettra d'avoir ce CheckGadgetColor() ou autre mais qui ne sera pas cross plateforme si tu utilises des API. (ce qui n'est pas forcément gênant selon tes besoins).
Dans un des codes qu'on t'a proposé voilà la version modifiée pour les PB actuels.
Code : Tout sélectionner
;/// PROCEDURE
Procedure myCallback(WindowID, Message, wParam, lParam)
Shared Brush
Result = #PB_ProcessPureBasicEvents
Select Message
Case #WM_CTLCOLORSTATIC
Debug "HI"
SetBkMode_(wParam,#TRANSPARENT)
SetTextColor_(wParam, $1111111) ;; COULEUR DU TEXTE
Result = Brush
EndSelect
ProcedureReturn Result
EndProcedure
;// CODE
OpenWindow(0,100,150,120,40,"",#PB_Window_SystemMenu)
Brush = CreateSolidBrush_($00CCFF) ;; COULEUR DU FOND
SetWindowCallback(@myCallback())
CheckBoxGadget(4, 10, 10,100, 20, "Test")
;--> Disable XP Theme for the OptionGadget
If OSVersion() = #PB_OS_Windows_XP
OpenLibrary(0, "uxtheme.dll")
CallFunction(0, "SetWindowTheme", GadgetID(4), @" ", @" ")
CloseLibrary(0)
EndIf
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
Donc en créant une proce MyColorOptionGadget(GADGET,X, Y, L, H, message.s, COUL_FOND, COUL_TXT)
Voilà ce que ça peu donner.
Code : Tout sélectionner
;/// PROCEDURE
Declare MyColorOptionGadget(GADGET,X, Y, L, H, message.s, COUL_FOND,COUL_TXT)
Global Brush
Procedure myCallback(WindowID, Message, wParam, lParam)
Shared Brush
Result = #PB_ProcessPureBasicEvents
Select Message
Case #WM_CTLCOLORSTATIC
Debug "HI"
SetBkMode_(wParam,#TRANSPARENT)
Result = Brush
EndSelect
ProcedureReturn Result
EndProcedure
Procedure MyColorOptionGadget(GADGET,X, Y, L, H, message.s, COUL_FOND, COUL_TXT)
Brush = CreateSolidBrush_(COUL_FOND) ;; COULEUR DU FOND
SetTextColor_(wParam, COUL_TXT) ;; COULEUR DU TEXTE
CheckBoxGadget(GADGET, X, Y, L, H, "Test")
EndProcedure
;// CODE
OpenWindow(0,100,150,120,40,"",#PB_Window_SystemMenu)
SetWindowCallback(@myCallback())
MyColorOptionGadget(4, 10, 10,100, 20, "Test", $00CCFF, $111111)
;--> Disable XP Theme for the OptionGadget
If OSVersion() = #PB_OS_Windows_XP
OpenLibrary(0, "uxtheme.dll")
CallFunction(0, "SetWindowTheme", GadgetID(4), @" ", @" ")
CloseLibrary(0)
EndIf
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow