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