[R] Empecher deplacement GUI

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

[R] Empecher deplacement GUI

#1

Message par DimVar »

Glop,


Peut on empêcher les déplacement d'une GUI et comment ? Ou peut on replacer une gui (si le user la déplace) ?
(dommage que le terme "gui", qui fait 3 caractères, soit ignoré lors d'une recherche sur le forum)


Merci à vous.
Modifié en dernier par DimVar le jeu. 19 janv. 2012 09:42, modifié 1 fois.
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
lesolutionneur
Niveau 7
Niveau 7
Messages : 368
Enregistré le : ven. 09 déc. 2011 11:25
Status : Hors ligne

Re: [..] Empecher deplacement GUI

#2

Message par lesolutionneur »

Salut, je ne crois pas que l'on puisse empêcher un déplacement de la fenêtre (je crois que ça sera toujours possible en autoit), par contre, tu peux faire un événement qui s'execute quand la fenêtre bouge qui la remet au bon endroit, ou tout simplement une boucle qui vérifie regulierement la position de la fenêtre (et pourquoi pas un adlib register ?)
Avatar du membre
silvere
Niveau 8
Niveau 8
Messages : 532
Enregistré le : sam. 24 sept. 2011 22:56
Status : Hors ligne

Re: [..] Empecher deplacement GUI

#3

Message par silvere »

La GUI de ton programme ou d'un autre ?
Quand le mensonge prend l'ascenseur, la vérité prend l'escalier. Elle met plus de temps, mais elle fini toujours par arriver.
lesolutionneur
Niveau 7
Niveau 7
Messages : 368
Enregistré le : ven. 09 déc. 2011 11:25
Status : Hors ligne

Re: [..] Empecher deplacement GUI

#4

Message par lesolutionneur »

Je pense de son programme mais c'est vrai qu'il ne l'a pas spécifié...
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Empecher deplacement GUI

#5

Message par mikell »

Code : Tout sélectionner

#include <GUIConstantsEx.au3>

$gui = GUICreate("My GUI",200,200)
GUISetState()
$pos = WinGetPos($gui)

While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    If $msg =$GUI_EVENT_PRIMARYUP Then WinMove($gui, "", $pos[0], $pos[1])
WEnd
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Empecher deplacement GUI

#6

Message par Tlem »

Ne fonctionne pas si on passe par 'Déplacer' du menu contextuel de l'icône de la barre des taches + flèche clavier (ou souris dans un deuxième temps).

Qui à être sauvage, autant faire ceci :

Code : Tout sélectionner

#include <GUIConstantsEx.au3>

$gui = GUICreate("My GUI",200,200)
GUISetState()
$pos = WinGetPos($gui)

While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    
    Sleep(50)
    WinMove($gui, "", $pos[0], $pos[1])
WEnd
L'idéal étant de passer par une CallBack, mais là, ça fait beaucoup plus de ligne de code. ;)
Tout dépend du code général. Si le code est light, alors la bidouille ci-dessus convient, sinon on peut aussi faire ceci :

Code : Tout sélectionner

#include <GUIConstantsEx.au3>

$gui = GUICreate("My GUI",200,200)
GUISetState()
$pos1 = WinGetPos($gui)

While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop

    $pos2 = WinGetPos($gui)
    If $pos1[0] <> $pos2[0] or $pos1[1] <> $pos2[1] Then WinMove($gui, "", $pos1[0], $pos1[1])
WEnd
Mais je préfère la CallBack. :mrgreen:
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é".
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Empecher deplacement GUI

#7

Message par mikell »

Bon ben comme ça alors :mrgreen:

Code : Tout sélectionner

#include <GUIConstantsEx.au3>

$gui = GUICreate("My GUI",200,200,-1, -1, -1, -1, WinGetHandle("[CLASS:Progman]"))
GUISetState()
$pos = WinGetPos($gui)

While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    If $msg =$GUI_EVENT_PRIMARYUP Then WinMove($gui, "", $pos[0], $pos[1])
WEnd
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Empecher deplacement GUI

#8

Message par Tlem »

Je ne vois pas la différence en dehors de l'ajout d'options dans GUICreate. :shock:
Le comportement reste le même :

1 - Je lance la GUI
2 - Dans la barre des taches je fait un clic droit sur le programme en cours
3 - Je sélectionne "Déplacer"
4 - Je joue avec les flèches du clavier pour déplacer la fenêtre.
5 - La GUI bouge aussi avec la souris mais sans cliquer :mrgreen:
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é".
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] Empecher deplacement GUI

