[R] Limiter la zone de déplacement du GUI
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
-
- Membre émérite
- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
[R] Limiter la zone de déplacement du GUI
Bonjour,
Je cherche une solution pour limiter le déplacement d'une GUI sur l'écran à une zone en x et y .
Merci de votre aide par avance
Je cherche une solution pour limiter le déplacement d'une GUI sur l'écran à une zone en x et y .
Merci de votre aide par avance
Modifié en dernier par pierrotm777 le lun. 23 mai 2011 16:31, modifié 1 fois.
- Tlem
- Site Admin
- Messages : 11796
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Limiter la zone de déplacement du GUI
Il me semble bien que la question à déjà été posée.
En cherchant un peut ...
Sinon pour faire simple :
Utilisez GUIRegisterMsg pour surveiller la position de la GUI et bloquer les valeurs de position de la GUI par GUICtrlSetPos.
Ces deux fonctions ont leur réponse à l'utilisation dans la documentation et dans le forum.
En cherchant un peut ...
Sinon pour faire simple :
Utilisez GUIRegisterMsg pour surveiller la position de la GUI et bloquer les valeurs de position de la GUI par GUICtrlSetPos.
Ces deux fonctions ont leur réponse à l'utilisation dans la documentation et dans le forum.

Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
- Membre émérite
- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Limiter la zone de déplacement du GUI
Merci Tlem,
J'ai bien cherché mais rien trouvé .
Je vais regarder cela de plus prés
J'ai bien cherché mais rien trouvé .
Je vais regarder cela de plus prés
-
- Membre émérite
- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Limiter la zone de déplacement du GUI
En fait ,je déplace mas fenêtre avec la souris grace à la fonction suivante:
J'ai donc tenté de modifier la fonction ainsi mais là la fenêtre ne bouge plus !
Quant à GUICtrlSetPos, il permet de déplacer un contrôle mais ce que je souhaite c'est pouvoir limiter le déplacement de cette gui par la souris
► Afficher le texte
► Afficher le texte
Modifié en dernier par pierrotm777 le dim. 22 mai 2011 09:35, modifié 1 fois.
Re: [..] Limiter la zone de déplacement du GUI
Ce que voulait dire Tlem par l'utilisation du GUICtrlSetPos, c'est de remettre la fenêtre à sa précédente position si l'utilisateur décide de la déplacer un peu trop loin.
Ca n'empêche pas de la déplacer complètement, elle risque de faire des sortes de mini téléportations (Hop je te déplace d'un côté et pouf, elle revient en place, en boucle jusqu'à ce que l'utilisateur abandonne).
Il est aussi possible de désactiver complètement la bordure de la fenêtre mais c'est sale comme façon de faire.
http://autoitscript.fr/forum/viewtopic.php?f=4&t=7519
Tu peux aussi utiliser la fonction "_MouseTrap" pour empêcher l'utilisateur de bouger sa souris quand il l'a en clique gauche enfoncé sur le haut d'une Form qui est trop éloignée.
Ca n'empêche pas de la déplacer complètement, elle risque de faire des sortes de mini téléportations (Hop je te déplace d'un côté et pouf, elle revient en place, en boucle jusqu'à ce que l'utilisateur abandonne).
Il est aussi possible de désactiver complètement la bordure de la fenêtre mais c'est sale comme façon de faire.
http://autoitscript.fr/forum/viewtopic.php?f=4&t=7519
Tu peux aussi utiliser la fonction "_MouseTrap" pour empêcher l'utilisateur de bouger sa souris quand il l'a en clique gauche enfoncé sur le haut d'une Form qui est trop éloignée.
Modifié en dernier par Yarillo le dim. 22 mai 2011 09:38, modifié 3 fois.
-
- Membre émérite
- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Limiter la zone de déplacement du GUI
Bon , je m'étais un peu trompé dans mon test , j'ai donc modifié celui-ci mais j'arrive à déplacer malgré tout la fenêtre
au-delà de mes coordonnées xy, par contre , si la fenêtre a été déplacée au-delà des coordonnées limites elle ne peut
plus être déplacée.
Je ne vois pas comment me servir ici de la fonction GUICtrlSetPos()
au-delà de mes coordonnées xy, par contre , si la fenêtre a été déplacée au-delà des coordonnées limites elle ne peut
plus être déplacée.
► Afficher le texte
Modifié en dernier par pierrotm777 le dim. 22 mai 2011 09:35, modifié 2 fois.
-
- Membre émérite
- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Limiter la zone de déplacement du GUI
Yarillo, merci de votre aide, ma gui est déjà de ce type (.png).
Je voudrais vraiment ne pas pouvoir dépasser les valeurs xy, comme un effet butoir sur ces coordonnée et cela en temps réel !
Je voudrais vraiment ne pas pouvoir dépasser les valeurs xy, comme un effet butoir sur ces coordonnée et cela en temps réel !
-
- Membre émérite
- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Limiter la zone de déplacement du GUI
En fait le script sur lequel je travaille est dédié à un pc avec écran tactile, certes, le click de souris simule l'appuie sur l'écran mais ici _MouseTrap ne
me semble pas utilisable !
me semble pas utilisable !
Re: [..] Limiter la zone de déplacement du GUI
GUICtrlSetPos ( $Form1, 200, 80) déplacera la fenêtre au handle "$Form1" en X: 200 Y: 80
Pour votre problème de "buttage" je pense que je suis arrivé au bout de mon imagination, je laisse les bleus, verts, jaunes et rouges s'en occuper.
EDIT : Je n'ai jamais utilisé d'écran tactile et je n'ai jamais développé pour ce genre de choses, je suis dépassé sur ce plan, je vais tenter de me renseigner mais ça sera surement résolu par un autre avant.
Pour votre problème de "buttage" je pense que je suis arrivé au bout de mon imagination, je laisse les bleus, verts, jaunes et rouges s'en occuper.
EDIT : Je n'ai jamais utilisé d'écran tactile et je n'ai jamais développé pour ce genre de choses, je suis dépassé sur ce plan, je vais tenter de me renseigner mais ça sera surement résolu par un autre avant.
-
- Membre émérite
- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Limiter la zone de déplacement du GUI
L'écran tactile n'est juste q'un détail car pour mes tests j'utilise tout de même la souris
- Tlem
- Site Admin
- Messages : 11796
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Limiter la zone de déplacement du GUI
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
Global $iX_Min = 100, $iX_Max = @DesktopWidth - 600, $iY_Min = 100, $iY_Max = @DesktopHeight - 600
$hGUI = GUICreate("Test", 500, 500)
GUISetState()
GUIRegisterMsg($WM_WINDOWPOSCHANGING, "WM_WINDOWPOSCHANGING")
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func WM_WINDOWPOSCHANGING($hWnd, $Msg, $wParam, $lParam)
Local $stWinPos = DllStructCreate("uint;uint;int;int;int;int;uint", $lParam)
Local $iLeft = DllStructGetData($stWinPos, 3)
Local $iTop = DllStructGetData($stWinPos, 4)
Local $iWidth = DllStructGetData($stWinPos, 5)
Local $iHeight = DllStructGetData($stWinPos, 6)
If $iLeft < $iX_Min Then DllStructSetData($stWinPos, 3, $iX_Min)
If $iTop < $iY_Min Then DllStructSetData($stWinPos, 4, $iY_Min)
If $iLeft > $iX_Max Then DllStructSetData($stWinPos, 3, $iX_Max)
If $iTop > $iY_Max Then DllStructSetData($stWinPos, 4, $iY_Max)
EndFunc
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
- Membre émérite
- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Limiter la zone de déplacement du GUI
Merci Tlem, c'est effectivement une bonne solution mais qui fonctionne sur en repositionnement
de la fenêtre si les coordonnées sont dépassées.
Y aurait-il un moyen de bloquer dés que l'on arrive sur les coordonnées ?
de la fenêtre si les coordonnées sont dépassées.
Y aurait-il un moyen de bloquer dés que l'on arrive sur les coordonnées ?
- Tlem
- Site Admin
- Messages : 11796
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Limiter la zone de déplacement du GUI
Gné !
Je comprend pas ce que vous cherchez à faire. La question est claire, mais ce que vous avez à l'esprit ne semble pas correspondre. Donc encore une fois, il va y avoir de multiples échanges de messages pour arriver à un résultat.

