Page 2 sur 2

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

Posté : mar. 24 mai 2011 18:47
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

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

Posté : mar. 24 mai 2011 19:25
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.

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

Posté : mar. 24 mai 2011 19:48
par pierrotm777
Merci de votre réponse :D

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

Posté : mar. 24 mai 2011 22:45
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.

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

Posté : dim. 29 mai 2011 22:19
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é 162 fois

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

Posté : dim. 29 mai 2011 22:27
par Tlem
Cela correspond au code que j'ai déjà proposé ici et dont le code provient de . :shock:

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

Posté : dim. 29 mai 2011 22:40
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:

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

Posté : dim. 29 mai 2011 22:48
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:

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

Posté : dim. 29 mai 2011 23:37
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" :)

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

Posté : lun. 30 mai 2011 17:13
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:

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

Posté : lun. 30 mai 2011 17:35
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

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

Posté : lun. 30 mai 2011 19:29
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" ?

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

Posté : lun. 30 mai 2011 19:57
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)

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

Posté : lun. 30 mai 2011 22:09
par Tlem
pierrotm777 a écrit :Tlem en toujours aussi dur ! Je suppose que c'est pour mon bien ? :evil:
On peut dire ça ... :twisted: