Dans mes élucubrations de code automatique, j'ai repensé profondément mon logiciel de placement des gadgets.(Autogad). Ceci suite a une utilisation assez intense de la bête.
J'ai aussi tenu compte des remarques de Ar-s.(Merci a toi).
J'ai aussi repensé mon constructeur de fenêtres "Winconstructeur". (Kernadec va être content.) Ce logiciel fonctionne maintenant en symbiose avec le précédent pour cela il suffit d'enregistré les dimensions de la fenêtre.
Pour le fun j'ai programmé un petit lanceur pour les deux logiciels.
Vous compilez les trois programmes dans le même répertoire, et vous épinglez le lanceur dans la barre de tâche de windows.
Noubliez pas de lire attentivement les aides.
Indiquez mois les éventuels bugs, ou les améliorations possibles.
Merci par avance et bon courage a tous.
Michel
Code : Tout sélectionner
;******************************************************
;*OutilsPB MLD 1/12/2019 Compilation PB 5.71 LTS *
;* ATTENTION NE PAS COCHER le DPI DANS le COMPILATEUR*
;******************************************************
;¤¤¤¤ Assignation des gadgets ¤¤¤¤
#Outils = 1:#bt_Winconstructeur = 2:#bt_AUTOGAD = 3:#bt_stop = 4
;¤¤¤¤¤¤¤¤
#Ldef = 1920:#Hdef = 1080
Global typH.b,L.d
Global definecrht.d = GetSystemMetrics_(#SM_CYSCREEN):Global definecrlarg.d = GetSystemMetrics_(#SM_CXSCREEN)
Procedure Hw(Dh.d,typH.b)
SystemParametersInfo_(#SPI_GETWORKAREA,0,@DesktopWorkArea.RECT,0)
htTaskbarwin.d = definecrht.d - DesktopWorkArea\Bottom
If opt1.l = #PB_Window_BorderLess
OpenWindow(2000,0,0,200,200,"",#PB_Window_BorderLess|#PB_Window_Invisible)
Else
OpenWindow(2000,0,0,200,200,"",#PB_Window_SystemMenu|#PB_Window_Invisible)
EndIf
EPframeL.d = WindowX(2000, #PB_Window_InnerCoordinate)
Httitre.d = WindowY(2000, #PB_Window_InnerCoordinate)
CloseWindow(2000)
Select typH.b
Case 1 ;fen avec titre et haut max
Hwq.d = definecrht - Httitre.d
Case 2 ;fen avec titre et barre de tache win visible
Hwq.d = definecrht - (htTaskbarwin + Httitre.d + EPframeH)
Case 3 ;fen sans titre et hauteur max
Hwq.d = definecrht
Case 4 ;fen sans titre et barre de tache win visible
Hwq.d = definecrht - htTaskbarwin
Default ;fen quelconque
Hwq.d = Dh * (definecrht /#Hdef)
EndSelect
ProcedureReturn Hwq.d
EndProcedure
Procedure Lw(dL.d)
L.d = dL * (definecrlarg /#Ldef)
ProcedureReturn L.d
EndProcedure
Procedure Ywp(y.d)
ProcedureReturn y.d *(definecrht.d /#Hdef)
EndProcedure
Procedure XWp(lp.d)
ProcedureReturn lp.d * (definecrlarg /#Ldef)
EndProcedure
Procedure MLD_openfen(ng.d,x.d,y.d,Lf.d,H.d,titre$,opt1.l,opt2.l,opt3.l,opt4.l,typH.b)
If typH.b <> 0 : y.d = 0:EndIf
OpenWindow(ng.d,Xwp(x.d),Ywp(y.d),Lw(Lf.d),Hw(H.d,typH.b),titre$,opt1.l|opt2.l|opt3.l|opt4.l)
EndProcedure
Procedure X(lg.d)
ProcedureReturn lg *(definecrlarg.d/#Ldef)
EndProcedure
Procedure y(h.d)
ProcedureReturn h *(definecrht.d /#Hdef)
EndProcedure
FontID3 = LoadFont(10,"Tahoma",X(16),0|0|0|0|0)
FontID4 = LoadFont(11,"Tahoma",X(16),256|0|0|0|0)
MLD_openfen(1,720,75,550,250,"Outils",#PB_Window_BorderLess,#NUL,#NUL,#PB_Window_ScreenCentered,0)
StickyWindow(1,1)
SetWindowColor(1,$D5F0E1)
SetWindowLongPtr_(WindowID(1), #GWL_STYLE, GetWindowLongPtr_(WindowID(1), #GWL_STYLE) | #WS_DLGFRAME)
SetWindowPos_(WindowID(1), 0,0,0,0,0,#SWP_NOSIZE|#SWP_NOMOVE|#SWP_NOZORDER|#SWP_FRAMECHANGED)
;
ButtonGadget(2,X(147),Y(80),X(250),Y(32),"WINCONSTRUCTEUR")
SetGadgetFont(2,FontID3)
ButtonGadget(3,X(147),Y(140),X(250),Y(32),"AUTOGAD")
SetGadgetFont(3,FontID3)
ButtonGadget(4,X(470),Y(205),X(70),Y(32),"STOP")
SetGadgetFont(4,FontID3)
TextGadget(5,X(0),Y(0),X(550),Y(35),"OUTILS PB",#PB_Text_Center|#PB_Text_Border)
SetGadgetFont(5,FontID3)
SetGadgetColor(5,#PB_Gadget_BackColor,$99D299)
SetGadgetColor(5,#PB_Gadget_FrontColor,$860181)
TextGadget(6,X(0),Y(33),X(550),Y(1),"")
SetGadgetColor(6,#PB_Gadget_BackColor,$0)
;
Repeat
Event = WaitWindowEvent()
If Event = #WM_LBUTTONDOWN
SendMessage_(WindowID(1), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
EndIf
If Event = #PB_Event_Gadget
Select EventGadget()
Case 2;bt Winconstructeur
RunProgram("Winconstructeur5")
Break
Case 3;bt AUTOGAD
RunProgram("AUTOGAD_V4")
Break
Case 4;bt stop
Break
EndSelect
EndIf
ForEver
End