[R] Détruire proprement une fenêtre pour la refaire plus tard

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
sozary
Niveau 6
Niveau 6
Messages : 274
Enregistré le : lun. 20 janv. 2014 19:17
Status : Hors ligne

[R] Détruire proprement une fenêtre pour la refaire plus tard

#1

Message par sozary »

Bonsoir!
Tout d'abord, il n'y avait plus de place pour le "d" dans le titre du sujet!

Ensuite, mon problème est le suivant:
J'ai deux fonctions:

Code : Tout sélectionner

Func _CursorCreate($hBitmap)
    ;curseur begin -------------------------------------------------------------------------------------------------------
    Global $gui = GUICreate('curs',200,200,MouseGetPos()[0],MouseGetPos()[1],$WS_POPUP, $WS_EX_LAYERED)
    GUISetBkColor($color, $gui)
    _WinAPI_SetLayeredWindowAttributes($gui, $color)
    GUISetState()
    $ImageSelec=_GDIPlus_GraphicsCreateFromHWND($gui)
    GUICtrlSetBkColor($ImageSelec, $GUI_BKCOLOR_TRANSPARENT)
    _GDIPlus_GraphicsDrawImageRect($ImageSelec,$hBitmap,0,0,200,200)
    Return $gui
;curseur end -------------------------------------------------------------------------------------------------------
EndFunc

Func _CursorDispose($hCurseur)
    GUIDelete($hCurseur)
EndFunc
La première se déclenche lors de l'appui sur un boutton, et me permet, comme mikell me l'a conseillé il y a longtemps, de déplacer la gui avec le curseur. J'ai donc une petite image qui suit ma souris, que je peux détruire quand je veux avec la deuxième fonction!

Problème: quand je veux ensuite réutiliser la première fonction, AutoIt me fait la tête et refuse de l'afficher...
Je sais que c'est un problème lier à gdi, lors du chargement de l'image sur la gui, et vous allez peut être me dire que gdi est inutile ici, mais je n'arrive pas à mettre une image transparente (donc en png) sans utiliser d'udf (icon.au3) utilisant aussi gdi+!

Merci d'avance pour d'avantage d'éclaircissement!
Modifié en dernier par sozary le jeu. 02 juil. 2015 09:59, modifié 2 fois.
"Là où la volonté est grande, les difficultés diminuent.", Niccolò Machiavelli
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Détruire proprement un fenêtre pour la refaire plus

#2

Message par mikell »

GUISetState(@SW_HIDE) ?
" 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
sozary
Niveau 6
Niveau 6
Messages : 274
Enregistré le : lun. 20 janv. 2014 19:17
Status : Hors ligne

Re: [..] Détruire proprement un fenêtre pour la refaire plus

#3

Message par sozary »

Code : Tout sélectionner

Func _CursorCreate($hBitmap)

    If $z<10 Then
        $scale=(256/((10-$z)/.3))/2
    ElseIf $z=10 Then
        $scale=256/2
    Else
        $scale=(256*(($z-10)/.3))/2
    EndIf

    ;curseur begin -------------------------------------------------------------------------------------------------------
    if WinExists("curs","") Then
        GUISetState(@SW_SHOW,$cursor)
        Return $cursor
    EndIf
    Global $gui = GUICreate('curs',$scale,$scale,MouseGetPos()[0],MouseGetPos()[1],$WS_POPUP, $WS_EX_LAYERED)

    GUISetBkColor($color, $gui)
    _WinAPI_SetLayeredWindowAttributes($gui, $color)
    GUISetState()
    WinSetTrans($gui,"",155)
    $ImageSelec=_GDIPlus_GraphicsCreateFromHWND($gui)
    GUICtrlSetBkColor($ImageSelec, $GUI_BKCOLOR_TRANSPARENT)
    _GDIPlus_GraphicsDrawImageRect($ImageSelec,$hBitmap,0,0,$scale,$scale)
    Return $gui
;curseur end -------------------------------------------------------------------------------------------------------
EndFunc

Func _CursorDispose($hCurseur)
    GUISetState(@SW_HIDE,$hCurseur)
EndFunc

;-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
Sachant que le $cursor est défini en début de programme, et reçois la valeur de la fenêtre quand elle est créée, néanmoins ça ne fonctionne pas :(
"Là où la volonté est grande, les difficultés diminuent.", Niccolò Machiavelli
Avatar du membre
sozary
Niveau 6
Niveau 6
Messages : 274
Enregistré le : lun. 20 janv. 2014 19:17
Status : Hors ligne

Re: [..] Détruire proprement un fenêtre pour la refaire plus

#4

Message par sozary »

Problème résolu, j'avais oublié de mettre un boléan à false :mrgreen: !
Du coup le guidelete() marche bien en fin de compte!

P-S: Juste Mikell, avec ta technique, l'image du gdi n'est plus visible quand on a utilisé un @sw_hide puis @sw_show !
Modifié en dernier par sozary le mer. 01 juil. 2015 23:22, modifié 1 fois.
"Là où la volonté est grande, les difficultés diminuent.", Niccolò Machiavelli
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] Détruire proprement un fenêtre pour la refaire plus

#5

Message par mikell »

C'est pour ça que j'avais mis un "?" :mrgreen:
" 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
sozary
Niveau 6
Niveau 6
Messages : 274
Enregistré le : lun. 20 janv. 2014 19:17
Status : Hors ligne

Re: [R] Détruire proprement un fenêtre pour la refaire plus

#6

Message par sozary »

:wink:
"Là où la volonté est grande, les difficultés diminuent.", Niccolò Machiavelli
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11812
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Détruire proprement un fenêtre pour la refaire plus

#7

Message par Tlem »

sozary a écrit :Bonsoir!
Tout d'abord, il n'y avait plus de place pour le "d" dans le titre du sujet!
Voilà, je l'ai ajouté. ;)

Envoyé de mon appareil mobile avec Tapatalk.
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
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [R] Détruire proprement un fenêtre pour la refaire plus

#8

Message par jguinch »

Du coup, ça aurait été bien de mettre une fenêtre :mrgreen:
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Répondre