Un constructeur de Fenêtres "WinConstructeur"

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

Un constructeur de Fenêtres "WinConstructeur"

Message par MLD »

Bonjour a tous

1° J'ai horreur de programmer toujours les mêmes codes.

2° Le Form intégré a PB ne me convient pas. (J'aime pas la façon dont le code s'écrit.)
Aparemment je ne suis pas le seul.(Désolé Polo/Gaetan).

3° En 2011 Chris avait produit WindowMaker. J'ai repris l'idée en la complétant un peu.

4° Ce code est libre, vous pouvez le copier, le modifier. Par contre pour l'intégré a un autre
logiciel, une demande sur ce Fofo serait la bienvenue.

5° Compilez la bête, faites des éssais, faites des critiques (constructives),remontez les bugs.

6° Si vous me faites part de votre intérêt pour ce logiciel, j'ai déja des idées pour une version 2
avec encore plus de possibilitées. (De toutes façons je le ferai pour moi.)
Amusez vous bien.
Ha! j'oubliais, il n'y a pas d'aide, il me semble que ce soit suffisament explicite comme cela.

Michel

Code : Tout sélectionner

; Sur une idée de Chris en 2011 (WindowMaker)
;*****************************************
; WinConstructeur V1 2/05/2013           *
; Programmer par MLD Compilation PB 5.11 *
;*****************************************
Enumeration
 #WinCtr
;>>>>> les Frames
 #Frame3D_idfen
 #Frame3D_titre
 #Frame3D_attrib
 #Frame3D_wincolor
 #Frame3D_tailpos
 #Frame3D_opt
 #Frame3D_loop
 #Frame3D_fonct 
;>>>>> les CheckBoxs
 #Check_SystMenu   ;attributs
 #Check_MinimizeGad
 #Check_MaximizeGad
 #Check_Invisible
 #Check_Tool
 #Check_Maximize
 #Check_Minimize
 #Check_Border
 #Check_ScreenCentered ;Taille/position
 #Check_WindowCentered
 #Check_SizeGadget
 #Check_Bound
 #Check_Invisiblebar ;Options
 #Check_Wincolor
 #Check_Statbar
 #Check_StickyWin
 #Check_Transp
 #Check_Loop_1 ;boucle
 #Check_Loop_2
 #Check_Loop_3
;>>>>> les TextGadgets
 #Text_id
 #Text_posX
 #Text_posY
 #Text_tailarg
 #Text_tailhaut
 #Text_utilbound
 #Text_Bdlargmin
 #Text_bdhautmin
 #Text_Bdlargmax
 #Text_bdhautmax
 #Text_col1
 #Text_col2
 #Text_col3
 #Text_col4
 #Text_col5
 #Text_col6
 #Text_colcod
 #Text_colG
 #Text_Transp
 #Text_statbarnbchamp 
 #Text_idfenmere 
;>>>>> les StringGadgets
 #String_Winid
 #String_Titre 
 #String_PosX
 #String_PosY
 #String_Larg
 #String_Haut
 #string_idfenmere
 #String_BdL_Mini
 #String_BdH_Mini
 #String_BdL_Maxi
 #String_BdH_Maxi
 #String_Statbar
;>>>>> les boutons
 #Bt_Cop
 #Bt_enrmod 
 #Bt_Ouvmod
 #Bt_Raz
 #Bt_Stop  
;>>>>> les autres gadgets 
 #ftest
 #trck_R
 #trck_G
 #trck_B
 #Trakb_Winctr 
 #Edit
 #StatusBar
 #ftestStatusBar
 #timer1
 #fichmod
;>>>>>> la petite fenêtre
 #Wenr
 #text_1
 #text_2
 #bt_1
 #bt_2
 #list1 
EndEnumeration
Declare fentest()
Declare contructeurwin()
Declare fendepart()
Declare affcodecolor()
Declare trScrCent()
Declare wBound()
Global Titr$
Global X,Y,Lrg,Htr,Btc,Bt1,Bt2,Typ,Ouv,Viv,Rds,Ctf
Global Wblmin$,Wblmax$,WbHmin$,WbHmax$,choixmod$ 
Global sap.b,nbbstat.l,dp.b
Procedure MouseHook(nCode, wParam, lParam)
  If wParam = #WM_LBUTTONUP
   sap.b = 1
  ElseIf wParam = #WM_MOUSEMOVE Or wParam = #WM_LBUTTONDOWN
    sap.b = 0 
  EndIf
  ProcedureReturn CallNextHookEx_(0, nCode, wParam, lParam)
EndProcedure

Procedure StatuBarWindowCallback(hWnd.l,uMsg.l,wParam.l,lParam.l)
 Structure ODSBTEXT
   szText.l
   clrFront.l
EndStructure
Global osbt.ODSBTEXT
osbt\clrFront = #Red;couleur du text
    Select uMsg
        Case #WM_DRAWITEM
      Protected *lpdis.DRAWITEMSTRUCT = lParam      
      If *lpdis\hWndItem = StatusBarID(#StatusBar)
         Protected *osbt.ODSBTEXT = *lpdis\itemData
         SetTextColor_(*lpdis\hDC,*osbt\clrFront)
         SetBkMode_(*lpdis\hDC,1)         
         DrawText_(*lpdis\hDC,*osbt\szText,-1,*lpdis\rcItem,#DT_SINGLELINE | #DT_VCENTER |#DT_CENTER)            
      EndIf
    EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

Procedure ToolTipMic(WindowNumber.l,GadgetNumber.l,Text.s)
  Protected Tooltip.l,Balloon.TOOLINFO
  Tooltip=CreateWindowEx_(0,"ToolTips_Class32","",#WS_POPUP | #TTS_NOPREFIX | #TTS_BALLOON,0,0,0,0,WindowID(WindowNumber),0,GetModuleHandle_(0),0)
  SendMessage_(Tooltip,#TTM_SETTIPTEXTCOLOR,GetSysColor_(#COLOR_INFOTEXT),0)
  SendMessage_(Tooltip,#TTM_SETTIPBKCOLOR,$5E5EB0,0)
  SendMessage_(Tooltip,#TTM_SETMAXTIPWIDTH,0,180)
  Balloon\cbSize=SizeOf(TOOLINFO)
  Balloon\uFlags=#TTF_IDISHWND | #TTF_SUBCLASS
  If IsGadget(GadgetNumber)
    Balloon\hwnd=GadgetID(GadgetNumber)
    Balloon\uId=GadgetID(GadgetNumber)
  Else
    Balloon\hwnd=GadgetNumber
    Balloon\uId=GadgetNumber
  EndIf
  Balloon\lpszText=@Text
  SendMessage_(Tooltip,#TTM_ADDTOOL,0,@Balloon)
  ProcedureReturn Tooltip
EndProcedure
Procedure FreeBalloonTooltip(Tooltip.l)
  DestroyWindow_(Tooltip.l)
EndProcedure

Procedure alerte(indal)
 Select indal
  Case 1
   osbt\szText = @ "Pas de couleur de fond avec une fenêtre Tool"
  Case 2
   osbt\szText = @ "Pas de Resize possible avec une fenêtre Borderless"
  Case 3
   osbt\szText = @ "Une fenêtre Tool est en natif invisible dans la barre de tâche"
  Case 4
   osbt\szText = @ "L'Id de la fenêtre mère est obligatoire pour cette fonction" 
  Case 5
   osbt\szText = @ "Le model de fenêtre est enregistré" 
 EndSelect
 SendMessage_(StatusBarID(#StatusBar),#SB_SETTEXT,1 | #SBT_OWNERDRAW,osbt)
EndProcedure

Procedure Raz()
For b = 8 To 28
 SetGadgetState(b,#PB_Checkbox_Unchecked)
Next 
SetGadgetState(9,#PB_Checkbox_Checked)
SetGadgetState(26,#PB_Checkbox_Checked)
SetGadgetText(50,"Ma_fen")
SetGadgetText(51,"Ma Fenêtre")
SetGadgetText(52,"500")
SetGadgetText(53,"200")
SetGadgetText(54,"400")
SetGadgetText(55,"400")
SetGadgetText(56,"")
SetGadgetText(61,"3")
SetGadgetText(#Text_Transp,"255")
trScrCent()
wBound()
affcodecolor()
fendepart()
EndProcedure

Procedure transp()
 If GetGadgetState(#Check_Transp) = 1 And sap.b = 1
  contructeurwin()
 EndIf 
EndProcedure
 
 Procedure affcodecolor()
  While WindowEvent() : Wend 
  If GetGadgetState(#Check_Wincolor)= 1
   SetGadgetText(#Text_col4,"$" + Hex(GetGadgetState(#trck_R)))
   SetGadgetText(#Text_col5,"$" + Hex(GetGadgetState(#trck_G)))
   SetGadgetText(#Text_col6,"$" + Hex(GetGadgetState(#trck_B)))
   SetGadgetText(#Text_colcod,GetGadgetText(#Text_col6)+ Hex(GetGadgetState(#trck_G))+ Hex(GetGadgetState(#trck_R)))
   SetGadgetColor(#Text_colG,#PB_Gadget_BackColor,RGB(GetGadgetState(#trck_R),GetGadgetState(#trck_G),GetGadgetState(#trck_B)))
   If GetGadgetState(#Check_Wincolor)= 1 And  sap.b = 1
   contructeurwin()
   EndIf
  Else
   SetGadgetColor(#Text_colG,#PB_Gadget_BackColor,GetWindowColor(#WinCtr))
   SetGadgetState(#trck_R,0):SetGadgetText(#Text_col4,"$00")
   SetGadgetState(#trck_G,0):SetGadgetText(#Text_col5,"$00")
   SetGadgetState(#trck_B,0):SetGadgetText(#Text_col6,"$00")
   SetGadgetText(#Text_colcod,"$000000")
  EndIf
 EndProcedure 

Procedure trScrCent()
 If GetGadgetState(#Check_ScreenCentered) = #PB_Checkbox_Checked
  SetGadgetColor(#Text_posX,#PB_Gadget_FrontColor,$D9C2BD)
  SetGadgetColor(#Text_posY,#PB_Gadget_FrontColor,$D9C2BD)
  SetGadgetColor(#string_posX,#PB_Gadget_FrontColor,$EEDFDB)
  SetGadgetColor(#string_posY,#PB_Gadget_FrontColor,$EEDFDB)
  SendMessage_(GadgetID(#string_posX),#EM_SETREADONLY,1,0) 
  SendMessage_(GadgetID(#string_posY),#EM_SETREADONLY,1,0)
 Else
  SetGadgetColor(#Text_posX,#PB_Gadget_FrontColor,$0)
  SetGadgetColor(#Text_posY,#PB_Gadget_FrontColor,$0)
  SetGadgetColor(#string_posX,#PB_Gadget_FrontColor,$0)
  SetGadgetColor(#string_posY,#PB_Gadget_FrontColor,$0)
  SendMessage_(GadgetID(#string_posX),#EM_SETREADONLY,0,0) 
  SendMessage_(GadgetID(#string_posY),#EM_SETREADONLY,0,0)
 EndIf
EndProcedure

Procedure trWinCent()
If GetGadgetState(#Check_WindowCentered) = #PB_Checkbox_Checked
  HideGadget(#Text_posX,1)
  HideGadget(#Text_posY,1)
  HideGadget(#string_posX,1)
  HideGadget(#string_posY,1) 
  HideGadget(#Text_idfenmere,0)
  HideGadget(#string_idfenmere,0)
Else
  HideGadget(#Text_idfenmere,1)
  HideGadget(#string_idfenmere,1)
  HideGadget(#Text_posX,0)
  HideGadget(#Text_posY,0)
  HideGadget(#string_posX,0)
  HideGadget(#string_posY,0) 
EndIf
EndProcedure

Procedure wBound()
 If GetGadgetState(#Check_Bound)= 1
  SetGadgetColor(#Text_Bdlargmin,#PB_Gadget_FrontColor,$0)
  SetGadgetColor(#Text_Bdhautmin,#PB_Gadget_FrontColor,$0)
  SetGadgetColor(#Text_Bdlargmax,#PB_Gadget_FrontColor,$0)
  SetGadgetColor(#Text_bdhautmax,#PB_Gadget_FrontColor,$0) 
  SendMessage_(GadgetID(#String_BdL_Mini),#EM_SETREADONLY,0,0)
  SetGadgetColor(#String_BdL_Mini,#PB_Gadget_FrontColor,$0)
  SendMessage_(GadgetID(#String_BdH_Mini),#EM_SETREADONLY,0,0)
  SetGadgetColor(#String_BdH_Mini,#PB_Gadget_FrontColor,$0)
  SendMessage_(GadgetID(#String_BdL_Maxi),#EM_SETREADONLY,0,0) 
  SetGadgetColor(#String_BdL_Maxi,#PB_Gadget_FrontColor,$0) 
  SendMessage_(GadgetID(#String_BdH_Maxi),#EM_SETREADONLY,0,0)
  SetGadgetColor(#String_BdH_Maxi,#PB_Gadget_FrontColor,$0)
  Wblmin$ = GetGadgetText(#String_BdL_Mini)
  wblmax$ = GetGadgetText(#String_BdL_Maxi)
  Wbhmin$ = GetGadgetText(#String_BdH_Mini)
  Wbhmax$ = GetGadgetText(#String_BdH_Maxi)
  contructeurwin()
 Else
  SetGadgetColor(#Text_Bdlargmin,#PB_Gadget_FrontColor,$D9C2BD)
  SetGadgetColor(#Text_Bdhautmin,#PB_Gadget_FrontColor,$D9C2BD)
  SetGadgetColor(#Text_Bdlargmax,#PB_Gadget_FrontColor,$D9C2BD)
  SetGadgetColor(#Text_bdhautmax,#PB_Gadget_FrontColor,$D9C2BD)  
  SendMessage_(GadgetID(#String_BdL_Mini),#EM_SETREADONLY,1,0)
  SetGadgetColor(#String_BdL_Mini,#PB_Gadget_FrontColor,$D9C2BD)
  SendMessage_(GadgetID(#String_BdH_Mini),#EM_SETREADONLY,1,0)
  SetGadgetColor(#String_BdH_Mini,#PB_Gadget_FrontColor,$D9C2BD)
  SendMessage_(GadgetID(#String_BdL_Maxi),#EM_SETREADONLY,1,0) 
  SetGadgetColor(#String_BdL_Maxi,#PB_Gadget_FrontColor,$D9C2BD) 
  SendMessage_(GadgetID(#String_BdH_Maxi),#EM_SETREADONLY,1,0)
  SetGadgetColor(#String_BdH_Maxi,#PB_Gadget_FrontColor,$D9C2BD)
 EndIf  
EndProcedure

Procedure fendepart()
ClearGadgetItems(#Edit)
AddGadgetItem(#Edit,0,";")
AddGadgetItem(#Edit,1,"Enumeration")
AddGadgetItem(#Edit,2," #" + GetGadgetText(#String_Winid))
AddGadgetItem(#Edit,3,"EndEnumeration")
AddGadgetItem(#Edit,4,"")
AddGadgetItem(#Edit,5,"")
AddGadgetItem(#Edit,6,"OpenWindow(" + GetGadgetItemText(#Edit,2)+ ",500,200,400,400," + Chr(34) + GetGadgetText(#String_Titre) + Chr(34) + ", #PB_Window_SystemMenu)")
AddGadgetItem(#Edit,7,"")
AddGadgetItem(#Edit,8,"; Ici vos gadgets")
For z  = 9 To 11 
 AddGadgetItem(#Edit,z,"") 
Next 
AddGadgetItem(#Edit,12,";  Boucle générale")
AddGadgetItem(#Edit,13,"Repeat") 
AddGadgetItem(#Edit,14," Event = WaitWindowEvent()")
For zz  = 15 To 17 
 AddGadgetItem(#Edit,zz,"")
Next
AddGadgetItem(#Edit,18,"Until Event = #PB_Event_CloseWindow") 
AddGadgetItem(#Edit,19,"End")
a$ = GetGadgetText(#String_Titre)
OpenWindow(#ftest,500,200,400,400,a$,#PB_Window_SystemMenu)
SetActiveWindow(#WinCtr)
EndProcedure

Procedure ctl()
 nl.l = CountGadgetItems(#Edit)+ 1
 ProcedureReturn nl.l
EndProcedure 

Procedure contructeurwin()
 Btc = 0 : Bt1 = 0 : Bt2 = 0 :Typ = 0 : Ouv = 0 : Viv = 0 : Rds = 0 : Ctf = 0 : dp = 0
 fn$ = ")"
 sp$ = " " + Chr(124)+ " ";"|"
 ;*****Protection contre un id de fenêtre non remplis pour WindowCentered ****
 If GetGadgetText(#string_idfenmere) = "" And GetGadgetState(#Check_WindowCentered) = 1 
  dp = 1
  SetActiveGadget(#string_idfenmere)
  alerte(4)
  ProcedureReturn 0
 EndIf
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤ id,placement,dimensions,titre 
 id$ = "#" + GetGadgetText(#String_Winid)
 If GetGadgetState(#Check_ScreenCentered) <> 1 And GetGadgetState(#Check_WindowCentered) <> 1
  X$ = "," + GetGadgetText(#String_PosX):X = Val(GetGadgetText(#String_PosX))
  Y$ = "," + GetGadgetText(#String_PosY):Y = Val(GetGadgetText(#String_PosY))
 Else
  X$ = "," + "0":X = 0
  Y$ = "," +"0" :y = 0
 EndIf 
 Lrg$ = "," + GetGadgetText(#String_Larg) :Lrg = Val(GetGadgetText(#String_Larg)) 
 Htr$ = "," + GetGadgetText(#String_Haut) :Htr = Val(GetGadgetText(#String_Haut)) 
 TitrEcr$ = Chr(34) + GetGadgetText(#String_Titre) + Chr(34): Titr$ = GetGadgetText(#String_Titre)
 Cw_1$ = "OpenWindow(" + id$ + X$ + Y$ + Lrg$ + Htr$ + "," + TitrEcr$  + ","
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤ les boutons de fenêtres  
 If GetGadgetState(#Check_SystMenu) = 1 Or GetGadgetState(#Check_SystMenu) = 0 And GetGadgetState(#Check_MinimizeGad) = 0 And GetGadgetState(#Check_MaximizeGad) = 0 
  Cw_2$ = "#PB_Window_SystemMenu":Btc = #PB_Window_SystemMenu
 EndIf      
 If GetGadgetState(#Check_SystMenu) = 0 And GetGadgetState(#Check_MinimizeGad) = 1 And GetGadgetState(#Check_MaximizeGad) = 0 
  Cw_2$ = "#PB_Window_MinimizeGadget" :Bt1 = #PB_Window_MinimizeGadget
 EndIf
 If GetGadgetState(#Check_SystMenu) = 0 And GetGadgetState(#Check_MinimizeGad) = 0 And GetGadgetState(#Check_MaximizeGad) = 1 
  Cw_2$ = "#PB_Window_MaximizeGadget": Bt2 = #PB_Window_MaximizeGadget
 EndIf
 If GetGadgetState(#Check_SystMenu) = 0 And GetGadgetState(#Check_MinimizeGad) = 1 And GetGadgetState(#Check_MaximizeGad) = 1 
  Cw_2$ = "#PB_Window_MinimizeGadget" + sp$ + "#PB_Window_MaximizeGadget" 
  Bt1 = #PB_Window_MinimizeGadget:Bt2 = #PB_Window_MaximizeGadget 
 EndIf
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤ les types de fenêtres (tool,bordeless)
 If GetGadgetState(#Check_Tool) = 1 Or GetGadgetState(#Check_Border) = 1
  If GetGadgetState(#Check_Tool) = 1
   Cw_3$ = sp$ + "#PB_Window_Tool" : Typ = #PB_Window_Tool
   CwP_1$ = Cw_1$ + Cw_2$ + Cw_3$ 
  EndIf
  If GetGadgetState(#Check_Border) = 1
   Cw_3$ = "#PB_Window_BorderLess": Btc = 0 :Typ = #PB_Window_BorderLess
   CwP_1$ = Cw_1$ + Cw_3$ 
  EndIf
 Else 
  CwP_1$ = Cw_1$ + Cw_2$ 
 EndIf
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤ les ouvertures des fenêtres
 If GetGadgetState(#Check_Maximize) = 1
  Cw_4$ = sp$ + "#PB_Window_Maximize" 
  CwP_1$ = CwP_1$ + Cw_4$ :Ouv = #PB_Window_Maximize     
 EndIf
 If GetGadgetState(#Check_Minimize) = 1
  Cw_4$ = sp$ + "#PB_Window_Minimize"
  CwP_1$ = CwP_1$ + Cw_4$ :Ouv = #PB_Window_Minimize 
 EndIf
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤ visible/invisible 
 If GetGadgetState(#Check_Invisible) = 1
  Cw_5$ = sp$ + "#PB_Window_Invisible"
  CwP_1$ = CwP_1$ + Cw_5$ :Viv = #PB_Window_Invisible
 EndIf
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤ redimensionne les fenêtres  
 If GetGadgetState(#Check_SizeGadget) = 1
  Cw_6$ = sp$ + "#PB_Window_SizeGadget": Rds = #PB_Window_SizeGadget 
  CwP_1$ = CwP_1$ + Cw_6$ 
 EndIf
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤ centrage des fenêtres
 If GetGadgetState(#Check_ScreenCentered) = 1
  Cw_7$ = sp$ + "#PB_Window_ScreenCentered" :Ctf = #PB_Window_ScreenCentered
  CwP_1$ = CwP_1$ + Cw_7$ 
 EndIf
 If GetGadgetState(#Check_WindowCentered) = 1 ; prevoir sécu pour windowID vide *********
  Cw_8$ = sp$ + "#PB_Window_WindowCentered" + sp$ + "WindowID(" + "#" + GetGadgetText(#string_idfenmere) + ")" 
  CwP_2$ = Cw_8$ :Ctf = #PB_Window_ScreenCentered ;pour la fenêtre test ne pas utilisé FenêtreMere
 EndIf
 If GetGadgetState(#Check_WindowCentered) = 1 
  Cwtot$ = CwP_1$  + CwP_2$ + fn$
 Else
  Cwtot$ = CwP_1$  + fn$
 EndIf
 ClearGadgetItems(#Edit) ;Ecriture du code dans l'editeur
 AddGadgetItem(#Edit,0,";")
 AddGadgetItem(#Edit,ctl(),"Enumeration")
 AddGadgetItem(#Edit,ctl(),id$)
 If GetGadgetState(#Check_Statbar) = 1;Statusbar
  AddGadgetItem(#Edit,ctl(),"#StatusBar")
 EndIf
 AddGadgetItem(#Edit,ctl(),"EndEnumeration") 
 AddGadgetItem(#Edit,ctl(),""):AddGadgetItem(#Edit,ctl(),"") 
 AddGadgetItem(#Edit,ctl(),Cwtot$);fin ecriture
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤ Fin OpenWindow début des options
 If GetGadgetState(#Check_SizeGadget)= 1 And GetGadgetState(#Check_Bound)= 1; WindowBound
  WB$ = "WindowBounds(" + id$ + "," + Wblmin$ + "," + Wbhmin$ + "," + Wblmax$ + "," + WbHmax$ + ")"
  AddGadgetItem(#Edit,ctl(),WB$);ecriture
 EndIf
 If GetGadgetState(#Check_Wincolor)= 1 ;window color
  WCL$ = "SetWindowColor(" + id$ + "," + GetGadgetText(#Text_colcod)+ ")"
  AddGadgetItem(#Edit,ctl(),WCL$);ecriture
 EndIf
 If GetGadgetState(#Check_StickyWin)= 1 ;StickyWindow
  WSTY$ = "StickyWindow(" + id$ + "," + "1)"
  AddGadgetItem(#Edit,ctl(),WSTY$);ecriture
 EndIf 
 If GetGadgetState(#Check_Invisiblebar) = 1 ;invible dans la barre de tache
  WINVBT$ = "SetWindowLongPtr_(WindowID(" + id$ + ")," + "#GWL_HWNDPARENT, FindWindow_(0," + Chr(34) + Chr(34) + "))"
  AddGadgetItem(#Edit,ctl(),WINVBT$);ecriture
 EndIf
 If GetGadgetState(#Check_Transp) = 1 ;transparence
  WTRP1$ = "SetWindowLongPtr_(WindowID(" + id$ + ")," + "#GWL_EXSTYLE, $00080000)"
  AddGadgetItem(#Edit,ctl(),WTRP1$);ecriture 
  WTRP2$ = "SetLayeredWindowAttributes_(WindowID(" + id$ + ")," + "0," + GetGadgetText(#Text_Transp) + ",#LWA_ALPHA)"
  AddGadgetItem(#Edit,ctl(),WTRP2$);ecriture 
 EndIf
 If GetGadgetState(#Check_Statbar) = 1;Statusbar
  nbbstat.l = Val(GetGadgetText(#String_Statbar)) -1 
  WSTBR1$ = "CreateStatusBar(#StatusBar,WindowID(" + id$ + "))"; attention a l'écriture mettre dans enumeration
  AddGadgetItem(#Edit,ctl(),WSTBR1$);ecriture 
  WSTBR2$ = "For i.l= 0 To " + Str(nbbstat.l)
  AddGadgetItem(#Edit,ctl(),WSTBR2$);ecriture 
  WSTBR3$ = "  AddStatusBarField(#PB_Ignore)"
  AddGadgetItem(#Edit,ctl(),WSTBR3$);ecriture 
  WSTBR4$ = "Next"
  AddGadgetItem(#Edit,ctl(),WSTBR4$);ecriture 
 EndIf
;¤¤¤¤¤¤¤¤¤¤ Fin des options, début des boucles 
 AddGadgetItem(#Edit,ctl(),"")
 AddGadgetItem(#Edit,ctl(),"; Ici vos gadgets")
 bl = ctl()
 For z  = bl To bl+3 
  AddGadgetItem(#Edit,z,"") 
 Next 
 AddGadgetItem(#Edit,ctl(),";  Boucle générale")
 If GetGadgetState(#Check_Loop_1) = 1
  WLP1L1$ = "Repeat"
  AddGadgetItem(#Edit,ctl(),WLP1L1$);ecriture 
  WLP1L2$ = "Event = WaitWindowEvent()"
  AddGadgetItem(#Edit,ctl(),WLP1L2$);ecriture 
  WLP1L3$ = "Until Event = #PB_Event_CloseWindow"
  AddGadgetItem(#Edit,ctl(),WLP1L3$);ecriture 
  WLP1L4$ = "End"
  AddGadgetItem(#Edit,ctl(),WLP1L4$);ecriture 
 EndIf
 If GetGadgetState(#Check_Loop_2) = 1 
  WLP2L1$ = "Repeat"
  AddGadgetItem(#Edit,ctl(),WLP2L1$);ecriture 
  WLP2L2$ = "Event = WaitWindowEvent()"
  AddGadgetItem(#Edit,ctl(),WLP2L2$);ecriture 
  WLP2L3$ = " If Event = #PB_Event_Gadget"
  AddGadgetItem(#Edit,ctl(),WLP2L3$);ecriture 
  WLP2L4$ = "   Select EventGadget()"
  AddGadgetItem(#Edit,ctl(),WLP2L4$);ecriture 
  WLP2L5$ = "   EndSelect"
  AddGadgetItem(#Edit,ctl(),WLP2L5$);ecriture 
  WLP2L6$ = " EndIf"
  AddGadgetItem(#Edit,ctl(),WLP2L6$);ecriture 
  WLP2L7$ = "Until Event = #PB_Event_CloseWindow"
  AddGadgetItem(#Edit,ctl(),WLP2L7$);ecriture 
  WLP2L8$ = "End"
  AddGadgetItem(#Edit,ctl(),WLP2L8$);ecriture 
 EndIf
 If GetGadgetState(#Check_Loop_3) = 1 
  WLP3L1$ = "Repeat"
  AddGadgetItem(#Edit,ctl(),WLP3L1$);ecriture 
  WLP3L2$ = "Event = WaitWindowEvent()"
  AddGadgetItem(#Edit,ctl(),WLP3L2$);ecriture 
  WLP3L3$ = " If Event = #PB_Event_Gadget"
  AddGadgetItem(#Edit,ctl(),WLP3L3$);ecriture 
  WLP3L4$ = "   Select EventGadget()"
  AddGadgetItem(#Edit,ctl(),WLP3L4$);ecriture 
  WLP3L5$ = "   EndSelect"
  AddGadgetItem(#Edit,ctl(),WLP3L5$);ecriture 
  WLP3L6$ = " EndIf"
  AddGadgetItem(#Edit,ctl(),WLP3L6$);ecriture 
  WLP3L7$ = "ForEver"
  AddGadgetItem(#Edit,ctl(),WLP3L7$);ecriture 
 EndIf 
fentest()
EndProcedure

Procedure fentest()
 CloseWindow(#ftest)
 OpenWindow(#ftest,X,Y,Lrg,Htr,Titr$,Btc|Bt1|Bt2|Typ|Ouv|Viv|Rds|Ctf)
 If GetGadgetState(#Check_SizeGadget)= 1 And GetGadgetState(#Check_Bound)= 1 ; WindowBound
  WindowBounds(#ftest,Val(Wblmin$),Val(Wbhmin$),Val(Wblmax$),Val(WbHmax$))
 EndIf
 If GetGadgetState(#Check_Wincolor)= 1 
  SetWindowColor(#ftest,RGB(GetGadgetState(#trck_R),GetGadgetState(#trck_G),GetGadgetState(#trck_B)))   
 EndIf
 If GetGadgetState(#Check_StickyWin)= 1 ;StickyWindow
  StickyWindow(#ftest,1) 
 Else
  StickyWindow(#ftest,0) 
 EndIf 
 If GetGadgetState(#Check_Invisiblebar) = 1 ;invible dans la barre de tache
  SetWindowLongPtr_(WindowID(#ftest),#GWL_HWNDPARENT,FindWindow_(0, ""))
 EndIf
 If GetGadgetState(#Check_Transp) = 1 ;transparence
  SetWindowLongPtr_(WindowID(#ftest),#GWL_EXSTYLE, $00080000)
  SetLayeredWindowAttributes_(WindowID(#ftest), 0, GetGadgetState(#Trakb_Winctr), #LWA_ALPHA) 
 EndIf
 If GetGadgetState(#Check_Statbar) = 1
  CreateStatusBar(#ftestStatusBar, WindowID(#ftest))
  For i.l= 0 To nbbstat.l
   AddStatusBarField(#PB_Ignore)
  Next
 EndIf 
 SetActiveWindow(#WinCtr)
EndProcedure

Procedure fen2(Fc.b)
OpenWindow(#Wenr,180,200,200,100,"Ma Fenêtre",#PB_Window_BorderLess|#PB_Window_Invisible)
If Fc = 1
 SetWindowColor(#Wenr,$00E9)
Else
 SetWindowColor(#Wenr,$A7BAD2)
EndIf
SetWindowLongPtr_(WindowID(#Wenr), #GWL_STYLE, GetWindowLongPtr_(WindowID(#Wenr), #GWL_STYLE) | #WS_DLGFRAME)
SetWindowPos_(WindowID(#Wenr), 0,0,0,0,0,#SWP_NOSIZE|#SWP_NOMOVE|#SWP_NOZORDER|#SWP_FRAMECHANGED)
SetClassLongPtr_(WindowID(#Wenr),#GCL_STYLE,$00020000)
StickyWindow(#Wenr,1)
HideWindow(#Wenr,0)
If Fc = 1
 TextGadget(#text_1,5, 20,190,20,"CE MODEL EXISTE")
 SetGadgetColor(#text_1,#PB_Gadget_BackColor,$00E9) 
 TextGadget(#text_2,25, 45,150,20,"Voulez vous le modifier ?")
 SetGadgetColor(#text_2,#PB_Gadget_BackColor,$00E9)
 ButtonGadget(#bt_1,70,70, 80,18,"Non") 
 ButtonGadget(#bt_2,150,70, 40,18,"Oui") 
Else
  TextGadget(#text_1,5,5,190,20,"Choisissez un modèle")
  SetGadgetColor(#text_1,#PB_Gadget_BackColor,$A7BAD2) 
  ListViewGadget(#list1, 5, 20,185,55)
  SetGadgetColor(#list1,#PB_Gadget_BackColor,$45A713)
  ButtonGadget(#bt_2,150,75, 40,18,"Stop") 
  Directory$ = GetCurrentDirectory()
  ExamineDirectory(0, Directory$, "*.mld")  
  While NextDirectoryEntry(0)
   AddGadgetItem (#list1,-1,DirectoryEntryName(0))
  Wend
  FinishDirectory(0) 
EndIf
;  Boucle générale
Repeat
Event = WaitWindowEvent()
 If Event = #PB_Event_Gadget
   Select EventGadget()
    Case #bt_1
     CloseWindow(#Wenr)
     ProcedureReturn  0
    Case #bt_2
     If Fc.b = 1
      CloseWindow(#Wenr)
      ProcedureReturn  1 
     Else
      CloseWindow(#Wenr)
      ProcedureReturn  0
     EndIf 
    Case #list1
     Select EventType() 
      Case #PB_EventType_LeftClick 
        choixmod$ = GetGadgetText(#list1)
        CloseWindow(#Wenr)
        ProcedureReturn  0
     EndSelect
   EndSelect
 EndIf
SendMessage_(WindowID(#Wenr), #WM_NCLBUTTONDOWN, #HTCAPTION, 0) 
ForEver
EndProcedure

Procedure EnrWmodel()
Dpenr.b = 0
Dim Wmodel$(28)
Wmodel$(1) = GetGadgetText(50) + "¤";id
Wmodel$(2) = GetGadgetText(51) + "¤";titre
If GetGadgetState(9)= 1 : Wmodel$(3) = "1" + "¤" : Else :Wmodel$(3) = "0" + "¤" :EndIf;bt system
If GetGadgetState(10)= 1 : Wmodel$(4) = "1" + "¤" : Else :Wmodel$(4) = "0" + "¤" : EndIf;bt minimise 
If GetGadgetState(11)= 1 : Wmodel$(5) = "1" + "¤" : Else :Wmodel$(5) = "0" + "¤" : EndIf;bt maximise 
If GetGadgetState(13)= 0 And GetGadgetState(16)= 0
 Wmodel$(6) = "0" + "¤" ;fn normale
Else
 If GetGadgetState(13)= 1 : Wmodel$(6) = "1" + "¤" :EndIf;fn tool
 If GetGadgetState(16)= 1 : Wmodel$(6) = "2" + "¤" :EndIf ;fn borderless
EndIf
If GetGadgetState(14)= 0 And GetGadgetState(15)= 0
 Wmodel$(7) = "0" + "¤" ;fn normale
Else
 If GetGadgetState(14)= 1 : Wmodel$(7) = "1" + "¤" :EndIf;maximise
 If GetGadgetState(15)= 1 : Wmodel$(7) = "2" + "¤" :EndIf ;minimise
EndIf
If GetGadgetState(12)= 1 : Wmodel$(8) = "1" + "¤" : Else :Wmodel$(8) = "0" + "¤" :EndIf;fn invisible
If GetGadgetState(17)= 0 And GetGadgetState(18)= 0
 Wmodel$(9) = "0" + "¤" ;pas de centrage
Else
 If GetGadgetState(17)= 1 : Wmodel$(9) = "1" + "¤" :EndIf;screencentered
 If GetGadgetState(18)= 1 : Wmodel$(9) = "2" + "¤" :EndIf ;wincentered
EndIf
Wmodel$(10) = GetGadgetText(52) + "¤";posx
Wmodel$(11) = GetGadgetText(53) + "¤";posy
Wmodel$(12) = GetGadgetText(54) + "¤";largeur
Wmodel$(13) = GetGadgetText(55) + "¤";hauteur
If GetGadgetState(19)= 1 : Wmodel$(14) = "1" + "¤" : Else :Wmodel$(14) = "0" + "¤" :EndIf;size
If GetGadgetState(20)= 1 : Wmodel$(15) = "1" + "¤" : Else :Wmodel$(15) = "0" + "¤" :EndIf;bound
Wmodel$(16) = GetGadgetText(57) + "¤";largeur/min
Wmodel$(17) = GetGadgetText(58) + "¤";hauteur/min
Wmodel$(18) = GetGadgetText(59) + "¤";largeur/max
Wmodel$(19) = GetGadgetText(60) + "¤";hauteur/max
If GetGadgetState(22)= 1 : Wmodel$(20) = "1" + "¤" : Else :Wmodel$(20) = "0" + "¤" :EndIf;wcolor
Wmodel$(21) = GetGadgetText(#Text_col6)+ "*"+GetGadgetText(#Text_col5)+ "*"+GetGadgetText(#Text_col4)+ "*" + "¤";chiffre color
If GetGadgetState(21)= 1 : Wmodel$(22) = "1" + "¤" : Else :Wmodel$(22) = "0" + "¤" :EndIf;invisibleBT
If GetGadgetState(24)= 1 : Wmodel$(23) = "1" + "¤" : Else :Wmodel$(23) = "0" + "¤" :EndIf;sticky
If GetGadgetState(25)= 1 : Wmodel$(24) = "1" + "¤" : Else :Wmodel$(24) = "0" + "¤" :EndIf;transp
Wmodel$(25) = GetGadgetText(#Text_Transp) + "¤";chiffre transp
If GetGadgetState(23)= 1 : Wmodel$(26) = "1" + "¤" : Else :Wmodel$(26) = "0" + "¤" :EndIf;statusbar
Wmodel$(27) = GetGadgetText(61) + "¤";chiffre statusb
If GetGadgetState(26)= 1 : Wmodel$(28) = "1" + "¤" :EndIf
If GetGadgetState(27)= 1 : Wmodel$(28) = "2" + "¤" :EndIf
If GetGadgetState(28)= 1 : Wmodel$(28) = "3" + "¤" :EndIf
For x =1 To 28
 mod$ = mod$ + Wmodel$(x)
Next
fichmod$ = GetGadgetText(50) + ".mld"
If  FileSize(fichmod$) = -1
 Dpenr.b = 1
Else
 Dpenr.b = fen2(1) 
EndIf  
If Dpenr.b = 1
 CreateFile(#fichmod,fichmod$)
 WriteString(#fichmod,mod$) 
 CloseFile(#fichmod)
 alerte(5) 
EndIf
Dim Wmodel$(0)
EndProcedure

Procedure Ouvmod()
choixmod$  = "" ;mis en global
fen2(2)
ReadFile(#fichmod,choixmod$)  
winmod$ = ReadString(#fichmod)
Debug winmod$
CloseFile(#fichmod) 
SetGadgetText(50,StringField(winmod$,1,"¤")) : SetGadgetText(51,StringField(winmod$,2,"¤"))
SetGadgetState(9,Val(StringField(winmod$,3,"¤")))
SetGadgetState(10,Val(StringField(winmod$,4,"¤")))
SetGadgetState(11,Val(StringField(winmod$,5,"¤")))
If Val(StringField(winmod$,6,"¤")) = 0
 SetGadgetState(13,0):SetGadgetState(16,0)
Else 
 If Val(StringField(winmod$,6,"¤")) = 1
  SetGadgetState(13,1):SetGadgetState(16,0)
 EndIf
 If Val(StringField(winmod$,6,"¤")) = 2
  SetGadgetState(13,0):SetGadgetState(16,1)
 EndIf 
EndIf 
If Val(StringField(winmod$,7,"¤")) = 0
 SetGadgetState(14,0):SetGadgetState(15,0)
Else 
 If Val(StringField(winmod$,7,"¤")) = 1
  SetGadgetState(14,1):SetGadgetState(15,0)
 EndIf
 If Val(StringField(winmod$,7,"¤")) = 2
  SetGadgetState(14,0):SetGadgetState(15,1)
 EndIf 
EndIf 
SetGadgetState(12,Val(StringField(winmod$,8,"¤")))
If Val(StringField(winmod$,9,"¤")) = 0
 SetGadgetState(17,0):SetGadgetState(18,0)
Else 
 If Val(StringField(winmod$,9,"¤")) = 1
  SetGadgetState(17,1):SetGadgetState(18,0)
 EndIf
 If Val(StringField(winmod$,9,"¤")) = 2
  SetGadgetState(17,0):SetGadgetState(18,1)
 EndIf 
EndIf 
SetGadgetText(52,StringField(winmod$,10,"¤")) : SetGadgetText(53,StringField(winmod$,11,"¤"))
SetGadgetText(54,StringField(winmod$,12,"¤")) : SetGadgetText(55,StringField(winmod$,13,"¤"))
SetGadgetState(19,Val(StringField(winmod$,14,"¤")))
SetGadgetState(20,Val(StringField(winmod$,15,"¤")))
SetGadgetText(57,StringField(winmod$,16,"¤")) : SetGadgetText(58,StringField(winmod$,17,"¤"))
SetGadgetText(59,StringField(winmod$,18,"¤")) : SetGadgetText(60,StringField(winmod$,19,"¤"))
SetGadgetState(22,Val(StringField(winmod$,20,"¤")))
If Val(StringField(winmod$,20,"¤")) = 1
 coul$ = StringField(winmod$,21,"¤")
 SetGadgetState(#trck_B,Val(StringField(coul$,1,"*")))
 SetGadgetState(#trck_G,Val(StringField(coul$,2,"*")))
 SetGadgetState(#trck_R,Val(StringField(coul$,3,"*")))
EndIf
SetGadgetState(21,Val(StringField(winmod$,22,"¤")))
SetGadgetState(24,Val(StringField(winmod$,23,"¤")))
SetGadgetState(25,Val(StringField(winmod$,24,"¤")))
SetGadgetText(#Text_Transp,StringField(winmod$,25,"¤"))
If Val(StringField(winmod$,25,"¤")) <> 0
 SetGadgetState(71,Val(StringField(winmod$,25,"¤")))
EndIf
SetGadgetState(23,Val(StringField(winmod$,26,"¤")))
SetGadgetText(61,StringField(winmod$,27,"¤")) 
lp.b = Val(StringField(winmod$,28,"¤")) 
Select lp.b
 Case 1
  SetGadgetState(26,1):SetGadgetState(27,0):SetGadgetState(28,0)
 Case 2 
  SetGadgetState(26,0):SetGadgetState(27,1):SetGadgetState(28,0)
 Case 3 
  SetGadgetState(26,0):SetGadgetState(27,0):SetGadgetState(28,1)
EndSelect   
If Val(StringField(winmod$,20,"¤")) = 1
 affcodecolor()
Else
 contructeurwin()
EndIf 
EndProcedure

;====== fenêtre principale =====
OpenWindow(#WinCtr, 10, 20, 470, 700, "WinConstructeur", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget)
SetWindowCallback(@StatuBarWindowCallback())
HookMouse = SetWindowsHookEx_(#WH_MOUSE_LL, @MouseHook(), GetModuleHandle_(0), 0)
AddWindowTimer(#WinCtr,#timer1, 6000)
CreateStatusBar(#StatusBar,WindowID (#WinCtr)) 
AddStatusBarField(#PB_Ignore)
AddStatusBarField(300)
AddStatusBarField(#PB_Ignore)
StatusBarText(#StatusBar,0,"   2013/V1")
StatusBarText(#StatusBar,2,"     "+ Chr(174) + " MLD")
;====== gadgets Frame3D ========
Frame3DGadget(#Frame3D_idfen,5,5,255,45,"Id Fenêtre")
Frame3DGadget(#Frame3D_Titre,5,55,460,45, "Titre de la fenêtre")
Frame3DGadget(#Frame3D_Attrib,5,110,225,110,"Attributs de la fenêtre")
Frame3DGadget(#Frame3D_wincolor,5,225,225,105,"Windowcolor")
Frame3DGadget(#Frame3D_tailpos,235,110,230,220,"Position - Taille de la fenêtre")
Frame3DGadget(#Frame3D_opt,5,330,460,68,"Options")
Frame3DGadget(#Frame3D_loop,5,400,460,45,"Inclure la Boucle générale")
Frame3DGadget(#Frame3D_fonct,5,455,460,45,"Fonctions")
;====== gadgets CheckBox ========
CheckBoxGadget(#Check_SystMenu,15,135,100,20,"Bouton System")
SetGadgetState(#Check_SystMenu,#PB_Checkbox_Checked)
CheckBoxGadget(#Check_MinimizeGad,15,155,100,20,"Bouton Minimize")
CheckBoxGadget(#Check_MaximizeGad,15,175,100,20,"Bouton Maximize")
CheckBoxGadget(#Check_Tool,15,195,80,20, "Tool")
CheckBoxGadget(#Check_Border,140,135,80,20,"BorderLess")
CheckBoxGadget(#Check_Maximize,140,155,80,20,"Maximize")
CheckBoxGadget(#Check_Minimize,140,175,80,20,"Minimize")
CheckBoxGadget(#Check_Invisible,140,195,80,20,"Invisible")
CheckBoxGadget(#Check_ScreenCentered,245,135,100,20,"ScreenCentered")
CheckBoxGadget(#Check_WindowCentered,365,135,90,20,"WindCentered")
ToolTipMic(#WinCtr,#Check_WindowCentered,"Attention l'utilisation de cette fonction donne parfois des résultats étranges?")
CheckBoxGadget(#Check_SizeGadget,245,210,80,20,"SizeGadget")
CheckBoxGadget(#Check_Bound,365,210,90,20,"WindowBound")
CheckBoxGadget(#Check_Invisiblebar,15,350,180,20,"Invisible dans la barre de Tâche") 
CheckBoxGadget(#Check_StickyWin,315,350,100,20,"StickyWindow")
CheckBoxGadget(#Check_Wincolor,15,242,80,20,"Windowcolor")
CheckBoxGadget(#Check_Statbar,315,370,60,20,"Statubar") 
CheckBoxGadget(#Check_Transp,15,370,85,20,"Transparence")
CheckBoxGadget(#Check_Loop_1,80,415,80,20,"Minimale")
SetGadgetState(#Check_Loop_1,#PB_Checkbox_Checked) 
CheckBoxGadget(#Check_Loop_2,230,415,80,20,"Standard")
CheckBoxGadget(#Check_Loop_3,380,415,80,20,"Sans fin") 
ToolTipMic(#WinCtr,#Check_Loop_3,"Boucle sans fin. Un bouton d'arrêt est obligatoire.(Principale utilisation : fenêtre Borderless.)")
;====== gadgets text
TextGadget(#Text_id,10,26,20,20, "# +") 
TextGadget(#Text_posX,245,158,60,20, "Position  X:")
TextGadget(#Text_idfenmere,245,158,100,20, "Id fenêtre mère")
HideGadget(#Text_idfenmere,1)
TextGadget(#Text_posY,380,158,15,20, "Y:")
TextGadget(#Text_tailarg,245,180,60,20, "Taille  Larg:")
TextGadget(#Text_tailhaut,365,180,60,20, "Haut:") 
TextGadget(#Text_utilbound,265,235,160,20,"Si WindowBound: Taille mini/maxi")
SetGadgetColor(#Text_utilbound,#PB_Gadget_FrontColor,$D9C2BD)
TextGadget(#Text_Bdlargmin,245,260,50,20,"Larg/min") 
SetGadgetColor(#Text_Bdlargmin,#PB_Gadget_FrontColor,$D9C2BD)
TextGadget(#Text_Bdhautmin,365,260,50,20,"Haut/min") 
SetGadgetColor(#Text_Bdhautmin,#PB_Gadget_FrontColor,$D9C2BD)
TextGadget(#Text_Bdlargmax,245,290,50,20,"Larg/max")
SetGadgetColor(#Text_Bdlargmax,#PB_Gadget_FrontColor,$D9C2BD) 
TextGadget(#Text_bdhautmax,365,290,50,20,"Haut/max")
SetGadgetColor(#Text_bdhautmax,#PB_Gadget_FrontColor,$D9C2BD) 
TextGadget(#Text_col1,15,265,10,20,"R"):SetGadgetColor(#Text_col1,#PB_Gadget_FrontColor,$0000C8)
TextGadget(#Text_col2,15,285,10,20,"G"):SetGadgetColor(#Text_col2,#PB_Gadget_FrontColor,$008000)
TextGadget(#Text_col3,15,305,10,20,"B"):SetGadgetColor(#Text_col3,#PB_Gadget_FrontColor,$C80000)
TextGadget(#Text_col4,27,265,20,20,"$00")
TextGadget(#Text_col5,27,285,20,20,"$00") 
TextGadget(#Text_col6,27,305,20,20,"$00")
TextGadget(#Text_colcod,175,243,50,20,"$000000",#ES_CENTER)
TextGadget(#Text_colG,175,265,50,55,"",#PB_Text_Border) 
TextGadget(#Text_statbarnbchamp,380,374,60,20,"Nb champ:")
TextGadget(#Text_Transp,277,372,30,20,"255",#ES_CENTER|#PB_Text_Border) 
;====== Gadget String
StringGadget(#String_Winid,40,23,210,20,"Ma_fen")
StringGadget(#String_Titre,10,73,445,20,"Ma Fenêtre") 
StringGadget(#string_idfenmere,320,155,135,20,"",#ES_CENTER) 
HideGadget(#string_idfenmere,1)
StringGadget(#String_PosX,310,155,40,20,"500",#ES_CENTER)
StringGadget(#String_PosY,400,155,40,20,"200",#ES_CENTER) 
StringGadget(#String_Larg,310,178,40,20,"400",#ES_CENTER) 
StringGadget(#String_Haut,400,178,40,20,"400",#ES_CENTER)
StringGadget(#String_BdL_Mini,300,256,40,20,"50",#ES_CENTER)
SendMessage_(GadgetID(#String_BdL_Mini),#EM_SETREADONLY,1,0)
SetGadgetColor(#String_BdL_Mini,#PB_Gadget_FrontColor,$D9C2BD)   
StringGadget(#String_BdH_Mini,415,256,40,20,"50",#ES_CENTER)
SendMessage_(GadgetID(#String_BdH_Mini),#EM_SETREADONLY,1,0)
SetGadgetColor(#String_BdH_Mini,#PB_Gadget_FrontColor,$D9C2BD)      
StringGadget(#String_BdL_Maxi,300,286,40,20,"800",#ES_CENTER)
SendMessage_(GadgetID(#String_BdL_Maxi),#EM_SETREADONLY,1,0) 
SetGadgetColor(#String_BdL_Maxi,#PB_Gadget_FrontColor,$D9C2BD)     
StringGadget(#String_BdH_Maxi,415,286,40,20,"800",#ES_CENTER)
SendMessage_(GadgetID(#String_BdH_Maxi),#EM_SETREADONLY,1,0)
SetGadgetColor(#String_BdH_Maxi,#PB_Gadget_FrontColor,$D9C2BD)  
StringGadget(#String_Statbar,440,371,20,20,"3",#ES_CENTER) 
;====== Gadget Bouton
ButtonGadget(#Bt_Cop,10,472,85,20,"Copier")
ToolTipMic(#WinCtr,#Bt_Cop,"Copie le code dans le presse-papiers.")
ButtonGadget(#Bt_enrmod,100,472,85,20,"Enr un modèle")
ToolTipMic(#WinCtr,#Bt_enrmod,"Enregistre cette fenêtre comme modèle.") 
ButtonGadget(#Bt_Ouvmod,190,472,87,20,"Ouvre un modèle")
ToolTipMic(#WinCtr,#Bt_Ouvmod,"Ouvre un modèle de fenêtre.")
ButtonGadget(#Bt_Raz,283,472,85,20,"R A Z")
ToolTipMic(#WinCtr,#Bt_Raz,"Remet a zéro WinConstructeur.")
ButtonGadget(#Bt_Stop,375,472,85,20,"Quitter")
ToolTipMic(#WinCtr,#Bt_Stop,"On termine ici.")
;====== Gadget autres
TrackBarGadget(#trck_R,50,265,125,20,0,255)
TrackBarGadget(#trck_G,50,285,125,20,0,255)
TrackBarGadget(#trck_B,50,305,125,20,0,255)
TrackBarGadget(#Trakb_Winctr,105,372,170,20,50,255)
SetGadgetState(#Trakb_Winctr,255)
While WindowEvent() : Wend 
EditorGadget(#Edit,2,505,466,170,#PB_Editor_ReadOnly)
SetGadgetColor(#Edit,#PB_Gadget_BackColor,$699A14)  

fendepart()

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_Timer 
     If EventTimer() = #timer1
      osbt\szText = @ ""
      SendMessage_(StatusBarID(#StatusBar),#SB_SETTEXT,1 | #SBT_OWNERDRAW,osbt)
     EndIf 
    Case #PB_Event_CloseWindow
     Quit = #True
    Case #PB_Event_Gadget 
     Select EventGadget()
      Case #Check_SystMenu
       If GetGadgetState(#Check_MinimizeGad)= 1 Or GetGadgetState(#Check_MaximizeGad)= 1
        SetGadgetState(#Check_SystMenu,#PB_Checkbox_Unchecked)
       Else
        SetGadgetState(#Check_SystMenu,#PB_Checkbox_Checked)
        SetGadgetState(#Check_Tool,#PB_Checkbox_Unchecked)
        SetGadgetState(#Check_Border,#PB_Checkbox_Unchecked)
       EndIf
      Case #Check_MinimizeGad  
       SetGadgetState(#Check_SystMenu,#PB_Checkbox_Unchecked)
       SetGadgetState(#Check_Tool,#PB_Checkbox_Unchecked)
       SetGadgetState(#Check_Border,#PB_Checkbox_Unchecked)
      Case #Check_MaximizeGad  
       SetGadgetState(#Check_SystMenu,#PB_Checkbox_Unchecked)
       SetGadgetState(#Check_Tool,#PB_Checkbox_Unchecked)
       SetGadgetState(#Check_Border,#PB_Checkbox_Unchecked) 
      Case #Check_Tool
       SetGadgetState(#Check_SystMenu,#PB_Checkbox_Checked)
       SetGadgetState(#Check_MinimizeGad,#PB_Checkbox_Unchecked)
       SetGadgetState(#Check_MaximizeGad,#PB_Checkbox_Unchecked)
       SetGadgetState(#Check_Border,#PB_Checkbox_Unchecked) 
       SetGadgetState(#Check_Wincolor,#PB_Checkbox_Unchecked)
       affcodecolor()
      Case #Check_Border 
       SetGadgetState(#Check_SystMenu,#PB_Checkbox_Unchecked)
       SetGadgetState(#Check_MinimizeGad,#PB_Checkbox_Unchecked)
       SetGadgetState(#Check_MaximizeGad,#PB_Checkbox_Unchecked)
       SetGadgetState(#Check_Tool,#PB_Checkbox_Unchecked) 
       SetGadgetState(#Check_SizeGadget,#PB_Checkbox_Unchecked)
       SetGadgetState(#Check_Bound,#PB_Checkbox_Unchecked)
       wBound() 
      Case #Check_Maximize 
       If GetGadgetState(#Check_Maximize) = 1
        SetGadgetState(#Check_Minimize,#PB_Checkbox_Unchecked)
       EndIf
      Case #Check_Minimize
       If GetGadgetState(#Check_Minimize) = 1
        SetGadgetState(#Check_Maximize,#PB_Checkbox_Unchecked)
       EndIf
      Case #Check_ScreenCentered
        If GetGadgetState(#Check_ScreenCentered) = 1
         SetGadgetState(#Check_WindowCentered,#PB_Checkbox_Unchecked)
        EndIf 
        trScrCent()
        trWinCent()
      Case #Check_WindowCentered
        If GetGadgetState(#Check_WindowCentered) = 1
         SetGadgetState(#Check_ScreenCentered,#PB_Checkbox_Unchecked)
        EndIf 
        trWinCent()
        trScrCent()
      Case #Check_SizeGadget
       If GetGadgetState(#Check_Border) <> 1
        If GetGadgetState(#Check_SizeGadget)= 0
         SetGadgetState(#Check_Bound,#PB_Checkbox_Unchecked)
         SetGadgetColor(#Text_utilbound,#PB_Gadget_FrontColor,$D9C2BD)
         wBound()
        Else
         SetGadgetColor(#Text_utilbound,#PB_Gadget_FrontColor,$0)
        EndIf 
       Else
        SetGadgetState(#Check_SizeGadget,#PB_Checkbox_Unchecked)
        alerte(2)   
       EndIf 
      Case #Check_Bound
       If GetGadgetState(#Check_SizeGadget)= 1
        wBound()
       Else
        SetGadgetState(#Check_Bound,#PB_Checkbox_Unchecked) 
       EndIf
      Case #Check_Transp
       If GetGadgetState(#Check_Transp) <> 1
        SetGadgetText(#Text_Transp,"255")
        SetGadgetState(#Trakb_Winctr,255)
        contructeurwin()
       EndIf 
      Case #Trakb_Winctr
       If GetGadgetState(#Check_Transp) = 1
        SetGadgetText(#Text_Transp,Str(GetGadgetState(#Trakb_Winctr)))
        transp()
       EndIf
      Case #trck_R
       affcodecolor()
      Case #trck_G
       affcodecolor()
      Case #trck_B
       affcodecolor() 
      Case #Check_Wincolor
       If GetGadgetState(#Check_Tool)<> 1
        affcodecolor()
       Else
        SetGadgetState(#Check_Wincolor,#PB_Checkbox_Unchecked)
        alerte(1)
       EndIf  
      Case #Check_Invisiblebar
       If GetGadgetState(#Check_Tool) <> 1 
        If GetGadgetState(#Check_Invisiblebar) = 1
         contructeurwin()
        EndIf
       Else 
        SetGadgetState(#Check_Invisiblebar,#PB_Checkbox_Unchecked) 
        alerte(3)
       EndIf 
      Case #Check_Loop_1
       SetGadgetState(#Check_Loop_1,#PB_Checkbox_Checked)
       SetGadgetState(#Check_Loop_2,#PB_Checkbox_Unchecked)
       SetGadgetState(#Check_Loop_3,#PB_Checkbox_Unchecked)
       contructeurwin()
      Case #Check_Loop_2
       SetGadgetState(#Check_Loop_1,#PB_Checkbox_Unchecked)
       SetGadgetState(#Check_Loop_2,#PB_Checkbox_Checked)
       SetGadgetState(#Check_Loop_3,#PB_Checkbox_Unchecked)
       contructeurwin()
      Case #Check_Loop_3
       SetGadgetState(#Check_Loop_1,#PB_Checkbox_Unchecked)
       SetGadgetState(#Check_Loop_2,#PB_Checkbox_Unchecked)
       SetGadgetState(#Check_Loop_3,#PB_Checkbox_Checked)
       contructeurwin()
      Case #Bt_Cop 
       contructeurwin()
       If dp = 0
        ClearClipboard()
        SetClipboardText(GetGadgetText(#Edit))
       EndIf
      Case #Bt_enrmod
        EnrWmodel() 
      Case #Bt_Ouvmod  
         Ouvmod()
      Case #Bt_Raz
       Raz()  
      Case #Bt_Stop
       CloseWindow(#WinCtr)
       CloseWindow(#ftest)
       Quit = #True   
      EndSelect 
      Select EventGadget()
       Case 8 To 24 
       While WindowEvent() : Wend 
        contructeurwin()
       Case 50 To 56
        Select EventType() 
          Case #PB_EventType_Change
           contructeurwin()   
        EndSelect  
       Case 57 To 60
        Select EventType() 
         Case #PB_EventType_Change
          wBound()  
        EndSelect
      EndSelect
    EndSelect
Until Quit
UnhookWindowsHookEx_(HookMouse)
FreeBalloonTooltip(Tooltip.l) 
End

Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Un constructeur de Fenêtres "WinConstructeur"

Message par Ar-S »

Salut et merci, c'est une interface très claire, bravo.
- Coté bug, "cacher la fenêtre dans la barre" ne marche pas sous Windows 8
- Coté pratique : Mettre un colorrequester sur la couleur de fond de fenêtre, permettre une boucle avec select/case au choix (en plus du if/endif)
Sinon c'est chouette merci.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
MLD
Messages : 1105
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Un constructeur de Fenêtres "WinConstructeur"

Message par MLD »

Salut Ar-S

Merci.
Je n'est pas Widow8,donc pas d'éssai.( Bizarre de Bisard de Bilou :twisted:)
Je note pour la boucle. Mais précise un peu, quel avantage?
Pour le colorrequester c'est a voir, pour faire un truc sympa.
Bonne soirée.
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Re: Un constructeur de Fenêtres "WinConstructeur"

Message par Ulix »

C'est pas multiplate-forme, tourne pas sous linux !

Je peux pas l'essayé ! Dommage :x

A+
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Un constructeur de Fenêtres "WinConstructeur"

Message par Ar-S »

MLD a écrit :Salut Ar-S
Je note pour la boucle. Mais précise un peu, quel avantage?
Pour le colorrequester c'est a voir, pour faire un truc sympa.
Bonne soirée.
C'est une question d'habitude surtout.

Code : Tout sélectionner

;{- Event loop
Repeat
  Select WaitWindowEvent()
    ; ///////////////////
    Case #PB_Event_Gadget
    ; ////////////////////////
    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case #Window_0
          CloseWindow(#Window_0)
          Break
      EndSelect
  EndSelect
ForEver
donc ce serait bien que l'utilisateur puisse choisir s'il veut une boucle pour ses Events à base de if ou à base de Select (comme le permet pureform)
Voilou
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: Un constructeur de Fenêtres "WinConstructeur"

Message par Anonyme2 »

J'ai un accès mémoire invalide ligne 127 en 64 bits

Comme d'hab, j'ai mis au début un define .i et j'ai viré les .l qui font planter sauf dans la structure ou j'ai remplacé par .i
Et là c'est tout bon
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Re: Un constructeur de Fenêtres "WinConstructeur"

Message par Ulix »

Salut a tous !

Cela ne fais penser que l'on pourrait avoir un avertissement, une alerte du compilateur sur ce genre de chose !

Ont devraient pouvoir avoir le choix (par coche) des différents avertissements renvoyer par le compilo. :lol:

Ulix
Avatar de l’utilisateur
MLD
Messages : 1105
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Un constructeur de Fenêtres "WinConstructeur"

Message par MLD »

Bonjour a tous

Merci pour vos réponses.

Ar-S
Ok ce sera inclus dans la prochaine version

Denis
Ok dans la prochaine version tous sera en .i au lieu de .l

Ulix
Désolé, mais j'utilise beaucoup les API Window, pour linux je ne sait pas faire.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Un constructeur de Fenêtres "WinConstructeur"

Message par Kwai chang caine »

Bon boulot MLD, marche nickel pour moi :wink:
Juste une suggestion, lorsque tu resizes à la main la fenetre, ça serait cool que les coordonnées se mettent à jour dans ta fenetre programme automatiquement.
Autrement merci pour le partage et bonne continuité 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
MLD
Messages : 1105
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Un constructeur de Fenêtres "WinConstructeur"

Message par MLD »

Bonsoir KCC

Content de te lire.

Je comprend ta question, mais ce n'es pas ma philosophie pour ce logiciel.
J'ai pensé (peut-être a tort), que le but était de définir une fenêtre de certaines dimensions, et ensuite de décider si elle serait resizible ou pas.

Merci d'avoir eu ton avis.

Bon W.E
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Un constructeur de Fenêtres "WinConstructeur"

Message par Kwai chang caine »

No problème mon bon MLD :wink:
C'était juste une idée pour faire avancer le schmilblic :mrgreen:
En tout cas bon boulot. ..
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Un constructeur de Fenêtres "WinConstructeur"

Message par graph100 »

pas mal !

Ce que tu peux faire pour rendre le code compatible Linux, c'est de t'arranger pour que tout les appels aux api puissent être optionel, et les mettre dans un compilerIf pour window.

Autre chose, lorsqu'on coche Sizegadget, la taille de la fenêtre devrais être mise à jour dans les stringgadgets lorsqu'on la modifie avec directement sur la fenêtre.

Joli code !!
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
MLD
Messages : 1105
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Un constructeur de Fenêtres "WinConstructeur"

Message par MLD »

@graphy100

Merci

Même réponse que celle pour KCC , Ce n'était pas la philosophie de ce programme.

a+ :wink:
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Un constructeur de Fenêtres "WinConstructeur"

Message par graph100 »

:lol:
En fait je n'avais pas lu le message de KCC, ou bien son contenu n'est pas parvenu à mon cerveau -_-
Faut dire que j'avais fait pas mal de route avant ! Bah, désolé pour la redite (mais ça serai quand même bcp plus pratique :twisted: )

Bonne chance pour la suite. (bon si j'ai bien saisi la volonté du programmeur, demander l'ajout d'un option pour intégrer ou non le code pour ajouter un OpenWindowedScreen() devrait rentrer dans l'esprit du code ?)
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Répondre