Page 1 sur 1

Programmation automatique (Outils PB) le lanceur

Publié : lun. 02/déc./2019 14:59
par MLD
Bonjour a tous
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
Dimensions automatique a mes yeux veut dire fonctionnant sur tous les écrans. La précision dans certains cas rare sera de 1 ou 2 pixels.

Re: Programmation automatique (Outils PB) le lanceur

Publié : lun. 02/déc./2019 15:53
par Micoute
Merci beaucoup MLD pour le partage de cette suite que je trouve absolument géniale, j'ai fait de nombreux essais tous très concluants. Merci encore.

Re: Programmation automatique (Outils PB) le lanceur

Publié : mer. 04/déc./2019 17:53
par MLD
Avec un peu de retard, Merci Micoute
Vu le nombre de réponse tous le monde doit être content, il n'y a pas de bug. :lol:
Ou alors vu la vague de froid en ce moment les doigts sont collés au clavier :?: :oops:

Re: Programmation automatique (Outils PB) le lanceur

Publié : jeu. 05/déc./2019 15:19
par Micoute
Moi, ça va, je tape mes listings avec des gants de boxe.