Impossible d'insérer une image dans un GUI

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
moebius
Niveau 1
Niveau 1
Messages : 1
Enregistré le : sam. 04 nov. 2017 01:02
Status : Hors ligne

Impossible d'insérer une image dans un GUI

#1

Message par moebius » sam. 04 nov. 2017 01:22

Bonjour,

En suivant les exemples donnés à cette adresse : http://www.autoitscript.fr/forum/viewto ... f=35&t=595

J'obtient une fenêtre de GUi vide et sans image, toutes mes autres tentatives ont échouées également (avant de me rabattre sur l'exemple de la fonction qui ne fonctionne pas chez moi non plus).

Je vérifie en amont l'existance du fichier tel que
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $g_hGui, $g_aGuiPos, $g_hPic, $g_aPicPos

Example()

Func Example()
    $g_hGui = GUICreate("test transparentpic", 200, 100)
    $g_hPic = GUICreate("", 68, 71, 10, 20, $WS_POPUp, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $g_hGui)
    GUICtrlCreatePic("C:\Users\Name\Documents\b.jpg", 0, 0, 0, 0)
        if FileExists("C:\Users\Name\Documents\b.jpg") <> 1 Then
                Exit
        EndIf

    GUISetState(@SW_SHOW, $g_hPic)
    GUISetState(@SW_SHOW, $g_hGui)

    HotKeySet("{ESC}", "Main")
    HotKeySet("{Left}", "Left")
    HotKeySet("{Right}", "Right")
    HotKeySet("{Down}", "Down")
    HotKeySet("{Up}", "Up")
    $g_aPicPos = WinGetPos($g_hPic)
    $g_aGuiPos = WinGetPos($g_hGui)

    ; Loop until the user exits.
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                ExitLoop

        EndSwitch
    WEnd

    HotKeySet("{ESC}")
    HotKeySet("{Left}")
    HotKeySet("{Right}")
    HotKeySet("{Down}")
    HotKeySet("{Up}")
EndFunc   ;==>Example

Func Main()
    $g_aGuiPos = WinGetPos($g_hGui)
    WinMove($g_hGui, "", $g_aGuiPos[0] + 10, $g_aGuiPos[1] + 10)
EndFunc   ;==>Main

Func Left()
    $g_aPicPos = WinGetPos($g_hPic)
    WinMove($g_hPic, "", $g_aPicPos[0] - 10, $g_aPicPos[1])
EndFunc   ;==>Left

Func Right()
    $g_aPicPos = WinGetPos($g_hPic)
    WinMove($g_hPic, "", $g_aPicPos[0] + 10, $g_aPicPos[1])
EndFunc   ;==>Right

Func Down()
    $g_aPicPos = WinGetPos($g_hPic)
    WinMove($g_hPic, "", $g_aPicPos[0], $g_aPicPos[1] + 10)
EndFunc   ;==>Down

Func Up()
    $g_aPicPos = WinGetPos($g_hPic)
    WinMove($g_hPic, "", $g_aPicPos[0], $g_aPicPos[1] - 10)
EndFunc   ;==>Up
 
Merci d'avoir lu mon message, Si quelqu'un pouvais m'aiguiller sur ou se trouve mon erreur, ou même à défault, m'indiquer si ce code fonctionne chez lui (en adaptant le chemin de l'image):3

Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11281
Enregistré le : ven. 20 juil. 2007 20:00
Localisation : Bordeaux
Status : Hors ligne

Re: Impossible d'insérer une image dans un GUI

#2

Message par Tlem » sam. 04 nov. 2017 11:25

Bonjour moebius.

1ere constatation : Vous testez la présence du fichier image après avoir voulu l'afficher ... La logique voudrait que ce soit la première chose à tester, avant même de déclarer quoi que ce soit d'autre. Ou au pire de tester la présence du fichier à l'entrée de la fonction et si le fichier est inexistant alors on sort avec un code d'erreur (Return SetError(1)).

Code : Tout sélectionner

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

If Not FileExists("b.jpg") Then 
	MsgBox(16, "Erreur", "Le fichier b.jpg est inexistant !")
	Exit
EndIf

Global $g_hGui, $g_aGuiPos, $g_hPic, $g_aPicPos
Example()
ou

Code : Tout sélectionner

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

Global $g_hGui, $g_aGuiPos, $g_hPic, $g_aPicPos
Example()
If @error Then MsgBox(16, "Erreur", "Le fichier b.jpg est inexistant !")

Func Example()
    If Not FileExists("b.jpg") Then Return  SetError(1)
	$g_hGui = GUICreate("test transparentpic", 1000, 500)
    $g_hPic = GUICreate("", 68, 71, 10, 20, $WS_POPUp, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $g_hGui)
2Ième constatation : Vous construisez vos deux GUI et vous en "habillez" une puis vous lancez une instruction qui met celle-ci en avant plan (GUISetState(@SW_SHOW, $g_hPic)) !!!
Forcément, votre image est cachée par la GUI que vous avez "activé".

Faites votre GUICtrlCreatePic() après vos GUISetState() et votre image apparaitra.
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