Il me semble que cette version répond a 80% des utilisateurs. Bien entendu ceci reste assez
minimaliste, mais évite de frapper souvent les mêmes codes, avec seulement les dimensions des
fenêtres qui changent.
Cette version n'est certainement pas la dernière, car pendant que j'écrivais le code des idées me sont venues a l'esprit.
Rendre les fenêtres indépendantes de la résolution d'écran.(Une fenêtre qui fait
200mm X 150mm fera toujours 200x150mm quelque soit la résolution).Ceci suppose que
les gadgets suivent le même principe.
Un système innovant de déplacement des gadgets sur le prototype de fenêtre en cours
de développement, ect.
Donc la prochaine version devra intégrer les gadgets. (Ceci est une autre paire de manches, qui
demande beaucoup de réflexions.
Par ailleurs du boulot m'arrive, qui demande pas mal de temps. Donc la version3,Ce n'est pas pour demain.
Je suis nul en programmation LINUX ou MAC, mais si certains ont envis de se mettre a la tâche pour compléter cet outil, qu'ils me contact en MP.
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.
Merci de me faire part de bugs éventuels.
Code rectifié
Code : Tout sélectionner
;*****************************************
; WinConstructeur V2.1 23/05/2013        *
; Programmer par MLD Compilation PB 5.11 *
;*****************************************
Enumeration
 #WinCtr = 1
;>>>>> les Frames
 #Frame3D_idfen = 2
 #Frame3D_titre = 3
 #Frame3D_attrib = 4
 #Frame3D_wincolor = 5
 #Frame3D_tailpos = 6
 #Frame3D_opt = 7
 #Frame3D_loop = 8
 #Frame3D_fonct = 9
 #Frame3D_transp = 10
;>>>>> les CheckBoxs
 #Check_SystMenu = 20   ;attributs
 #Check_MinimizeGad = 21 
 #Check_MaximizeGad = 22 
 #Check_Invisible = 23
 #Check_Tool = 24
 #Check_Maximize  = 25
 #Check_Minimize  = 26
 #Check_Border  = 27
 #Check_ScreenCentered = 28 ;Taille/position
 #Check_Doubletrame = 29
 #Check_SizeGadget = 30
 #Check_Bound = 31
 #Check_Invisiblebar = 32 ;Options
 #Check_Wincolor = 33
 #Check_Statbar = 34
 #Check_StickyWin = 35
 #Check_Transp = 36
 #Check_Loop_1  = 37 ;boucle
 #Check_Loop_2 = 38;boucle
 #Check_Loop_3 = 39;boucle
 #Check_Hombre = 40
 #Check_Cadre = 41
 #Check_Depsour = 42
 #Check_Loop_4 = 43;boucle
 #Check_Loop_5 = 44;boucle
;>>>>> les TextGadgets
 #Text_id = 60
 #Text_posX = 61
 #Text_posY = 62
 #Text_tailarg = 63
 #Text_tailhaut = 64
 #Text_utilbound = 65
 #Text_Bdlargmin = 66
 #Text_bdhautmin = 67
 #Text_Bdlargmax = 68
 #Text_bdhautmax = 69
 #Text_col1 = 70
 #Text_col2 = 71
 #Text_col3 = 72
 #Text_col4 = 73
 #Text_col5 = 74
 #Text_col6 = 75
 #Text_colcod = 76
 #Text_colG = 77
 #Text_Transp = 78
 #Text_statbarnbchamp = 79
 ;#Text_idfenmere = 80
;>>>>> les StringGadgets
 #String_Winid = 100
 #String_Titre = 101
 #String_PosX = 102
 #String_PosY = 103
 #String_Larg = 104
 #String_Haut = 105
 ;#string_idfenmere = 106
 #String_BdL_Mini = 107
 #String_BdH_Mini = 108
 #String_BdL_Maxi = 109
 #String_BdH_Maxi = 110
 #String_Statbar = 111
;>>>>> les boutons
 #Bt_Cop = 125
 #Bt_enrmod = 126
 #Bt_Ouvmod = 127
 #Bt_Raz = 128
 #Bt_Stop = 129 
 #Bt_coloreq = 130
;>>>>> les autres gadgets 
 #ftest = 140
 #trck_R = 141
 #trck_G = 142
 #trck_B = 143
 #Trakb_Winctr = 144 
 #Edit = 140
 #StatusBar = 145
 #ftestStatusBar = 146
 #timer1 = 147
 #fichmod = 148
;>>>>>> 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(dpwb.i)
Declare alerte(indal)
Declare transp()
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
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.i,uMsg.i,wParam.i,lParam.i);+++++ .i au lieu de .l
 Structure ODSBTEXT
   szText.i
   clrFront.i
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.i,GadgetNumber.i,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.i)
  DestroyWindow_(Tooltip.i)
