ScrollAreaGadget transparent

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: ScrollAreaGadget transparent

Message par kernadec »

bonjour
merci falsam pour ce code.
en ajoutant à la seconde fenêtre la position x y de fenêtre principale
et avec un mode invisible cela fonctionne sur XP sp2
peut aussi fonctionner sans le callback

Cordialement

Code : Tout sélectionner

Enumeration
  #Mainform
  #MainWrapper 
EndEnumeration
Procedure WndProc(hwnd, uMsg, wParam, lParam)
  Protected X, Y, Width, Height
  GetWindowRect_(WindowID(#MainForm),r.RECT)
  
  result = #PB_ProcessPureBasicEvents 
  
  Select uMsg
    Case #WM_SIZE,#WM_MOVE,#WM_PAINT
      MoveWindow_(WindowID(#MainWrapper), r\left+20, r\top+100, 500, 300,1) 		
  EndSelect
  
  ProcedureReturn Result	 
EndProcedure

;Création du background de #MainForm
CreateImage(0, 800, 600)

StartDrawing(ImageOutput(0))
DrawingMode(#PB_2DDrawing_Gradient)     
LinearGradient(0, 0, 800, 600)
GradientColor(0.00, $03FEFC)
GradientColor(0.25, $83FD7C)
GradientColor(1.00, $0803F7)
Box(0,0,800,600)
StopDrawing()

hBrush = CreatePatternBrush_(ImageID(0))

;Fenetre principale
hwnd = OpenWindow(#Mainform, 0, 0, 800, 600, "ScrollAreaGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SetClassLongPtr_(WindowID(#Mainform), #GCL_HBRBACKGROUND, hBrush)
InvalidateRect_(WindowID(#Mainform), 0, 1)

;ScrollArea dans son wrapper 
OpenWindow(#MainWrapper, WindowX(#Mainform)+20,WindowY(#Mainform)+100, 500, 300, "", #WS_POPUP|#PB_Window_Invisible, WindowID(#Mainform))

ScrollAreaGadget(0, 0, 0, 500, 300, 700, 400)

SetGadgetColor(0,#PB_Gadget_BackColor ,#White)

;SetWindowLongPtr_ : Modifie un attribut de la fenêtre spécifiée.
;GetWindowLongPtr_ : Récupère des informations à propos de la fenêtre spécifiée 
SetWindowLongPtr_(WindowID(#MainWrapper),#GWL_EXSTYLE,GetWindowLongPtr_(WindowID(#MainWrapper),#GWL_EXSTYLE)|#WS_EX_LAYERED)

;SetLayeredWindowAttributes : Définit l'opacité et/ou la transparence
SetLayeredWindowAttributes_(WindowID(#MainWrapper),#White, 0, #LWA_COLORKEY)

TextGadget(11, 20, 30, 100, 30, "TextGadget")
SetGadgetColor(11,#PB_Gadget_BackColor ,#White)

ButtonGadget  (12, 380, 50, 80, 30,"Test Button")

StringGadget(12, 20, 50, 200, 22,"Essai")
CloseGadgetList()


SetWindowCallback(@WndProc(), #Mainform)
HideWindow(#MainWrapper, 0)



Repeat
  Select WaitWindowEvent()  
    Case  #PB_Event_CloseWindow
      End
      
  EndSelect
ForEver
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: ScrollAreaGadget transparent

Message par falsam »

Yeahhhh pas mal Kernadec, Je viens de tester sous XP SP2 et Windows 7 et ça fonctionne effectivement. je connais très peu les API et c'est grâce à des propositions comme ça que je m'améliore en la matière. :)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: ScrollAreaGadget transparent

Message par dayvid »

Yes !, pas mal :D
Moi sa marche niquel 8)
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Répondre