Page 1 sur 1
[R] Limiter la redimension d'une GUI
Posté : dim. 23 nov. 2008 13:46
par minoui
Bon c'est simple J'ai une fenêtre qui peut être redimensionner mais je voudrais que l'on ne puisse pas la faire plus petite qu'une certaine taille
Merci

Re: [..] Limiter la redimension
Posté : dim. 23 nov. 2008 14:17
par Tlem
Il vous faut dans ce cas gérer l'évènement $GUI_EVENT_RESIZED dans votre boucle While et contrôler que la taille de la GUI soit pas plus petite que ...
Re: [..] Limiter la redimension
Posté : dim. 23 nov. 2008 14:31
par minoui
ok merci mais euu comment récupéré la taille du GUI ?
Re: [..] Limiter la redimension
Posté : dim. 23 nov. 2008 14:56
par Tlem
En cherchant dans l'aide vous trouverez ceci : WinGetPos ou ceci WinGetClientSize.
Re: [..] Limiter la redimension
Posté : dim. 23 nov. 2008 16:54
par minoui
Cette méthode ne marche pas très bien. Y a t'il une méthode qui empêche purement et simplement de redimensionner au delà d'un taille minimum ?
Re: [..] Limiter la redimension
Posté : dim. 23 nov. 2008 17:26
par Tlem
Que voulez-vous dire par ne marche pas très bien ?
Re: [..] Limiter la redimension
Posté : dim. 23 nov. 2008 19:16
par Tlem
Le mieux aurait été de donner l'intégralité du code.
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Global $aUtil_MinMax[4]
GUICreate('WM_GETMINMAXINFO',400,400,-1,-1,$WS_SIZEBOX)
GUISetState()
InitMinMax(200,200,400,400) ; C'est ici que l'on règle les valeurs Min et Max de la fenêtre.
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
WEnd
Func InitMinMax($x0,$y0,$x1,$y1)
Local Const $WM_GETMINMAXINFO = 0x24
$aUtil_MinMax[0]=$x0
$aUtil_MinMax[1]=$y0
$aUtil_MinMax[2]=$x1
$aUtil_MinMax[3]=$y1
GUIRegisterMsg($WM_GETMINMAXINFO,'MY_WM_GETMINMAXINFO')
EndFunc
Func MY_WM_GETMINMAXINFO($hWnd, $Msg, $wParam, $lParam)
Local $minmaxinfo = DllStructCreate('int;int;int;int;int;int;int;int;int;int',$lParam)
DllStructSetData($minmaxinfo,7,$aUtil_MinMax[0]); min X
DllStructSetData($minmaxinfo,8,$aUtil_MinMax[1]); min Y
DllStructSetData($minmaxinfo,9,$aUtil_MinMax[2]); max X
DllStructSetData($minmaxinfo,10,$aUtil_MinMax[3]); max Y
Return $GUI_RUNDEFMSG
EndFunc
Re: [..] Limiter la redimension
Posté : dim. 23 nov. 2008 19:23
par minoui
Peut - tu m'expliquer l'utilisation de
$WM_GETMINMAXINFO Stp
TLEM mercii je me fait Ch*** depuis un bout de temps a cause de cet foutu touche F5 (sisi j'avais oublier de rafraichir)

Re: [R] Limiter la redimension d'une GUI
Posté : lun. 24 nov. 2008 02:33
par ani
intégralité du code ? pas suivit
minoui la réponse est devant vous
on décompose le terme
WM = message fenêtre (window message)
get = voir ?
Min = Minimum
Max = Maximum
Info = Information
le minimum et maximum nous retourne les point x, y, hauteur,largeur
on voit les information x,y,hauteur,largeur de la fenetre (défois faut pas trop chercher

)
bonne continuation
Re: [R] Limiter la redimension d'une GUI
Posté : lun. 24 nov. 2008 11:30
par minoui
Je pense que Tlem voulait dire que ton code ne permet que de redimntionner de haut en bas et pas de gauche a droite
Quand a moi je voulais comprendre ces lignes :
► Afficher le textecode1
GUISetState()
InitMinMax(200,200,400,400) ; C'est ici que l'on règle les valeurs Min et Max de la fenêtre.
► Afficher le texteCode 2
Func InitMinMax($x0,$y0,$x1,$y1)
Local Const $WM_GETMINMAXINFO = 0x24
$aUtil_MinMax[0]=$x0
$aUtil_MinMax[1]=$y0
$aUtil_MinMax[2]=$x1
$aUtil_MinMax[3]=$y1
GUIRegisterMsg($WM_GETMINMAXINFO,'MY_WM_GETMINMAXINFO')
EndFunc
► Afficher le texteCode 3
Local $minmaxinfo = DllStructCreate('int;int;int;int;int;int;int;int;int;int',$lParam)
DllStructSetData($minmaxinfo,7,$aUtil_MinMax[0]); min X
DllStructSetData($minmaxinfo,8,$aUtil_MinMax[1]); min Y
DllStructSetData($minmaxinfo,9,$aUtil_MinMax[2]); max X
DllStructSetData($minmaxinfo,10,$aUtil_MinMax[3]); max Y
Return $GUI_RUNDEFMSG
Merci

Re: [R] Limiter la redimension d'une GUI
Posté : lun. 24 nov. 2008 13:05
par Tlem
Lance la fonction
InitMinMax avec les 4 valeurs données en argument, c'est à dire 200, 200, 400 et 400.
Fixe la valeur de
$WM_GETMINMAXINFO avec la valeur
0x24
Lance la fonction
GUIRegisterMsg() pour la valeur
$WM_GETMINMAXINFO et la re-dirige vers la fonction
MY_WM_GETMINMAXINFO().
Renvois la valeur
$GUI_RUNDEFMSG à la commande qui à lancé la fonction (c'est à dire
GUIRegisterMsg()). Cette valeur est une valeur fixe qui est déterminée dans
GUIConstantsEx.au3.
Re: [R] Limiter la redimension d'une GUI
Posté : lun. 24 nov. 2008 19:48
par minoui
Merci de ta réponse mais heuu
Tlem a écrit :Code:
Local Const $WM_GETMINMAXINFO = 0x24
Fixe la valeur de $WM_GETMINMAXINFO avec la valeur 0x24
Je suis pas non plus débile j'avais compris

Je voulais dire :
Quel est la
valeur de $WM_GETMINMAXINFO et quel sont les choses quelle renvoie
Tlem a écrit :
Renvois la valeur $GUI_RUNDEFMSG à la commande qui à lancé la fonction (c'est à dire GUIRegisterMsg()). Cette valeur est une valeur fixe qui est déterminée dans GUIConstantsEx.au3.
Peut-tu me donner plus d'infos sur cette variable stp

Re: [R] Limiter la redimension d'une GUI
Posté : lun. 24 nov. 2008 20:38
par Tlem
minoui a écrit :Je suis pas non plus débile j'avais compris

Je voulais dire :
Quel est la
valeur de $WM_GETMINMAXINFO et quel sont les choses quelle renvoie
Heuuu là, je ne vois pas comment faire plus 'débile' comme explication ...
On va essayer

:
La valeur de
$WM_GETMINMAXINFO est : 0x24 (valeur hexadécimale de 36)
Et cette variable retourne la valeur qu'on lui à attribué ... C'est à dire ............. 0x24
minoui a écrit :Peut-tu me donner plus d'infos sur cette variable stp

Au sujet de la variable
$GUI_RUNDEFMSG, éditez le fichier
C:\Program Files\AutoIt3\Include\GUIConstantsEx.au3 et regardez ligne 24.
Je vous fait grâce de la même réponse que si dessus ...

Re: [..] Limiter la redimension d'une GUI
Posté : mer. 26 nov. 2008 19:00
par minoui
Ha je croyait que $WM_GETMINMAXINFO etait une variable heuu comment dire ... spéciale et pas une variable simple
Dsl

Re: [R] Limiter la redimension d'une GUI
Posté : lun. 16 juil. 2012 16:01
par Anthony
Oui mais peut on appliquer cette limitation à "WordPad" par exemple ?