Image jpg dans ressource

Résolu
mogwai93 Messages postés 361 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 19 mars 2015 - 7 oct. 2005 à 09:16
mogwai93 Messages postés 361 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 19 mars 2015 - 8 oct. 2005 à 06:17
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

racpp Messages postés 1910 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 15
8 oct. 2005 à 04:24
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.
3
racpp Messages postés 1910 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 15
7 oct. 2005 à 19:31
Salut,

Si tu utilises l'interface IPicture pour afficher ton image, je peux te donner un exemple.
0
mogwai93 Messages postés 361 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 19 mars 2015
7 oct. 2005 à 22:11
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
0
mogwai93 Messages postés 361 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 19 mars 2015
8 oct. 2005 à 06:09
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)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mogwai93 Messages postés 361 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 19 mars 2015
8 oct. 2005 à 06:17
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
0