WINDOWS UNIQUEMENT : pour placer des gadgets au dessus d'un ImageGadget, on peut utiliser le style WS_CLIPSIBLINGS.GallyHC a écrit :Une amélioration qui serait vraiment utile, serait de pouvoir mettre une propriété d’affichage sur les gadgets. Pour qu’il s’affiche dans un ordre précis.
Tout du moins sur les GadgetImage pour qu’elle n’efface pas les autres.
Code : Tout sélectionner
; Couleurs pour le TextGadget
Global textBGbrush, textFGcolor
textBGcolor = RGB(155, 200, 155)
textBGbrush = CreateSolidBrush_(textBGcolor)
textFGcolor = RGB(0, 100, 0)
; Création l'image
CreateImage(0, 300, 200)
StartDrawing(ImageOutput(0))
Box(0, 0, 300, 200, textBGcolor)
StopDrawing()
; Callback
Procedure WindowCallback(hwnd, msg, wparam, lParam)
result = #PB_ProcessPureBasicEvents
Select msg
Case #WM_CTLCOLORSTATIC ; Colorer le TextGadget (même couleur de fond que l'image)
If IsGadget(0) And lParam = GadgetID(0)
SetTextColor_(wparam, textFGcolor)
SetBkMode_(wparam, #TRANSPARENT)
result = textBGbrush
EndIf
EndSelect
ProcedureReturn result
EndProcedure
If OpenWindow(0, 0, 0, 400, 300, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SetWindowCallback(@WindowCallback())
; Quelques gadgets
TextGadget(0, 50, 140, 300, 20, "Un TextGadget", #PB_Text_Center)
ButtonGadget(1, 100, 100, 60, 20, "Un bouton")
StringGadget(2, 100, 200, 100, 20, "Un StringGadget")
; En dernier, l'ImageGadget
ImageGadget(3, 50, 50, 300, 200, ImageID(0))
; Le truc : ajouter le style WS_CLIPSIBLINGS à l'ImageGadget
SetWindowLong_(GadgetID(3), #GWL_STYLE, GetWindowLong_(GadgetID(3), #GWL_STYLE) | #WS_CLIPSIBLINGS)
Repeat
event = WaitWindowEvent()
Until event = #PB_Event_CloseWindow
DeleteObject_(textBGbrush)
EndIf