EndProcedure
Procedure Interaction(action.i)
 Select action
  Case 20 ;#Check_SystMenu
   SetGadgetState(41,0):SetGadgetState(42,0)
   DisableGadget(29,0): DisableGadget(41,1):DisableGadget(42,1)
   If GetGadgetState(21)= 1 Or GetGadgetState(22)= 1 
    SetGadgetState(20,0)
   Else
    SetGadgetState(20,1):SetGadgetState(24,0):SetGadgetState(27,0)
   EndIf
  Case 21;#Check_MinimizeGad  
   SetGadgetState(20,0):SetGadgetState(24,0):SetGadgetState(27,0)
   SetGadgetState(41,0):SetGadgetState(42,0)
   DisableGadget(29,0):DisableGadget(41,1):DisableGadget(42,1)
  Case 22 ;#Check_MaximizeGad
   SetGadgetState(20,0):SetGadgetState(24,0):SetGadgetState(27,0)
   SetGadgetState(41,0):SetGadgetState(42,0)
   DisableGadget(29,0):DisableGadget(41,1):DisableGadget(42,1)
  Case 24 ;#Check_Tool
   SetGadgetState(20,1):SetGadgetState(21,0):SetGadgetState(22,0)
   SetGadgetState(27,0):SetGadgetState(33,0):SetGadgetState(29,0)
   SetGadgetState(41,0):SetGadgetState(42,0)
   DisableGadget(29,1):DisableGadget(41,1):DisableGadget(42,1)
   If GetGadgetState(24) = 1
    SetGadgetState(36,0):DisableGadget(36,1)
   Else
    DisableGadget(36,0)
   EndIf 
   affcodecolor()
  Case 25 ; #Check_Maximize 
   If GetGadgetState(25) = 1
    SetGadgetState(26,0)
   EndIf 
  Case 26 ;#Check_Minimize
   If GetGadgetState(26) = 1
    SetGadgetState(25,0)
   EndIf  
  Case 27 ;#Check_Border
   If GetGadgetState(27) = 1
    SetGadgetState(20,0):SetGadgetState(21,0):SetGadgetState(22,0)
    SetGadgetState(24,0):SetGadgetState(30,0):SetGadgetState(31,0)
    SetGadgetState(29,0):SetGadgetState(41,0):SetGadgetState(42,0)
    DisableGadget(29,1):DisableGadget(41,0):DisableGadget(42,0) 
    wBound(1) 
   Else
    SetGadgetState(41,0):SetGadgetState(42,0) 
    DisableGadget(29,0):DisableGadget(41,1):DisableGadget(42,1)
   EndIf 
  Case 28 ;#Check_ScreenCentered
   trScrCent()
  Case 30 ;#Check_SizeGadget
   If GetGadgetState(27) <> 1
    If GetGadgetState(30)= 0
     SetGadgetState(31,0)
     SetGadgetColor(65,#PB_Gadget_FrontColor,$D9C2BD)
     wBound(1)
    Else
     SetGadgetColor(65,#PB_Gadget_FrontColor,$0)
    EndIf 
   Else
    SetGadgetState(30,0)
    alerte(2)   
   EndIf 
  Case 31 ;#Check_Bound
   If GetGadgetState(30)= 1
    wBound(1)
   Else
    SetGadgetState(31,0) 
   EndIf
  Case 32 ;#Check_Invisiblebar
   If GetGadgetState(24) <> 1 
    If GetGadgetState(32) = 1
     contructeurwin()
    EndIf
   Else 
    SetGadgetState(32,0) 
    alerte(3)
   EndIf  
  Case 33 ;#Check_Wincolor
   If GetGadgetState(24)<> 1
     affcodecolor()
   Else
    SetGadgetState(33,0)
    alerte(1)
   EndIf    
  Case 36 ;#Check_Transp
   If GetGadgetState(36) <> 1
    SetGadgetText(78,"255")
    SetGadgetState(#Trakb_Winctr,255)
    contructeurwin()
   EndIf 
  Case 37 ;#Check_Loop_1
   SetGadgetState(37,1):SetGadgetState(38,0):SetGadgetState(39,0)
   SetGadgetState(43,0):SetGadgetState(44,0)
   contructeurwin()
  Case 38 ;#Check_Loop_2
   SetGadgetState(37,0):SetGadgetState(38,1):SetGadgetState(39,0)
   SetGadgetState(43,0):SetGadgetState(44,0)
   contructeurwin()
  Case 39 ;#Check_Loop_3
   SetGadgetState(37,0):SetGadgetState(38,0):SetGadgetState(39,1)
   SetGadgetState(43,0):SetGadgetState(44,0)
   contructeurwin()  
  Case 43 ;#Check_Loop_4
   SetGadgetState(37,0):SetGadgetState(38,0):SetGadgetState(39,0)
   SetGadgetState(43,1):SetGadgetState(44,0)
   contructeurwin()  
  Case 44 ;#Check_Loop_5
   SetGadgetState(37,0):SetGadgetState(38,0):SetGadgetState(39,0)
   SetGadgetState(43,0):SetGadgetState(44,1)
   contructeurwin()  
  Case 141 ;#trck_R
   affcodecolor()
  Case 142 ;#trck_G
   affcodecolor()
  Case 143 ;#trck_B
   affcodecolor()  
  Case 144 ;#Trakb_Winctr
   If GetGadgetState(36) = 1
    SetGadgetText(78,Str(GetGadgetState(144)))
    transp()
   Else
    SetGadgetState(144,255)
   EndIf 
 EndSelect
 ProcedureReturn 0
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 = @ "Le model de fenêtre est enregistré" 
  Case 5
   osbt\szText = @ "Interdit avec la boucle Minimum 1"  
 EndSelect
 SendMessage_(StatusBarID(#StatusBar),#SB_SETTEXT,1 | #SBT_OWNERDRAW,osbt)
EndProcedure
Procedure Raz() ;ok
For b = 20 To 44
 SetGadgetState(b,0)
Next 
SetGadgetState(20,1):SetGadgetState(38,1):SetGadgetState(144,255)
DisableGadget(41,1):DisableGadget(29,0):DisableGadget(42,1)
SetGadgetText(100,"Ma_fen"):SetGadgetText(101,"Ma Fenêtre")
SetGadgetText(102,"500"):SetGadgetText(103,"200")
SetGadgetText(104,"400"):SetGadgetText(105,"400")
SetGadgetText(111,"3"):SetGadgetText(78,"255")
trScrCent()
wBound(1)
affcodecolor()
fendepart()
EndProcedure
Procedure transp();transparence ok
 If GetGadgetState(36) = 1 And sap.b = 1
  contructeurwin()
 EndIf 
EndProcedure
Procedure colorRequest()
Couleur = ColorRequester() 
If Couleur > -1
 SetGadgetState(#trck_B,Blue(Couleur))
 SetGadgetState(#trck_G,Green(Couleur))
 SetGadgetState(#trck_R,Red(Couleur))
 affcodecolor()
EndIf
EndProcedure
 
 Procedure affcodecolor();ok
  While WindowEvent() : Wend 
  If GetGadgetState(33)= 1
   dpcolor.b = 0
   DisableGadget(141,0):DisableGadget(142,0):DisableGadget(143,0):DisableGadget(130,0)
   SetGadgetText(73,"$" + Hex(GetGadgetState(#trck_R)))
   SetGadgetText(74,"$" + Hex(GetGadgetState(#trck_G)))
   SetGadgetText(75,"$" + Hex(GetGadgetState(#trck_B)))
   SetGadgetText(76,GetGadgetText(75)+ Hex(GetGadgetState(#trck_G))+ Hex(GetGadgetState(#trck_R)))
   SetGadgetColor(77,#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
   DisableGadget(141,1):DisableGadget(142,1):DisableGadget(143,1):DisableGadget(130,1)
   SetGadgetColor(77,#PB_Gadget_BackColor,GetWindowColor(#WinCtr))
   SetGadgetState(#trck_R,0):SetGadgetText(73,"$00")
   SetGadgetState(#trck_G,0):SetGadgetText(74,"$00")
   SetGadgetState(#trck_B,0):SetGadgetText(75,"$00")
   SetGadgetText(76,"$000000")
   contructeurwin()
  EndIf
 EndProcedure 
Procedure trScrCent();ok
 If GetGadgetState(28) = #PB_Checkbox_Checked
  SetGadgetColor(102,#PB_Gadget_FrontColor,$D9C2BD)
  SetGadgetColor(103,#PB_Gadget_FrontColor,$D9C2BD)
  SetGadgetColor(102,#PB_Gadget_FrontColor,$EEDFDB)
  SetGadgetColor(103,#PB_Gadget_FrontColor,$EEDFDB)
  SendMessage_(GadgetID(102),#EM_SETREADONLY,1,0) 
  SendMessage_(GadgetID(103),#EM_SETREADONLY,1,0)
 Else
  SetGadgetColor(102,#PB_Gadget_FrontColor,$0)
  SetGadgetColor(103,#PB_Gadget_FrontColor,$0)
  SendMessage_(GadgetID(102),#EM_SETREADONLY,0,0) 
  SendMessage_(GadgetID(103),#EM_SETREADONLY,0,0)
 EndIf
EndProcedure
Procedure wBound(dpwp.i) ;ok
 If GetGadgetState(31)= 1
  For b = 66 To 69
   SetGadgetColor(b,#PB_Gadget_FrontColor,$0)
  Next
  For bb = 107 To 110
   SendMessage_(GadgetID(bb),#EM_SETREADONLY,0,0)
   SetGadgetColor(bb,#PB_Gadget_FrontColor,$0)
  Next  
  Wblmin$ = GetGadgetText(107)
  wblmax$ = GetGadgetText(109)
  Wbhmin$ = GetGadgetText(108)
  Wbhmax$ = GetGadgetText(110)
  If dpwp = 1
   contructeurwin()
  EndIf 
 Else
  For b = 66 To 69
   SetGadgetColor(b,#PB_Gadget_FrontColor,$D9C2BD)
  Next
  For bb = 107 To 110
   SendMessage_(GadgetID(bb),#EM_SETREADONLY,1,0)
   SetGadgetColor(bb,#PB_Gadget_FrontColor,$D9C2BD)
  Next 
 EndIf  
EndProcedure
Procedure fendepart() ;ok
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)
SendMessage_(GadgetID(#Edit),#EM_SCROLL,#SB_BOTTOM,0);en bas
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)+ " ";"|"
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤ id,placement,dimensions,titre 
 id$ = "#" + GetGadgetText(#String_Winid)
 If GetGadgetState(#Check_ScreenCentered) <> 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 Or GetGadgetState(#Check_Doubletrame) = 1 Or GetGadgetState(#Check_Hombre) = 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_Invisiblebar) = 1 ;invible dans la barre de tache
 Cwtot$ = CwP_1$ + ",FindWindow_(0," + Chr(34)+ "program manager" + Chr(34)+")" + 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_Doubletrame) = 1 ;double trame
  WDT$ = "SetWindowLongPtr_(WindowID(" + id$ + "),#GWL_EXSTYLE,$2300)"
  AddGadgetItem(#Edit,ctl(),WDT$);ecriture
 EndIf
 If GetGadgetState(#Check_Hombre) = 1 ;ombre
  WOMB$ = "SetClassLongPtr_(WindowID(" + id$ + "),#GCL_STYLE,$00020000)"
  AddGadgetItem(#Edit,ctl(),WOMB$);ecriture
 EndIf
 If GetGadgetState(#Check_Doubletrame) = 1 Or GetGadgetState(#Check_Hombre) = 1
  WHIDE$ = "HideWindow(" + id$ + ",0)" ;rend la fentre visible pour les options nécéssitant invisible
  AddGadgetItem(#Edit,ctl(),WHIDE$);ecriture
 EndIf 
 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_Border) = 1 And GetGadgetState(#Check_Cadre) = 1 ;cadre
  WCDE$ = "SetWindowLongPtr_(WindowID(" +  id$  + "), #GWL_STYLE, GetWindowLongPtr_(WindowID(" + id$ + "), #GWL_STYLE) | #WS_DLGFRAME)"
  AddGadgetItem(#Edit,ctl(),WCDE$);ecriture 
  WCDE1$ = "SetWindowPos_(WindowID(" + id$ + "), 0,0,0,0,0,#SWP_NOSIZE|#SWP_NOMOVE|#SWP_NOZORDER|#SWP_FRAMECHANGED)"
  AddGadgetItem(#Edit,ctl(),WCDE1$);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
  If GetGadgetState(42) = 1
   SetGadgetState(42,0)
   alerte(5)
  EndIf
  WLP1L$ = "" 
  WLP1L2$ = "Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow"
  WLP1L3$ = "End"
  AddGadgetItem(#Edit,ctl(),WLP1L$);ecriture 
  AddGadgetItem(#Edit,ctl(),WLP1L2$);ecriture 
  AddGadgetItem(#Edit,ctl(),WLP1L3$);ecriture 
 EndIf 
 If GetGadgetState(#Check_Loop_2) = 1
  Dim WLP2L.s (8)
  WLP2L(1) = "Repeat"
  WLP2L(2) = "Event = WaitWindowEvent()"
  If GetGadgetState(#Check_Border) = 1 And GetGadgetState(#Check_Depsour) = 1 ;déplace borderless
   WLP2L(3) = " If Event = #WM_LBUTTONDOWN"
   WLP2L(4) = "  SendMessage_(WindowID(" + id$ + "), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)" 
   WLP2L(5) = " EndIf"
  Else
   WLP2L(3) = ""
   WLP2L(4) = "" 
   WLP2L(5) = ""
  EndIf  
  WLP2L(6) = ""
  WLP2L(7) = "Until Event = #PB_Event_CloseWindow"
  WLP2L(8) = "End"
  For xx = 1 To 8
   AddGadgetItem(#Edit,ctl(),WLP2L(xx));ecriture 
  Next
  FreeArray(WLP2L.s()) 
 EndIf  
 If GetGadgetState(#Check_Loop_3) = 1 
  Dim WLP3L.s (12)
  WLP3L(1) = "Repeat"
  WLP3L(2) = " Event = WaitWindowEvent()"
  WLP3L(3) = "  If Event = #WM_LBUTTONDOWN"
  WLP3L(4) = "   SendMessage_(WindowID(" + id$ + "), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)" 
  WLP3L(5) = "  EndIf"
  WLP3L(6) = "  If Event = #PB_Event_Gadget"
  WLP3L(7) = "   Select EventGadget()"
  WLP3L(8) = "" 
  WLP3L(9) = "   EndSelect"
  WLP3L(10) = " EndIf"
  WLP3L(11) = "Until Event = #PB_Event_CloseWindow"
  WLP3L(12) = "End"
  For yy = 1 To 12
   If GetGadgetState(#Check_Border) = 1 And GetGadgetState(#Check_Depsour) = 1 ;déplace borderless
    AddGadgetItem(#Edit,ctl(),WLP3L(yy));ecriture 
   Else
    Select yy
     Case 1,2,6 To 12
     AddGadgetItem(#Edit,ctl(),WLP3L(yy));ecriture 
    EndSelect
   EndIf
  Next
 FreeArray(WLP3L.s())  
 EndIf
 If GetGadgetState(#Check_Loop_4) = 1
  Dim WLP4L.s (11) 
  WLP4L(1) = "Repeat"
  WLP4L(2) = " Select WaitWindowEvent()"
  WLP4L(3) = "  Case #WM_LBUTTONDOWN"
  WLP4L(4) = "   SendMessage_(WindowID(#Ma_fen), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)" 
  WLP4L(5) = "  Case #PB_Event_Gadget"
  WLP4L(6) = ""  
  WLP4L(7) = "  Case #PB_Event_CloseWindow"
  WLP4L(8) = "   Break"
  WLP4L(9) = " EndSelect"
  WLP4L(10) = "ForEver"
  WLP4L(11) = "End"
 For zz = 1 To 11
   If GetGadgetState(#Check_Border) = 1 And GetGadgetState(#Check_Depsour) = 1 ;déplace borderless
    AddGadgetItem(#Edit,ctl(),WLP3L(yy));ecriture 
   Else
    Select zz
     Case 1,2,5 To 11
     AddGadgetItem(#Edit,ctl(),WLP4L(zz));ecriture 
    EndSelect
   EndIf
  Next
  FreeArray(WLP3L.s()) 
 EndIf   
 If GetGadgetState(#Check_Loop_5) = 1
  Dim WLP5L.s (11) 
  WLP5L(1) = "Repeat"
  WLP5L(2) = "Event = WaitWindowEvent()"
  WLP5L(3) = " If Event = #WM_LBUTTONDOWN" 
  WLP5L(4) = "  SendMessage_(WindowID(" + id$ + "), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)" 
  WLP5L(5) = " Endif"
  WLP5L(6) = " If Event = #PB_Event_Gadget" 
  WLP5L(7) = "   Select EventGadget()"
  WLP5L(8) = "" 
  WLP5L(9) = " EndSelect"
  WLP5L(10) = " EndIf"
  WLP5L(11) = "ForEver"
  For z = 1 To 11
   If GetGadgetState(#Check_Border) = 1 And GetGadgetState(#Check_Depsour) = 1 ;déplace borderless
    AddGadgetItem(#Edit,ctl(),WLP5L(z));ecriture 
   Else
    Select z
     Case 1,2,6 To 11
      AddGadgetItem(#Edit,ctl(),WLP5L(z));ecriture 
    EndSelect
   EndIf   
  Next
 FreeArray(WLP5L.s()) 
 EndIf 
 SendMessage_(GadgetID(#Edit),#EM_SCROLL,#SB_BOTTOM,0);liste en bas
fentest()
EndProcedure
Procedure fentest()
 CloseWindow(#ftest)
 OpenWindow(#ftest,X,Y,Lrg,Htr,Titr$,Btc|Bt1|Bt2|Typ|Ouv|Viv|Rds|Ctf)
 If GetGadgetState(#Check_Doubletrame) = 1 ;double trame
  SetWindowLongPtr_(WindowID(#ftest),#GWL_EXSTYLE,$2300)
 EndIf
 If GetGadgetState(#Check_Hombre) = 1 ;ombre
  SetClassLongPtr_(WindowID(#ftest),#GCL_STYLE,$00020000)
 EndIf
 HideWindow(#ftest,0)
 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_Transp) = 1 ;transparence
  If GetGadgetState(#Check_Doubletrame) = 1:XZZ = $00082300 :Else:XZZ = $00082000:EndIf
  SetWindowLongPtr_(WindowID(#ftest),#GWL_EXSTYLE, XZZ)
  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
 If GetGadgetState(#Check_Border) = 1 And GetGadgetState(#Check_Cadre) = 1 ;cadre
  SetWindowLongPtr_(WindowID(#ftest), #GWL_STYLE, GetWindowLongPtr_(WindowID(#ftest), #GWL_STYLE) | #WS_DLGFRAME)
  SetWindowPos_(WindowID(#ftest), 0,0,0,0,0,#SWP_NOSIZE|#SWP_NOMOVE|#SWP_NOZORDER|#SWP_FRAMECHANGED)
 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$(32)
Wmodel$(1) = GetGadgetText(100) + "¤";id
Wmodel$(2) = GetGadgetText(101) + "¤";titre
If GetGadgetState(20)= 1 : Wmodel$(3) = "1" + "¤" : Else :Wmodel$(3) = "0" + "¤" :EndIf;bt system
If GetGadgetState(21)= 1 : Wmodel$(4) = "1" + "¤" : Else :Wmodel$(4) = "0" + "¤" : EndIf;bt minimise 
If GetGadgetState(22)= 1 : Wmodel$(5) = "1" + "¤" : Else :Wmodel$(5) = "0" + "¤" : EndIf;bt maximise 
If GetGadgetState(24)= 0 And GetGadgetState(27)= 0
 Wmodel$(6) = "0" + "¤" ;fn normale
Else
 If GetGadgetState(24)= 1 : Wmodel$(6) = "1" + "¤" :EndIf;fn tool
 If GetGadgetState(27)= 1 : Wmodel$(6) = "2" + "¤" :EndIf ;fn borderless
EndIf
If GetGadgetState(25)= 0 And GetGadgetState(26)= 0
 Wmodel$(7) = "0" + "¤" ;fn normale
Else
 If GetGadgetState(25)= 1 : Wmodel$(7) = "1" + "¤" :EndIf;maximise
 If GetGadgetState(26)= 1 : Wmodel$(7) = "2" + "¤" :EndIf ;minimise
EndIf
If GetGadgetState(23)= 1 : Wmodel$(8) = "1" + "¤" : Else :Wmodel$(8) = "0" + "¤" :EndIf;fn invisible
If GetGadgetState(28)= 1 : Wmodel$(9) = "1" + "¤" : Else :Wmodel$(9) = "0" + "¤" :EndIf;screencentered
Wmodel$(10) = GetGadgetText(102) + "¤";posx
Wmodel$(11) = GetGadgetText(103) + "¤";posy
Wmodel$(12) = GetGadgetText(104) + "¤";largeur
Wmodel$(13) = GetGadgetText(105) + "¤";hauteur
If GetGadgetState(30)= 1 : Wmodel$(14) = "1" + "¤" : Else :Wmodel$(14) = "0" + "¤" :EndIf;size
If GetGadgetState(31)= 1 : Wmodel$(15) = "1" + "¤" : Else :Wmodel$(15) = "0" + "¤" :EndIf;bound
Wmodel$(16) = GetGadgetText(107) + "¤";largeur/min
Wmodel$(17) = GetGadgetText(108) + "¤";hauteur/min
Wmodel$(18) = GetGadgetText(109) + "¤";largeur/max
Wmodel$(19) = GetGadgetText(110) + "¤";hauteur/max
If GetGadgetState(33)= 1 : Wmodel$(20) = "1" + "¤" : Else :Wmodel$(20) = "0" + "¤" :EndIf;wcolor
Wmodel$(21) = GetGadgetText(75)+ "*"+GetGadgetText(74)+ "*"+GetGadgetText(73)+ "*" + "¤";chiffre color
If GetGadgetState(32)= 1 : Wmodel$(22) = "1" + "¤" : Else :Wmodel$(22) = "0" + "¤" :EndIf;invisibleBT
If GetGadgetState(35)= 1 : Wmodel$(23) = "1" + "¤" : Else :Wmodel$(23) = "0" + "¤" :EndIf;sticky
If GetGadgetState(36)= 1 : Wmodel$(24) = "1" + "¤" : Else :Wmodel$(24) = "0" + "¤" :EndIf;transp
Wmodel$(25) = GetGadgetText(78) + "¤";chiffre transp
If GetGadgetState(34)= 1 : Wmodel$(26) = "1" + "¤" : Else :Wmodel$(26) = "0" + "¤" :EndIf;statusbar
Wmodel$(27) = GetGadgetText(111) + "¤";chiffre statusb
If GetGadgetState(29)= 1 : Wmodel$(28) = "1" + "¤" : Else :Wmodel$(28) = "0" + "¤" :EndIf;Double trame
If GetGadgetState(40)= 1 : Wmodel$(29) = "1" + "¤" : Else :Wmodel$(29) = "0" + "¤" :EndIf;Ombre
If GetGadgetState(41)= 1 : Wmodel$(30) = "1" + "¤" : Else :Wmodel$(30) = "0" + "¤" :EndIf;Cadre
If GetGadgetState(42)= 1 : Wmodel$(31) = "1" + "¤" : Else :Wmodel$(31) = "0" + "¤" :EndIf;Deplacesour
If GetGadgetState(37)= 1 : Wmodel$(32) = "1" + "¤" :EndIf
If GetGadgetState(38)= 1 : Wmodel$(32) = "2" + "¤" :EndIf
If GetGadgetState(39)= 1 : Wmodel$(32) = "3" + "¤" :EndIf
If GetGadgetState(43)= 1 : Wmodel$(32) = "4" + "¤" :EndIf
If GetGadgetState(44)= 1 : Wmodel$(32) = "5" + "¤" :EndIf
For x =1 To 32
 mod$ = mod$ + Wmodel$(x)
Next
fichmod$ = GetGadgetText(100) + ".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(4) 
EndIf
Dim Wmodel$(0)
EndProcedure
Procedure Ouvmod()
choixmod$  = "" ;mis en global
fen2(2)
If choixmod$  = "" : ProcedureReturn 0 :EndIf 
ReadFile(#fichmod,choixmod$)  
winmod$ = ReadString(#fichmod)
CloseFile(#fichmod) 
SetGadgetText(100,StringField(winmod$,1,"¤")) : SetGadgetText(101,StringField(winmod$,2,"¤"))
SetGadgetState(20,Val(StringField(winmod$,3,"¤")))
SetGadgetState(21,Val(StringField(winmod$,4,"¤")))
SetGadgetState(22,Val(StringField(winmod$,5,"¤")))
If Val(StringField(winmod$,6,"¤")) = 0
 SetGadgetState(24,0):SetGadgetState(27,0):DisableGadget(29,0):DisableGadget(41,1):DisableGadget(42,1)
Else 
 If Val(StringField(winmod$,6,"¤")) = 1
  SetGadgetState(24,1):SetGadgetState(27,0):DisableGadget(29,1):DisableGadget(41,1):DisableGadget(42,1)
  SetGadgetState(36,0) : DisableGadget(36,1)
 EndIf
 If Val(StringField(winmod$,6,"¤")) = 2
  SetGadgetState(24,0):SetGadgetState(27,1):DisableGadget(29,1):DisableGadget(41,0):DisableGadget(42,0)
 EndIf 
EndIf 
If Val(StringField(winmod$,7,"¤")) = 0
 SetGadgetState(25,0):SetGadgetState(26,0)
Else 
 If Val(StringField(winmod$,7,"¤")) = 1
  SetGadgetState(25,1):SetGadgetState(26,0)
 EndIf
 If Val(StringField(winmod$,7,"¤")) = 2
  SetGadgetState(25,0):SetGadgetState(26,1)
 EndIf 
EndIf 
SetGadgetState(23,Val(StringField(winmod$,8,"¤")))
If Val(StringField(winmod$,9,"¤")) = 0 
 SetGadgetState(28,0)
Else 
 SetGadgetState(28,1)
EndIf 
SetGadgetText(102,StringField(winmod$,10,"¤")) : SetGadgetText(103,StringField(winmod$,11,"¤"))
SetGadgetText(104,StringField(winmod$,12,"¤")) : SetGadgetText(105,StringField(winmod$,13,"¤"))
SetGadgetState(30,Val(StringField(winmod$,14,"¤")))
SetGadgetState(31,Val(StringField(winmod$,15,"¤")))
SetGadgetText(107,StringField(winmod$,16,"¤")) : SetGadgetText(108,StringField(winmod$,17,"¤"))
SetGadgetText(109,StringField(winmod$,18,"¤")) : SetGadgetText(110,StringField(winmod$,19,"¤"))
If Val(StringField(winmod$,14,"¤")) = 1 
 SetGadgetColor(65,#PB_Gadget_FrontColor,$0)
EndIf 
wBound(0)
SetGadgetState(33,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(32,Val(StringField(winmod$,22,"¤")))
SetGadgetState(35,Val(StringField(winmod$,23,"¤")))
SetGadgetState(36,Val(StringField(winmod$,24,"¤")))
SetGadgetText(78,StringField(winmod$,25,"¤"))
If Val(StringField(winmod$,25,"¤")) <> 0
 SetGadgetState(144,Val(StringField(winmod$,25,"¤")))
EndIf
SetGadgetState(34,Val(StringField(winmod$,26,"¤")))
SetGadgetText(111,StringField(winmod$,27,"¤")) 
SetGadgetState(29,Val(StringField(winmod$,28,"¤")))
SetGadgetState(40,Val(StringField(winmod$,29,"¤")))
SetGadgetState(41,Val(StringField(winmod$,30,"¤")))
SetGadgetState(42,Val(StringField(winmod$,31,"¤")))
lp.b = Val(StringField(winmod$,32,"¤")) 
Select lp.b
 Case 1
  SetGadgetState(37,1):SetGadgetState(38,0):SetGadgetState(39,0):SetGadgetState(43,0):SetGadgetState(44,0)
 Case 2 
  SetGadgetState(37,0):SetGadgetState(38,1):SetGadgetState(39,0):SetGadgetState(43,0):SetGadgetState(44,0)
 Case 3 
  SetGadgetState(37,0):SetGadgetState(38,0):SetGadgetState(39,1):SetGadgetState(43,0):SetGadgetState(44,0)
 Case 4 
  SetGadgetState(37,0):SetGadgetState(38,0):SetGadgetState(39,0):SetGadgetState(43,1):SetGadgetState(44,0)
 Case 5 
  SetGadgetState(37,0):SetGadgetState(38,0):SetGadgetState(39,0):SetGadgetState(43,0):SetGadgetState(44,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/V2.1")
StatusBarText(#StatusBar,2,"     "+ Chr(174) + " MLD")
;====== gadgets Frame3D ========
Frame3DGadget(#Frame3D_idfen,5,5,225,45,"Id Fenêtre")
Frame3DGadget(#Frame3D_Titre,5,55,225,50,"Titre de la fenêtre")
Frame3DGadget(#Frame3D_Attrib,235,5,230,100,"Attributs de la fenêtre")
Frame3DGadget(#Frame3D_wincolor,5,110,225,105,"Windowcolor")
Frame3DGadget(#Frame3D_tailpos,235,110,230,175,"Position - Taille de la fenêtre")
Frame3DGadget(#Frame3D_opt,5,290,225,160,"Options")
Frame3DGadget(#Frame3D_loop,235,290,230,160,"Inclure la Boucle générale")
Frame3DGadget(#Frame3D_fonct,5,455,460,45,"Fonctions")
Frame3DGadget(#Frame3D_transp,5,220,225,65,"Transparence")
;====== gadgets CheckBox ========
CheckBoxGadget(#Check_SystMenu,245,20,100,20,"Bouton System")
SetGadgetState(#Check_SystMenu,#PB_Checkbox_Checked)
CheckBoxGadget(#Check_MinimizeGad,245,40,100,20,"Bouton Minimize")
CheckBoxGadget(#Check_MaximizeGad,245,60,100,20,"Bouton Maximize")
CheckBoxGadget(#Check_Tool,245,80,80,20, "Tool")
CheckBoxGadget(#Check_Border,380,20,80,20,"BorderLess")
CheckBoxGadget(#Check_Maximize,380,40,80,20,"Maximize")
CheckBoxGadget(#Check_Minimize,380,60,80,20,"Minimize")
CheckBoxGadget(#Check_Invisible,380,80,80,20,"Invisible")
CheckBoxGadget(#Check_ScreenCentered,245,125,100,20,"ScreenCentered")
CheckBoxGadget(#Check_SizeGadget,245,190,80,20,"SizeGadget")
CheckBoxGadget(#Check_Bound,365,190,90,20,"WindowBound")
CheckBoxGadget(#Check_Invisiblebar,15,425,180,20,"Invisible dans la barre de Tâche") 
CheckBoxGadget(#Check_StickyWin,15,365,100,20,"StickyWindow")
CheckBoxGadget(#Check_Wincolor,15,125,60,20,"Color")
CheckBoxGadget(#Check_Statbar,15,345,60,20,"Statubar") 
CheckBoxGadget(#Check_Transp,15,235,85,20,"Transparence")
CheckBoxGadget(#Check_Doubletrame,15,305,85,20,"Double trame")
CheckBoxGadget(#Check_Hombre,15,325,130,20,"Fenêtre avec ombre")
CheckBoxGadget(#Check_Cadre,15,385,180,20,"Fenêtre sans titre avec cadre")
DisableGadget(41,1)
CheckBoxGadget(#Check_Depsour,15,405,180,20,"Déplace une fenêtre BorderLess")
DisableGadget(42,1)
CheckBoxGadget(#Check_Loop_1,245,310,180,20,"Minimale 1  (Utile pour des tests)")
CheckBoxGadget(#Check_Loop_2,245,338,180,20,"Minimale 2 (Boucle a votre choix)")
SetGadgetState(#Check_Loop_2,#PB_Checkbox_Checked)
CheckBoxGadget(#Check_Loop_3,245,366,180,20,"Standard 1  (If, EndIf)") 
CheckBoxGadget(#Check_Loop_4,245,394,200,20,"Standard 2  (Select,Case,Endselect)") 
CheckBoxGadget(#Check_Loop_5,245,422,180,20,"Sans fin  (Utile pour Borderless)")
ToolTipMic(#WinCtr,#Check_Loop_5,"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,148,60,20, "Position  X:")
TextGadget(#Text_posY,380,148,15,20, "Y:")
TextGadget(#Text_tailarg,245,170,60,20, "Taille  Larg:")
TextGadget(#Text_tailhaut,365,170,60,20, "Haut:") 
TextGadget(#Text_utilbound,265,215,160,20,"Si WindowBound: Taille mini/maxi")
SetGadgetColor(#Text_utilbound,#PB_Gadget_FrontColor,$D9C2BD)
TextGadget(#Text_Bdlargmin,245,236,50,20,"Larg/min") 
TextGadget(#Text_Bdhautmin,365,236,50,20,"Haut/min") 
TextGadget(#Text_Bdlargmax,245,260,50,20,"Larg/max")
TextGadget(#Text_bdhautmax,365,260,50,20,"Haut/max")
For x = 65 To 69
 SetGadgetColor(x,#PB_Gadget_FrontColor,$D9C2BD)
Next  
TextGadget(#Text_col1,15,150,10,20,"R"):SetGadgetColor(#Text_col1,#PB_Gadget_FrontColor,$0000C8)
TextGadget(#Text_col2,15,170,10,20,"G"):SetGadgetColor(#Text_col2,#PB_Gadget_FrontColor,$008000)
TextGadget(#Text_col3,15,190,10,20,"B"):SetGadgetColor(#Text_col3,#PB_Gadget_FrontColor,$C80000)
TextGadget(#Text_col4,27,150,20,20,"$00")
TextGadget(#Text_col5,27,170,20,20,"$00") 
TextGadget(#Text_col6,27,190,20,20,"$00")
TextGadget(#Text_colcod,175,127,50,20,"$000000",#ES_CENTER)
TextGadget(#Text_colG,175,150,50,55,"",#PB_Text_Border) 
TextGadget(#Text_statbarnbchamp,85,348,60,20,"Nb champ:")
TextGadget(#Text_Transp,177,233,30,20,"255",#ES_CENTER|#PB_Text_Border) 
;====== Gadget String
StringGadget(#String_Winid,40,23,180,20,"Ma_fen")
StringGadget(#String_Titre,10,73,210,20,"Ma Fenêtre") 
StringGadget(#String_PosX,310,145,40,18,"500",#ES_CENTER)
StringGadget(#String_PosY,400,145,40,18,"200",#ES_CENTER) 
StringGadget(#String_Larg,310,168,40,18,"400",#ES_CENTER) 
StringGadget(#String_Haut,400,168,40,18,"400",#ES_CENTER)
StringGadget(#String_BdL_Mini,300,235,40,18,"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,235,40,18,"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,258,40,18,"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,258,40,18,"800",#ES_CENTER)
SendMessage_(GadgetID(#String_BdH_Maxi),#EM_SETREADONLY,1,0)
SetGadgetColor(#String_BdH_Maxi,#PB_Gadget_FrontColor,$D9C2BD)  
StringGadget(#String_Statbar,150,344,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.")
ButtonGadget(130,90,125,55,17,"ColorReq");btcolreq
DisableGadget(130,1)
;====== Gadget autres
TrackBarGadget(#trck_R,50,148,125,20,0,255)
TrackBarGadget(#trck_G,50,168,125,20,0,255)
TrackBarGadget(#trck_B,50,188,125,20,0,255)
TrackBarGadget(#Trakb_Winctr,7,258,220,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
     If GetActiveWindow()= #WinCtr
      Quit = #True
     EndIf 
    Case #PB_Event_Gadget 
      Interaction(EventGadget())
    Select EventGadget()
      Case #Bt_coloreq
       colorRequest()
      Case #Bt_Cop 
       contructeurwin()
       ClearClipboard()
       SetClipboardText(GetGadgetText(#Edit))
      Case #Bt_enrmod
        EnrWmodel() 
      Case #Bt_Ouvmod  
         Ouvmod()
      Case #Bt_Raz
       Raz()  
      Case #Bt_Stop
       CloseWindow(#WinCtr)
       CloseWindow(#ftest)
       Quit = #True
      Case 20 To 35,40 To 42 
       While WindowEvent() : Wend 
        contructeurwin()
      Case 100 To 106
       Select EventType() 
        Case #PB_EventType_Change
         contructeurwin()   
       EndSelect  
      Case 107 To 110
       Select EventType() 
        Case #PB_EventType_Change
         wBound(1)  
       EndSelect
      EndSelect
    EndSelect
Until Quit
UnhookWindowsHookEx_(HookMouse)
FreeBalloonTooltip(Tooltip.l) 
End