Je comprend pas ce que vous cherchez à faire. La question est claire, mais ce que vous avez à l'esprit ne semble pas correspondre. Donc encore une fois, il va y avoir de multiples échanges de messages pour arriver à un résultat.

Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
- Membre émérite
- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Limiter la zone de déplacement du GUI
Je viens de tester pour autre chose la fonction GUICtrlSetPos ( $Form1, 200, 80).
Sur la fenêtre, elle ne fonctionne pas.
J'ai donc utilisé la fonction WinMove($Form1,"", 200, 80).
Sur la fenêtre, elle ne fonctionne pas.
J'ai donc utilisé la fonction WinMove($Form1,"", 200, 80).
-
- Membre émérite
- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Limiter la zone de déplacement du GUI
Bon, je vais tenter de mieux m'expliquer.
Je souhaite pouvoir déplacer à la souris une fenêtre en x et y mais avec une limite comme votre exemple le propose, mais sans jamais dépasser ces limites !
Dans votre exemple les limites sont dépassables tant que l'on tient la fenêtre avec la souris, puis la fenêtre se positionne à la valeur min ou max en x ou y la plus proche !
Je souhaite pouvoir déplacer à la souris une fenêtre en x et y mais avec une limite comme votre exemple le propose, mais sans jamais dépasser ces limites !
Dans votre exemple les limites sont dépassables tant que l'on tient la fenêtre avec la souris, puis la fenêtre se positionne à la valeur min ou max en x ou y la plus proche !
- Tlem
- Site Admin
- Messages : 11796
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Limiter la zone de déplacement du GUI

Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: [..] Limiter la zone de déplacement du GUI
Effectivement, ça fonctionne de mon côté aussi, essaye plutôt.
-
- Membre émérite
- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Limiter la zone de déplacement du GUI
Ca me convient tout de même, je clos donc le sujet !
Merci à tous pour votre aide
Merci à tous pour votre aide

