J'ai vu que l'on pouvait créer des fenêtre de forme diverses (LSI) sans barre mais je n'ai pas trouvé d'exemples qui permettent de bouger ce type de fenetre (de forme et sans barre).
Est ce cela est possible ?
Si oui, ya t'il un exemple quelque part

Code : Tout sélectionner
; Auteur : Le Soldat Inconnu
; Version de PB : 3.90
;
; Explication du programme :
; Donner à une fenêtre une forme spécifique. Par exemple faire une fenêtre ronde ou triangulaire.
Enumeration
#Quitter
#Forme1
#Forme2
#Forme3
#Forme4
#Forme5
EndEnumeration
Procedure Forme()
If GetGadgetState(#Forme1) ; si on a choisi la forme 1
Region = CreateRoundRectRgn_(0, 0, WindowWidth(), WindowHeight(), 40, 60) ; Création de la région pour faire une fenêtre avec les angles arrondis
; CreateRoundRectRgn_(X1, Y1, X2, Y2, R1, R2)
; X1, Y1 : coordonné du point haut gauche de la region
; X1, Y1 : coordonné du point haut gauche de la region
; R1, R2 : rayon de l'ellipse qui va servir à arrondir les angles de la region
SetWindowRgn_(WindowID(), Region, #True) ; On applique la région
DeleteObject_(Region) ; On supprime la région
ElseIf GetGadgetState(#Forme2) ; si on a choisi la forme 2
Region = CreateEllipticRgn_(0, 0, WindowWidth(), WindowHeight()) ; Création de la région pour faire une fenêtre elliptique
; CreateEllipticRgn_(X1, Y1, X2, Y2)
; X1, Y1 : coordonné du point haut gauche de la region
; X1, Y1 : coordonné du point haut gauche de la region
SetWindowRgn_(WindowID(), Region, #True) ; On applique la région
DeleteObject_(Region) ; On supprime la région
ElseIf GetGadgetState(#Forme3) ; si on a choisi la forme 3
Region = CreatePolygonRgn_(?Triangle, 4, #ALTERNATE) ; Création de la région pour faire une fenêtre elliptique
; CreateRoundRectRgn_(Array, NbPoints, Type)
; Array : Adresse de la liste ou de la Data
; NbPoints : Nombre de points du polygone + 1 (car on fait une boucle donc on a 2 fois le premier point)
; Type : Voir msdn
SetWindowRgn_(WindowID(), Region, #True) ; On applique la région
DeleteObject_(Region) ; On supprime la région
ElseIf GetGadgetState(#Forme4) ; si on a choisi la forme 4
Region1 = CreateRectRgn_(0, 0, WindowWidth(), WindowHeight()) ; Création d'une région en rectangle
Region2 = CreateRectRgn_(10, 10, WindowWidth() - 10, 50) ; Création d'une région en rectangle
; CreateRectRgn_(X1, Y1, X2, Y2)
; X1, Y1 : coordonné du point haut gauche de la region
; X1, Y1 : coordonné du point haut gauche de la region
CombineRgn_(Region1, Region1, Region2, #RGN_DIFF) ; On combine les 2 régions
; Les modes suivants sont disponibles :
; #RGN_AND : Intersection
; #RGN_OR : Union
; #RGN_DIFF : Différences
; #RGN_XOR : Union moins les intersections
SetWindowRgn_(WindowID(), Region1, #True) ; On applique la région finale
DeleteObject_(Region1) ; On supprime les régions
DeleteObject_(Region2)
ElseIf GetGadgetState(#Forme5) ; si on a choisi la forme 5
Region1 = CreatePolygonRgn_(?Triangle, 4, #ALTERNATE)
Region2 = CreateEllipticRgn_(0, 0, WindowWidth(), WindowHeight())
CombineRgn_(Region1, Region1, Region2, #RGN_OR) ; On combine les 2 régions
SetWindowRgn_(WindowID(), Region1, #True) ; On applique la région finale
DeleteObject_(Region1) ; On supprime les régions
DeleteObject_(Region2)
EndIf
EndProcedure
; Création de la fenêtre et dela GadgetList
If OpenWindow(0, 0, 0, 400, 400, #PB_Window_ScreenCentered, "Test") = 0 Or CreateGadgetList(WindowID(0)) = 0
End
EndIf
; Création des boutons et de l'option d'affichage
ButtonGadget(#Quitter, 100, 100, 200, 20, "Quitter")
OptionGadget(#Forme1, 100, 125, 200, 15, "Angles arrondis")
OptionGadget(#Forme2, 100, 140, 200, 15, "Ronde")
OptionGadget(#Forme3, 100, 155, 200, 15, "Triangle")
OptionGadget(#Forme4, 100, 170, 200, 15, "Trouée")
OptionGadget(#Forme5, 100, 185, 200, 15, "Triangle + Rond")
Repeat
Event = WaitWindowEvent()
If Event = #PB_EventGadget
Select EventGadgetID() ; boutons, zone de texte, ...
Case #Quitter
Event = #PB_EventCloseWindow ; On quitte
Default
Forme() ; sinon, on change la forme de la fenêtre
EndSelect
EndIf
Until Event = #PB_EventCloseWindow
End
DataSection
Triangle :
Data.l 200, 400, 0, 0, 400, 0, 200, 400 ; Coordonnées des points du triangle en x, y (il faut faire une boucle donc on revient au premier point du triangle
EndDataSection
Code : Tout sélectionner
;- Window Constants
;
#Window_0 = 0
#SizeWindowX = 300
#SizeWindowY = 200
Procedure Open_Window_0()
If OpenWindow(#Window_0, 366, 211, #SizeWindowX, #SizeWindowY, #PB_Window_BorderLess, "New window ( 0 )")
If CreateGadgetList(WindowID())
EndIf
EndIf
EndProcedure
;- debut du prog
Open_Window_0()
Repeat
Select WaitWindowEvent()
Case #WM_LBUTTONDOWN
SendMessage_(WindowID(), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
Case #WM_rBUTTONDOWN
Event = #PB_EventCloseWindow
EndSelect
Until Event = #PB_EventCloseWindow
End
Code : Tout sélectionner
UseJPEGImageDecoder()
;- Window Constants
;
#Window_0 = 0
#SizeWindowX = 300
#SizeWindowY = 200
Procedure Open_Window_0()
If OpenWindow(#Window_0, 366, 211, #SizeWindowX, #SizeWindowY, #PB_Window_BorderLess, "New window ( 0 )")
If CreateGadgetList(WindowID())
ButtonGadget(1, 20, 40, 60, 20, "Left Button", #PB_Button_Left)
If LoadImage(0, "valerio2.jpg") ; change 2nd parameter to the path/filename of your image
ImageGadget(0, 0,0,100,83,UseImage(0)) ; imagegadget standard
EndIf
EndIf
EndIf
Region = CreateRoundRectRgn_(0, 0, WindowWidth(), WindowHeight(), 20, 20) ; Création de la région pour faire une fenêtre avec les angles arrondis
; CreateRoundRectRgn_(X1, Y1, X2, Y2, R1, R2)
; X1, Y1 : coordonné du point haut gauche de la region
; X1, Y1 : coordonné du point haut gauche de la region
; R1, R2 : rayon de l'ellipse qui va servir à arrondir les angles de la region
SetWindowRgn_(WindowID(), Region, #True) ; On applique la région
DeleteObject_(Region) ; On supprime la région
EndProcedure
;- debut du prog
Open_Window_0()
Repeat
Select WaitWindowEvent()
Case #WM_LBUTTONDOWN
SendMessage_(WindowID(), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
Case #WM_RBUTTONDOWN
Event = #PB_EventCloseWindow
EndSelect
Until Event = #PB_EventCloseWindow
End
Code : Tout sélectionner
Case #PB_Event_Gadget
Select EventGadgetID()
Case #id_image
Select EventType()
Case #PB_EventType_LeftClick
Debug "Clique gauche sur le gadget
EndSelect
EndSelect