c'est pas trop difficile mais il faut passer par les API windows.
en plus il y a plusieurs facons de faire ( ShowWindow_() ou SetWindowPlacement_() ).
Code : Tout sélectionner
;-
;-
;-
Enumeration ; fenêtres
#WNDMAIN
EndEnumeration
Enumeration ; gadgets
#GADLIST
#GADREFRESH
#GADMINIMIZE
#GADMAXIMIZE
#GADFLASH
EndEnumeration
Enumeration ; colonnes
#COLTITLE
#COLCLASS
#COLSTYLE
#COLEXSTYLE
EndEnumeration
Macro GetClassName(hWindow)
PeekS(@StrGetClassName.s{256}, GetClassName_(hWindow, @StrGetClassName.s{256}, 256))
EndMacro
Macro GetWindowText(hWindow)
PeekS(@StrGetWindowText.s{256}, GetWindowText_(hWindow, @StrGetWindowText.s{256}, 256))
EndMacro
Procedure.l EnumWindowsCallBack(hWindow.l, lParam.l)
Protected item.l, WndIcon.l, WndStyle.l, WndStyles.s, WndExStyle.l, WndExStyles.s
If IsWindow_(hWindow) And Not GetWindowLong_(hWindow, #GWL_HWNDPARENT)
WndStyle = GetWindowLong_(hWindow, #GWL_STYLE)
WndExStyle = GetWindowLong_(hWindow, #GWL_EXSTYLE)
If ( WndStyle & #WS_VISIBLE ) And ( WndStyle & #WS_CAPTION ) And ( Not WndExStyle & #WS_EX_TOOLWINDOW )
If ( WndStyle & #WS_MINIMIZE ) : WndStyles + "Minimize, " : EndIf
If ( WndStyle & #WS_MAXIMIZE ) : WndStyles + "Maximize, " : EndIf
If ( WndExStyle & #WS_EX_TOPMOST ) : WndExStyles + "TopMost, " : EndIf
If ( WndExStyle & #WS_EX_APPWINDOW ) : WndExStyles + "AppWindow, " : EndIf
If Not WndIcon : WndIcon = SendMessage_(hWindow, #WM_GETICON, 0, 0) : EndIf
If Not WndIcon : WndIcon = GetClassLong_(hWindow, #GCL_HICONSM) : EndIf
If Not WndIcon : WndIcon = GetClassLong_(hWindow, #GCL_HICON) : EndIf
If Not WndIcon : WndIcon = LoadIcon_(0, #IDI_APPLICATION) : EndIf
item = CountGadgetItems(lParam)
If AddGadgetItem(lParam, item, #Null$, WndIcon)
SetGadgetItemText(lParam, item, GetWindowText(hWindow), #COLTITLE)
SetGadgetItemText(lParam, item, GetClassName(hWindow), #COLCLASS)
SetGadgetItemText(lParam, item, WndStyles, #COLSTYLE)
SetGadgetItemText(lParam, item, WndExStyles, #COLEXSTYLE)
SetGadgetItemColor(lParam, item, #PB_Gadget_BackColor, $F0F0F0, #COLCLASS)
SetGadgetItemColor(lParam, item, #PB_Gadget_BackColor, $F0F0F0, #COLEXSTYLE)
SetGadgetItemData(lParam, item, hWindow)
EndIf
EndIf
EndIf
ProcedureReturn #True
EndProcedure
;-
;-
;-
width = 510
height = 250
If OpenWindow(#WNDMAIN, 0, 0, width, height, "Mes fenêtres", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
StickyWindow(#WNDMAIN, #True)
If CreateGadgetList(WindowID(#WNDMAIN))
ListIconGadget(#GADLIST, 5, 5, width-10, height-45, "Titre", 200, #PB_ListIcon_FullRowSelect)
AddGadgetColumn(#GADLIST, #COLCLASS, "Classe", 90)
AddGadgetColumn(#GADLIST, #COLSTYLE, "Style", 90)
AddGadgetColumn(#GADLIST, #COLEXSTYLE, "ExStyle", 90)
ButtonGadget(#GADREFRESH, 5, height-30, 100, 25, "Actualiser")
ButtonGadget(#GADMINIMIZE, 110, height-30, 100, 25, "Minimiser")
ButtonGadget(#GADMAXIMIZE, 215, height-30, 100, 25, "Maximiser")
ButtonGadget(#GADFLASH, 320, height-30, 100, 25, "Flasher")
DisableGadget(#GADMINIMIZE, #True)
DisableGadget(#GADMAXIMIZE, #True)
DisableGadget(#GADFLASH, #True)
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
Select EventGadget()
Case #GADLIST
If EventType() = #PB_EventType_Change
If GetGadgetState(#GADLIST) = -1
DisableGadget(#GADMINIMIZE, #True)
DisableGadget(#GADMAXIMIZE, #True)
DisableGadget(#GADFLASH, #True)
Else
DisableGadget(#GADMINIMIZE, #False)
DisableGadget(#GADMAXIMIZE, #False)
DisableGadget(#GADFLASH, #False)
EndIf
EndIf
Case #GADREFRESH
ClearGadgetItemList(#GADLIST)
EnumWindows_(@EnumWindowsCallBack(), #GADLIST)
Case #GADMINIMIZE
ShowWindow_(GetGadgetItemData(#GADLIST, GetGadgetState(#GADLIST)), #SW_SHOWMINIMIZED)
Case #GADMAXIMIZE
ShowWindow_(GetGadgetItemData(#GADLIST, GetGadgetState(#GADLIST)), #SW_SHOWMAXIMIZED)
Case #GADFLASH
FlashWindow_(GetGadgetItemData(#GADLIST, GetGadgetState(#GADLIST)), #False)
EndSelect
EndSelect
ForEver
EndIf
End
;-
;-
;-