Page 1 sur 1

Impossible d'insérer une image dans un GUI

Posté : sam. 04 nov. 2017 01:22
par moebius
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

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

Posté : sam. 04 nov. 2017 11:25
par Tlem
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.