Je vous mets le code initial pour le fun (c'est pas vraiment votre question). Il permet de créer une "grappe" de guis qui suit la Gui mère et se positionnent autour d'elle. Peut être utile pour un de vos futures projet ?...
Code : Tout sélectionner
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
Opt("GUIOnEventMode", 1) ;mode événementiel
Global $Form2, $Form3, $Form4, $Button1_1, $sPos
Global $Form1 = GUICreate("Form1 Maitre", 200, 200, -1, -1)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
Global $Button1 = GUICtrlCreateButton("Ouvre", 16, 16, 81, 33)
GUICtrlSetOnEvent(-1, "Button1Click")
Global $Button2 = GUICtrlCreateButton("Button2", 16, 60, 81, 33)
GUICtrlSetOnEvent(-1, "Button2Click")
Global $Button3 = GUICtrlCreateButton("Button3", 16, 104, 81, 33)
GUICtrlSetOnEvent(-1, "Button3Click")
GUISetState(@SW_SHOW)
Global $sPos = WinGetPos($Form1, "")
Global $x = $sPos[0], $y = $sPos[1] ;emplacement initial de $Form1
GUIRegisterMsg ( $WM_MOVE, "_WM_MOVE" ) ;surveille position fenêtre
While 1
Sleep(100)
WEnd
Func Button1Click()
$read = GUICtrlRead($Button1)
If $read = "Ouvre" Then
Gui_1()
GUICtrlSetData($Button1, "Ferme")
Else
GUICtrlSetData($Button1, "Ouvre")
Form2Close()
EndIf
EndFunc
Func Button2Click()
Gui_2()
EndFunc
Func Button3Click()
Gui_3()
EndFunc
Func Form1Close()
Exit
EndFunc
Func Gui_1()
If IsHWnd($Form2) Then Return SetError(1) ;si fenêtre existe, pas de création
$Form2 = GUICreate("Form2", 200, 200, $sPos[0] + $sPos[2] + 20, $sPos[1], $WS_POPUP, $WS_EX_OVERLAPPEDWINDOW, $Form1 )
GUISetBkColor(0xFFDD00)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form2Close")
$Button1_1 = GUICtrlCreateButton("Button1", 16, 16, 81, 33)
GUICtrlSetOnEvent(-1, "Button1_1Click")
GUICtrlCreateLabel("Form2", 16,55,81,33,BitOR(0x1000,0x01,0x0200))
GUICtrlSetFont(-1,16,600)
GUISetState(@SW_SHOW)
For $i = 0 To 255 Step 5
WinSetTrans($Form2, "", $i)
Sleep(10)
Next
EndFunc
Func Button1_1Click()
MsgBox(32,"","clic", 2, $Form1)
WinMove($Form1,"",$x, $y)
EndFunc
Func Form2Close()
For $i = 255 To 0 Step -5
WinSetTrans($Form2, "", $i)
Sleep(10)
Next
GUIDelete($Form2)
EndFunc
Func Gui_2()
If IsHWnd($Form3) Then Return SetError(1) ;si fenêtre existe, pas de création
$Form3 = GUICreate("Form3", 200, 200, $sPos[0] - $sPos[2] - 20, $sPos[1], -1, -1, $Form1 )
GUISetOnEvent($GUI_EVENT_CLOSE, "Form3Close")
GUISetState(@SW_SHOW)
EndFunc
Func Form3Close()
GUIDelete($Form3)
EndFunc
Func Gui_3()
If IsHWnd($Form4) Then Return SetError(1) ;si fenêtre existe, pas de création
$Form4 = GUICreate("Form4", 200, 200, $sPos[0] , $sPos[1] + $sPos[3] + 20, -1, -1, $Form1 )
GUISetOnEvent($GUI_EVENT_CLOSE, "Form4Close")
GUISetState(@SW_SHOW)
EndFunc
Func Form4Close()
GUIDelete($Form4)
EndFunc
Func _WM_MOVE ( $hWnd, $Msg, $wParam, $lParam ) ;réajuste positions fenêtres enfants
$sPos = WinGetPos($Form1, "")
If IsHWnd($Form2) Then WinMove($Form2,"",$sPos[0] + $sPos[2] + 20, $sPos[1])
If IsHWnd($Form3) Then WinMove($Form3,"",$sPos[0] - $sPos[2] - 20, $sPos[1])
If IsHWnd($Form4) Then WinMove($Form4,"",$sPos[0] , $sPos[1] + $sPos[3] + 20)
Return $GUI_RUNDEFMSG
EndFunc ;==> _WM_COMMAND ( )