Image jpg dans ressource [Résolu]

Signaler
Messages postés
361
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
19 mars 2015
-
Messages postés
361
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
19 mars 2015
-
bonjour

j'aimerais afficher sur une fenetre une image jpg contenu dans une ressource.

pour le moment, je sais afficher une image jpg à l'exterieur de l'executable (style fichier / ouvrir)
je sais afficher une image bmp contenue dans une ressource

mais faire la meme chose avec un jpg me pose probleme, car le code que j'ai, contient un "fopen"...
donc j'aimerais savoir comment lui dire que le jpg est dans l'exe

merci

PS: je programme avec Devcpp

5 réponses

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
12
Voici un exemple:

HINSTANCE hinst=GetModuleHandle(0);

HRSRC ressource = FindResource(hinst,"ID_JPG","RT_RCDATA");

HGLOBAL mem = LoadResource(hinst, ressource);

LPVOID data = LockResource(mem);

DWORD taille = SizeofResource(hinst, ressource);

HGLOBAL hGlobal = GlobalAlloc(GMEM_FIXED, taille);

CopyMemory(hGlobal,data,taille);

FreeResource(mem);

LPSTREAM pstm = 0;

HRESULT hr = CreateStreamOnHGlobal(hGlobal, 1, &pstm);

IPicture *Ipic;

hr=OleLoadPicture(pstm, taille, 0, IID_IPicture, (LPVOID *)&Ipic);

Tu afficheras ensuite l'image gâce au pointeur Ipic obtenu.

Le fichier script de ressource contient la ligne suivante:

ID_JPG RT_RCDATA "image.jpg"

Voilà, j'espère n'avoir rien oublié. Bonne programmation.
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
12
Salut,

Si tu utilises l'interface IPicture pour afficher ton image, je peux te donner un exemple.
Messages postés
361
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
19 mars 2015

c'est bien l'interface IPicture que j'utilise

donc appel aux methodes CreateStreamOnHGlobal, OleLoadPicture, ...



voila le code que j'ai (j'ai enlevé tous les tests d'existence et de memoire....)



-------------------------------

...

fp = fopen(FileName,"rb");

fseek(fp,0,SEEK_END);

int fs = ftell(fp);

fseek(fp,0,SEEK_SET);

hG = GlobalAlloc(GPTR,fs);

pp = (void*)hG;

fread(pp,1,fs,fp);

fclose(fp);



CreateStreamOnHGlobal(hG,false,&s);

....

--------------------



je pense que c'est à cet endroit qu'il faut modifier le code

mais je ne sais pas quoi mettre



merci
Messages postés
361
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
19 mars 2015

merci,

je pense que c'est bon



il faut que je trouve maintenant pourquoi FindResource me retourne NULL...

pourtant tes parametres sont ok

et l'image jpg est bien dans l'executable (testé avec reshacker)
Messages postés
361
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
19 mars 2015

enfin j'ai trouvé



voici le code qu'il faut mettre :

HRSRC ressource = FindResource(hinst,(LPCTSTR)ID_JPG,"RT_RCDATA");



et ca fonctionne !!



encore merci