[R] Limiter la zone de déplacement du GUI

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
pierrotm777
Membre émérite
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

#21

Message par pierrotm777 »

la fonction ci-dessous ne déplace pas les gui filles, mais ne limite pas les mouvements de la fenêtre principale !
► Afficher le texte
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2282
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [R] Limiter la zone de déplacement du GUI

#22

Message par jchd »

Le support de GUI fils type MDI et autres repose, dans AutoIt actuel, un peu sur des béquilles.
Disons qu'il ne faut pas pousser le support GUI dans ses retranchements, sous peine d'avoir à faire d'atroces bidouilles en interceptant moults messages avec du code AutoIt, ce qui n'est pas du plus efficace, ni stable.

Pour créer une application à GUI vraiment complexe, mieux vaut s'orienter vers un environnement de développement plus adapté. Ce n'est pas la vocation d'AutoIt.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
pierrotm777
Membre émérite
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

#23

Message par pierrotm777 »

Merci de votre réponse :D
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2282
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [R] Limiter la zone de déplacement du GUI

#24

Message par jchd »

Je ne dis pas ça pour décourager les expérimentations, bien au contraire, plutôt pour éviter les déconvenues coûteuses en temps et/ou en énergie.
Ceci dit, on peut déjà faire des choses pas mal du tout quand on met un peu les mains dans le cambouis.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
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] Limiter la zone de déplacement du GUI

#25

Message par mikell »

Ben y aurait ça
l'avantage c'est que tu travailles avec des images bitmap, c'est nettement plus simple
la transparence des bmp se fait avec _WinAPI_SetLayeredWindowAttributes()
j'envoie le rar avec les images

Code : Tout sélectionner

#include <StructureConstants.au3>
#include <WinAPI.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $skype, $gimp
Global $iX_Min = 100, $iX_Max = @DesktopWidth - 600, $iY_Min = 100, $iY_Max = @DesktopHeight - 600
$hGUI1 = GUICreate("Test", 500, 500, -1, -1)
GUISetBkColor(0xaa0000)
GUISetState()

$hGUI2 = GUICreate("", 500, 500, -1, -1, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_TOPMOST + $WS_EX_COMPOSITED + $WS_EX_MDICHILD, $hGUI1) 
MySplash($skype, @ScriptDir&"\skype.bmp", 1500, 1 , 100,100,100,100)
MySplash($gimp, @ScriptDir&"\gimp.bmp", 1500, 1 , 200,100,100,100)
GUISetBkColor(0xFF00FF)
_WinAPI_SetLayeredWindowAttributes($hGUI2, 0xFF00FF)
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

Func MySplash($pic, $Path_Logo, $Time_Splash, $Blink, $Xlogo, $Ylogo, $newW, $newH)
    $pic = GUICtrlCreatePic ($Path_Logo, $Xlogo, $Ylogo, $newW, $newH)
    GUICtrlSetState($pic, $GUI_ONTOP)
EndFunc   ;==>MySplash
 
test_bloc_move2.rar
(24.71 Kio) Téléchargé 152 fois
" 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 : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Limiter la zone de déplacement du GUI

#26

Message par Tlem »

Cela correspond au code que j'ai déjà proposé ici et dont le code provient de . :shock:
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: [R] Limiter la zone de déplacement du GUI

#27

Message par mikell »

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 !
Tlem a écrit :Je n'ai pas de réponse.
J'en étais resté là... bien sûr que c'est la fonction déjà mentionnée, mais la différence c'est qu'avec 2 guis et des bitmaps, là ça fonctionne... :wink:
" 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 : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Limiter la zone de déplacement du GUI

#28

Message par Tlem »

Ha ok, autant pour moi.
Je m'était arrêté au même endroit sans prendre le temps de lire le reste, car pierrotm777 se bloque souvent par la complexité de son code sans savoir réellement ce qu'il fait. :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: [R] Limiter la zone de déplacement du GUI

#29

Message par mikell »

Tlem a écrit :... pierrotm777 se bloque souvent par la complexité de son code sans savoir réellement ce qu'il fait. :mrgreen:
Il va adorer :lol:
Cela dit je suis bien d'accord avec jchd, vaut mieux faire simple si on peut et les mix de gui spéciales, de messages windows et de GDI+ ça peut devenir lourd à gérer

Je vais me faire une signature "la solution la plus simple est toujours la meilleure" :)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
pierrotm777
Membre émérite
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

#30

Message par pierrotm777 »

On parle de moi dans mon dos et c'est pas gentil . :evil:
Je pense qu'il vaut mieux pour moi me donner un but complexe plutôt que de rester sur ce que je sais déjà faire .
Je crois avoir fais des progrès depuis plus de 3 ans, mais oui je ne comprend pas toujours certains code, notamment les tableau à plusieurs dimensions! Le principal étant de finir par le comprendre même si ce n'est pas de suite !
A mon âge, il m'a été difficile de me mettre à autoit !
Pourtant, à force j'arrive à créer autour de mes besoins du moment !

Tlem en toujours aussi dur ! Je suppose que c'est pour mon bien ? :evil:
pierrotm777
Membre émérite
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

#31

Message par pierrotm777 »

Pour info, mon souci du moment est de travailler avec des images .png avec pour but de créer un menu dont les labels proviennent d'un format de fichier propriétaire. Alors oui c'est difficile , oui je me mélange les pinceaux parfois , oui je pose parfois des questions déjà posées mais je m'amuse beaucoup avec autoit et le forum m'est toujours d'une grande aide !
Comme disait Thierry Lermithe dans le père noël est une ordure "Parfois le chemenin est long !" :wink:

Mais merci tout de même pour l'intérêt que vous portez à mon problème :D
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] Limiter la zone de déplacement du GUI

#32

Message par mikell »

Ne te fâche pas
Je voulais juste dire qu'avec des bmp tu pourrais atteindre ton but pareillement mais avec un code beaucoup plus léger et des contrôles faciles à gérer
Si l'affichage de la GUI provoque déjà des soucis, la mise en place du reste du script risque d'être d'autant plus compliquée
pierrotm777 a écrit :....un menu dont les labels proviennent d'un format de fichier propriétaire
peux-tu expliquer "format de fichier propriétaire" ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
pierrotm777
Membre émérite
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

#33

Message par pierrotm777 »

Non je ne me fâche pas , il m'en faudrait bien plus ! Je sais bien qu'avec des bmp ce serait-il plus simple et là je saurait faire tout seul , mais en ce moment je travaille sur GDI+, ce qui n'est pas vraiment simple de premier abord !

Le format est celui du FrontEnd RideRunner:
► Afficher le texte
Dans la 3ème ligne se trouvent les fichiers .png de la GUI principale
Les lignes suivantes configurent mon menu
(effet au demarrage, position xy, positions min et max, délai de mise à jour des labels, transparence du menu )
Les lignes commençant par un L sont des labels
Les lignes commençant par un B sont des boutons
Les lignes commençant par un L sont des labels
Les lignes commençant par un I sont des indicateurs clignotant ou pas

Donc , le script vient lire tout cela et le converti au format autoit .
Riderunner supporte aussi bien les jpg,gif,bmp et png .

Voilà voilà il me reste le clignotement des logo et la mise à jour des labels à traiter :D

Et cela peut donner ça le menu est ici encadré en rouge)
Fichiers joints
gmaps.jpg
Avatar du membre
Tlem
Site Admin
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

#34

Message par Tlem »

pierrotm777 a écrit :Tlem en toujours aussi dur ! Je suppose que c'est pour mon bien ? :evil:
On peut dire ça ... :twisted:
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é".
Répondre