#9

Message par DimVar »

Merci à vous deux. Je clos.
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Empecher deplacement GUI

#10

Message par mikell »

Tlem a écrit :2 - Dans la barre des taches je fait un clic droit sur le programme en cours
Hum sur mon XP faire de la gui une fille de Progman a comme conséquence qu'elle ne s'affiche plus dans la barre des tâches, mais apparemment ce n'est pas le cas ailleurs :?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [R] Empecher deplacement GUI

#11

Message par ZDS »

Bonjour,

Je sais que le sujet a été résolu, mais je propose une alternative : Au lieu de remettre la fenetre à sa place quand elle bouge, pourquoi ne pas l'empécher de bouger? ça éviterait les scintillements désagréables ^^
► Afficher le texteBlocage fenêtre
A bientôt.

PS: Je me demande si c'est le genre de code que Tlem a appelé "callback" (mais je ne pense pas, j'appellerai ça plutôt "registerMsg"). Dans ce cas, puisqu'il n'a pas posté de code, en voici un exemple.
PS2: Lesolutionneur, 90% du temps où ce n'est pas possible, au final ça l'est :)
PS3: Le code au milieu est volontaire, pour montrer qu'il est toujours possible en interne de bouger la fenêtre, mais les commandes telles que montrées plus haut (souris, clavier, barre de tâches, etc...) sont inactives.
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] Empecher deplacement GUI

#12

Message par mikell »

:shock: Super
J'ai trouvé 0xF010 = SC_MOVE mais que signifie exactement cette valeur 0xFFF0 qui sert dans tous les tests ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [R] Empecher deplacement GUI

#13

Message par ZDS »

Le FFF0 n'est qu'un masque, permettant de dire qu'on ne garde que la partie significative du wParam, soit les 2 derniers octets, mais que les 4 derniers bits ne sont pas utiles.

Ne me demande pas ce qu'il y a au dessus de FFFF, ni ce qui utilise le dernier nombre, je n'en sais rien du tout ^^ Ce que j'ai remarqué par contre, c'est qu'en mettant sur quasiment tout et n'importe quel composant de mon script, une fonction de ce type (avec un ConsoleWrite dedans), tu récupères pas mal d'infos sur les événements que gère la fenêtre. Par exemple, F060 correspond à une fermeture, F010 à un déplacement, F020 à une réduction, F120 à une restauration, etc...

Disons que le mieux pour utiliser ce genre de truc, c'est la pratique (et les plantages qui vont avec ^^).
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Empecher deplacement GUI

#14

Message par Tlem »

ZDS a écrit :PS: Je me demande si c'est le genre de code que Tlem a appelé "callback" (mais je ne pense pas, j'appellerai ça plutôt "registerMsg").
C'est exactement ce que j'appelle une CallBack.

Extrait de ce lien : http://www.autoitscript.fr/forum/viewto ... 732#p53732
Tlem a écrit :Humm, effectivement, pour la recherche, il fallait utiliser CallBack et GUIRegisterMsg
Le seul truc, c'est que je l'imaginais un tout petit peut plus complexe car je n'avais pas fait de recherches. ;)
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é".
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [R] Empecher deplacement GUI

#15

Message par DimVar »

Merci pour ce complément d'info.
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Répondre