Programmation automatique (Outils PB) le lanceur

Programmation d'applications complexes
Avatar de l’utilisateur
MLD
Messages : 1043
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Programmation automatique (Outils PB) le lanceur

Message 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.
Dernière modification par MLD le mer. 04/déc./2019 17:58, modifié 1 fois.
Avatar de l’utilisateur
Micoute
Messages : 2407
Inscription : dim. 02/oct./2011 16:17
Localisation : 50200 Coutances

Re: Programmation automatique (Outils PB) le lanceur

Message 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.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
MLD
Messages : 1043
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Programmation automatique (Outils PB) le lanceur

Message 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:
Avatar de l’utilisateur
Micoute
Messages : 2407
Inscription : dim. 02/oct./2011 16:17
Localisation : 50200 Coutances

Re: Programmation automatique (Outils PB) le lanceur

Message par Micoute »

Moi, ça va, je tape mes listings avec des gants de boxe.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73
Un homme doit être poli, mais il doit aussi être libre !
Répondre