Propriete des Gadgets...

Vous avez une idée pour améliorer ou modifier PureBasic ? N'hésitez pas à la proposer.
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Re: Propriete des Gadgets...

Message par gnozal »

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.
WINDOWS UNIQUEMENT : pour placer des gadgets au dessus d'un ImageGadget, on peut utiliser le style WS_CLIPSIBLINGS.

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
Répondre