-
- Membre émérite
- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [R] Limiter la zone de déplacement du GUI
Euuh , désolé, je suis de retour sur ce sujet.
En avançant dans mon script je viens de constater que si je crée plusieurs Gui filles qui normalement doivent suivre ma Gui principale grâce à l'option $WS_EX_MDICHILD, lorsque je bouge la gui principale vers la gauche, les gui filles suivent alors que si je déplace la Gui principale vers la droite, les gui filles se placent tout à coup l'une sur l'autre à l'origine de la Gui principale.
Alors que si je commente la ligne , GUIRegisterMsg($WM_WINDOWPOSCHANGING, "WM_WINDOWPOSCHANGING") , je n'ai plus bien sure les limites en x et y mais je n'ai plus ce problème de superposition des gui filles !
Je vous joins mon exemple !
Merci de votre aide
En avançant dans mon script je viens de constater que si je crée plusieurs Gui filles qui normalement doivent suivre ma Gui principale grâce à l'option $WS_EX_MDICHILD, lorsque je bouge la gui principale vers la gauche, les gui filles suivent alors que si je déplace la Gui principale vers la droite, les gui filles se placent tout à coup l'une sur l'autre à l'origine de la Gui principale.
Alors que si je commente la ligne , GUIRegisterMsg($WM_WINDOWPOSCHANGING, "WM_WINDOWPOSCHANGING") , je n'ai plus bien sure les limites en x et y mais je n'ai plus ce problème de superposition des gui filles !
Je vous joins mon exemple !
Merci de votre aide
- Fichiers joints
-
- gui&children.zip
- (22.29 Kio) Téléchargé 137 fois
Modifié en dernier par pierrotm777 le mar. 24 mai 2011 18:33, modifié 1 fois.
- Tlem
- Site Admin
- Messages : 11796
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [R] Limiter la zone de déplacement du GUI
Je n'ai pas de réponse.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".