#include Global $_GUISetResizeLimit_GUIhWnd[1],$_GUISetResizeLimit_GUIMINWID[1], $_GUISetResizeLimit_GUIMINHT[1], $_GUISetResizeLimit_GUIMAXWID[1], $_GUISetResizeLimit_GUIMAXHT[1] ; #INDEX# ======================================================================================================================= ; Title .........: FontList ; AutoIt Version : 3.2.10++ ; Description ...: Définit les dimentions minimum et maximum d'une GUI ; Author(s) .....: Kriss Cornello (Source Original: http://www.autoitscript.com/forum/topic/124195-gui-minimum-size/page__p__862469#entry862469 ) ; =============================================================================================================================== ; #CURRENT# ===================================================================================================================== ;_GUISetResizeLimit ; =============================================================================================================================== ; #INTERNAL_USE_ONLY# =========================================================================================================== ;__GUIResizeLimit ; =============================================================================================================================== ; #FUNCTION# ==================================================================================================================== ; Name...........: _GUISetResizeLimit ; Description ...: Définit les dimentions minimum et maximum d'une GUI ; Parameters ....: $GUIhWnd - hWnd de la Fenetre ; $XMin - Largeur minimale ; $YMin - Hauteur minimale ; $XMax - Largeur maximale ; $YMax - Hauteur maximale ; Return values .: Success - 1 ; Failure - Set @error to: ; 1 : valeurs négatives ; 2 : Min > Max ; 3 : $GUIhWnd is not HWnd ; 3 : $GUIhWnd n'est pas répértorié: la fonction n'a pas été utilisé sur cette fenetre pour etre désactivé ; Author ........: Kriss Cornello ; Related .......: __GUIResizeLimit ; Example .......: Oui ; =============================================================================================================================== Func _GUISetResizeLimit($GUIhWnd,$XMin=Default,$YMin=Default,$XMax=Default,$YMax=Default) If Not IsHWnd($GUIhWnd) Then Return SetError(3) If @NumParams=1 Then $index = _ArraySearch($_GUISetResizeLimit_GUIhWnd,$GUIhWnd) If $index<=0 Then Return SetError(4) _ArrayDelete($_GUISetResizeLimit_GUIhWnd,$index) _ArrayDelete($_GUISetResizeLimit_GUIMINWID,$index) _ArrayDelete($_GUISetResizeLimit_GUIMINHT,$index) _ArrayDelete($_GUISetResizeLimit_GUIMAXWID,$index) _ArrayDelete($_GUISetResizeLimit_GUIMAXHT,$index) Return 1 EndIf If $XMin<0 Or $YMin<0 Or $XMax<0 Or $YMax<0 Then Return SetError(1) If $XMin>$XMax Or $YMin>$YMax Then Return SetError(2) $index = _ArraySearch($_GUISetResizeLimit_GUIhWnd,$GUIhWnd) If $index=-1 Then _ArrayAdd($_GUISetResizeLimit_GUIhWnd,$GUIhWnd) _ArrayAdd($_GUISetResizeLimit_GUIMINWID,$XMin) _ArrayAdd($_GUISetResizeLimit_GUIMINHT,$YMin) _ArrayAdd($_GUISetResizeLimit_GUIMAXWID,$XMax) _ArrayAdd($_GUISetResizeLimit_GUIMAXHT,$YMax) Else $_GUISetResizeLimit_GUIhWnd[$index] = $GUIhWnd $_GUISetResizeLimit_GUIMINWID[$index] = $XMin $_GUISetResizeLimit_GUIMINHT[$index] = $YMin $_GUISetResizeLimit_GUIMAXWID[$index] = $XMax $_GUISetResizeLimit_GUIMAXHT[$index] = $YMax EndIf GUIRegisterMsg(0x0024, "__GUIResizeLimit") Return 1 EndFunc #cs ### Exemple ### #include Ex_1() Ex_2() Ex_3() Func Ex_1(); Set only minimum Limit $FenetreEx1 = GUICreate("Ex_1", 500, 500, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX)) GUISetState() _GUISetResizeLimit($FenetreEx1,200,200) Do Sleep(10) Until GUIGetMsg()=-3 GUIDelete($FenetreEx1) EndFunc Func Ex_2(); Set Maximum Limit $FenetreEx2 = GUICreate("Ex_2: (1/2) Try to maximise the box", 380, 380, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX)) GUISetState() _GUISetResizeLimit($FenetreEx2,1,1,400,600) Do Sleep(10) Until GUIGetMsg()=-3 _GUISetResizeLimit($FenetreEx2) WinSetTitle($FenetreEx2, "", "Ex_2: (2/2) Try again") Do Sleep(10) Until GUIGetMsg()=-3 GUIDelete($FenetreEx2) EndFunc Func Ex_3() $FenetreEx3_1 = GUICreate("Ex_3: Fenetre n°1", 350, 350, 0, 100, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX)) _GUISetResizeLimit($FenetreEx3_1,100,150,400,600) GUISetState() $FenetreEx3_2 = GUICreate("Ex_3: Fenetre n°2", 350, 350, 400, 100, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX)) _GUISetResizeLimit($FenetreEx3_2,150,100,600,400) GUISetState(@SW_SHOW,$FenetreEx3_2) Do Sleep(10) Until GUIGetMsg()=-3 GUIDelete($FenetreEx3_1) GUIDelete($FenetreEx3_2) EndFunc #ce Func __GUIResizeLimit($hwnd, $Msg, $wParam, $lParam); INTERNAL For $i=1 To UBound($_GUISetResizeLimit_GUIhWnd)-1 Step 1 If Not ($hwnd=$_GUISetResizeLimit_GUIhWnd[$i]) then ContinueLoop $tagMaxinfo = DllStructCreate("int;int;int;int;int;int;int;int;int;int", $lParam) if Not ($_GUISetResizeLimit_GUIMINWID[$i]=Default) Then DllStructSetData($tagMaxinfo, 7, $_GUISetResizeLimit_GUIMINWID[$i]) ; min X if Not ($_GUISetResizeLimit_GUIMINHT[$i]=Default) Then DllStructSetData($tagMaxinfo, 8, $_GUISetResizeLimit_GUIMINHT[$i]) ; min Y if Not ($_GUISetResizeLimit_GUIMAXWID[$i]=Default) Then DllStructSetData($tagMaxinfo, 9, $_GUISetResizeLimit_GUIMAXWID[$i]); max X if Not ($_GUISetResizeLimit_GUIMAXHT[$i]=Default) Then DllStructSetData($tagMaxinfo, 10, $_GUISetResizeLimit_GUIMAXHT[$i]) ; max Y Next Return 0 EndFunc