[..] Appeler un GIF d'une DLL pour l'afficher sur un GUI

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
Avatar du membre
Pollux
Niveau 2
Niveau 2
Messages : 19
Enregistré le : lun. 10 nov. 2008 05:09
Status : Hors ligne

[..] Appeler un GIF d'une DLL pour l'afficher sur un GUI

#1

Message par Pollux »

STATUT: Non résolu (11/11/2008 - 00:46)

Bonjour à tous/toutes.

Ayant suivi le tutoriel sur l'insertion de ressources dans une DLL, j'ai pu stocker mes images bitmap pour les utiliser par la suite, sans problèmes.

J'ai voulu ensuite m'essayer à l'insertion de GIF (réussie) dans la DLL pour ensuite m'en servir pour les afficher en tant qu'images sur un GUI (échec).
J'ai essayé d'appeler le GIF en utilisant la fameuse fonction SetBitmapResourceToPicCtrl mais rien à faire. Dans le tutoriel il est précisé que l'on peut utiliser cette fonction pour "des images d'un autre format" que les icônes. Bref rien à faire, lorsque j'appelle mon GIF rien ne se passe.
(Je ne pose pas la question de la transparence car je pense que si l'on arrive à appeller le GIF de la DLL, la transparence marchera impec)

Si quelqu'un a une idée ou un conseil à me donner, je lui en serait très reconnaissant ! Car là je me prend le chou et je ne trouve pas :evil:


Merci d'avance.

NB: pour le GIF, le type que j'ai mis est RCDATA, dans le fichier ressource
Modifié en dernier par Pollux le mar. 11 nov. 2008 00:46, modifié 5 fois.
Image
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Appeler un GIF d'une DLL pour l'afficher sur un GUI

#2

Message par Tlem »

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
Pollux
Niveau 2
Niveau 2
Messages : 19
Enregistré le : lun. 10 nov. 2008 05:09
Status : Hors ligne

Re: [..] Appeler un GIF d'une DLL pour l'afficher sur un GUI

#3

Message par Pollux »

Bonsoir,

J'ai évidemment parcouru le tutoriel de long en large avant de venir ici (pour ne pas déranger inutilement :wink: )
Etape par étape, j'ai donc fait:

• TESTGIF RCDATA "Exemple.gif" dans mon fichier ressource.

• Transformé mon fichier *.rc et *.res puis insertion de ce dernier dans ma dll (via les outils du tutoriel)

• Ensuite (et c'est là le problème), j'utilise la fonction d'appel des ressources dans la dll:

SetBitmapResourceToPicCtrl($gui, $pic, 50, 50, 50, 100, "MaDll.dll", "TESTGIF", "str")

Et rien ne se passe malheureusement :(
Image
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: [..] Appeler un GIF d'une DLL pour l'afficher sur un GUI

#4

Message par jbnh »

Un bête question: tu as donc dans ton code:

Code : Tout sélectionner

SetBitmapResourceToPicCtrl($gui, $pic, 50, 50, 50, 100, "MaDll.dll", "TESTGIF", "str")
Mais as tu bien la gui qui va avec et la fonction complète? comme dans l'exemple:

► Afficher le texte
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

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

Re: [..] Appeler un GIF d'une DLL pour l'afficher sur un GUI

#5

Message par Tlem »

Hummm effectivement, ça ne fonctionne pas car ce n'est pas une image Bitmap.
Il va falloir que je complète le tuto. ;)

Pour utiliser d'autres ressources que les images Bitmap, il vous faut l'UDF ressource.au3 disponible sur ce post : http://www.autoitscript.fr/forum/viewto ... 3093#p3093

Regardez dans le code de cet UDF le nom des variables pour les différentes ressources utilisables.

Voici le code pour votre cas (testé et fonctionnel) :

Code : Tout sélectionner

#include "resources.au3"
 
$gui = GUICreate("Test d'utilisation de ressources",250,150)
$pic = GUICtrlCreatePic("",50,50,50,100)
GUISetState(@SW_SHOW)

_ResourceSetImageToCtrl($pic, "TESTGIF", $RT_RCDATA, "MaDll.dll")

While 1
    If GUIGetMsg() = -3 Then Exit
WEnd
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
Pollux
Niveau 2
Niveau 2
Messages : 19
Enregistré le : lun. 10 nov. 2008 05:09
Status : Hors ligne

Re: [..] Appeler un GIF d'une DLL pour l'afficher sur un GUI

#6

Message par Pollux »

Arf, et dire que j'avais lu ce tutoriel :s Mais comme il ne faisait pas intervenir de DLL je l'avais laissé tombé :mrgreen:
Ca marche impeccable !
Merci beaucoup à vous deux, vous me sauvez la vie :wink:

Problème [R]ésolu

EDIT: Ou pas!
Comme je le craignais, il me fait un caprice avec la transparence

Le code:

Code : Tout sélectionner

$BG = GUICreate("Test",500,150, -1, -1)
WinSetTrans("Test", "", 0)
$Main_Gui = GUICreate("", 500, 150, -1, -1, $WS_POPUP, $WS_EX_TOPMOST + $WS_EX_LAYERED + $WS_EX_MDICHILD , $BG);
$pic = GUICtrlCreatePic("", 0, 0, 500, 150)
_ResourceSetImageToCtrl($pic, "SPLASH", $RT_RCDATA, "MaDll.dll")
GUISetState(@SW_SHOW,$BG)
GUISetState(@SW_SHOW,$Main_Gui)
 
Mon souci: http://img139.imageshack.us/img139/8949/probou1.jpg

En haut, le gif d'origine, avec le pixel en haut à gauche qui définit ma couleur de transparence, le vert (#00FF00), échelle 2:1
En dessous, en taille 1:1, le GIF tel qu'il apparait. Le script prend en fait la bordure noire qui entoure mon image comme couleur de transparence, pourtant il ne devrait pas vu que j'ai défini le pixel en haut à gauche comme vert (et pas noir)
Si certains se sentent à essayer, j'y ait joint le fichier concerné.

Merci d'avance
Fichiers joints
SplashBG.gif
Image
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Appeler un GIF d'une DLL pour l'afficher sur un GUI

#7

Message par Tlem »

Code : Tout sélectionner

#include <WindowsConstants.au3>

$BG = GUICreate("Test",500,150, -1, -1)
$MG = GUICreate("", 500, 150, -1, -1, $WS_POPUP, BitOR($WS_EX_TOOLWINDOW,$WS_EX_TOPMOST,$WS_EX_LAYERED), $BG)
$pic = GUICtrlCreatePic("SplashBG.gif", 0, 0, 500, 150)
GUISetState(@SW_SHOW)
Sleep(3000)
Fonctionne chez moi, mais vous ne pourrez utiliser WinSetTrans pour l'afficher en Splash.
Utilisez un autre UDF (du forum exemple de script) pour le faire.
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
Pollux
Niveau 2
Niveau 2
Messages : 19
Enregistré le : lun. 10 nov. 2008 05:09
Status : Hors ligne

Re: [..] Appeler un GIF d'une DLL pour l'afficher sur un GUI

#8

Message par Pollux »

Il m'est en effet arrivé d'utiliser la fonction WinSetTrans, mais le problème est avant cela, car si j'appelle un gif situé dans un répertoire (donc ni dans une DLL ni dans un fichier ressource) la transparence marche impec.
En revanche, dès que j'appelle un gif d'une dll, la transparence ne marche plus. Dans votre exemple il n'y a pas l'appel de la dll pour charger le gif à l'intérieur, enfin peut-être que j'ai raté une étape, mais pour l'instant ça ne passe pas :?
Image
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Appeler un GIF d'une DLL pour l'afficher sur un GUI

#9

Message par Tlem »

Effectivement, ça ne fonctionne pas !
Dans ce cas, pour l'instant, utilisez la commande FileInstall pour copier le fichier dans un répertoire temporaire.

PS: Merci de réduire l'image de votre signature.
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
Tlem
Site Admin
Site Admin
Messages : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Appeler un GIF d'une DLL pour l'afficher sur un GUI

#10

Message par Tlem »

Pouvez-vous utiliser la fonction _ResourceSaveToFile de l'UDF Ressource.au3 afin de sauvegarder votre image GIF, puis d'utiliser celle-ci normalement pour voir si la transparence n'a pas été supprimée ?
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