Intégrer une image dans un programme [Dev-cpp] [Résolu]

Messages postés
109
Date d'inscription
vendredi 8 avril 2005
Statut
Membre
Dernière intervention
15 mai 2007
- - Dernière réponse : juju2612
Messages postés
1
Date d'inscription
jeudi 24 septembre 2009
Statut
Membre
Dernière intervention
24 septembre 2009
- 24 sept. 2009 à 19:36
Salut!!

Je me demandais si quelqu'un savait comment intégrer une image dans un exécutable, et pouvoir l'utiliser ensuite...

Est-ce que quelqu'un peut m'aider? merci!

by_rabbit_08
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
56
Date d'inscription
samedi 3 juillet 2004
Statut
Membre
Dernière intervention
30 juin 2008
3
Merci
Bah si l'image se situe dans la ressource, il n'y a pas énormément de difficultés :)
C'est presque pareil sauf que à la place du répertoire, tu mets le nom de la ressource, exemple :

hBitmap = LoadImage(hInst, MAKEINTRESOURCE(MA_RESSOURCE), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);

La le flag par contre est différence vu qu'il est charger à partir de la ressource :)
Par contre, il faut pas oublier dans le fichier *.rc de mettre :
MA_RESSOURCE BITMAP DISCARDABLE "bitmap.bmp"
ainsi que dans le fichier resource.h :
#define MA_RESSOURCE 102
Par exemple :)

Ca fait une éternité que j'ai pas codé avec Dev-C++ mais ca devrait marcher :)

Amicalement,
The Destiny

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 194 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_thedestiny
Messages postés
56
Date d'inscription
samedi 3 juillet 2004
Statut
Membre
Dernière intervention
30 juin 2008
0
Merci
Oui c'est possible d'intégrer une image dans les ressources.
Après pour l'utiliser, ca dépend ce que tu veux faire et la il y a 2 cas de figures :
1- Tu veux l'extraire de l'application
2- Tu veux l'afficher dans une fenêtre de ton programme

Donc il faudrait nous en dire un peu plus :)

Amicalement,
The Destiny
Commenter la réponse de cs_thedestiny
Messages postés
109
Date d'inscription
vendredi 8 avril 2005
Statut
Membre
Dernière intervention
15 mai 2007
0
Merci
En fait c simple,
j'aimerais afficher une image (comme dans le code ci-desous) que je
prends non pas dans un dossier, mais qui se trouve dans l'EXE, par je
ne sais quel moyen... Dit-moi si il faut plus d'indication...







//********************************

#include <windows.h>



LRESULT CALLBACK ProcedureDeFenetre (HWND,UINT,WPARAM,LPARAM); //prototype de la fonction de traitement des messages





int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hInstancePrecedente,PSTR LigneDeCommande,int ModeAffichage)

{

char NomProgramme[ ] = "xamax";

HWND Fenetre; //le type HWND définit un type HANDLE

MSG Message;

WNDCLASSEX ClasseFenetre;



ClasseFenetre.cbSize =sizeof(ClasseFenetre);

ClasseFenetre.style = CS_HREDRAW|CS_VREDRAW;

ClasseFenetre.lpfnWndProc =ProcedureDeFenetre;

ClasseFenetre.cbClsExtra =0;

ClasseFenetre.cbWndExtra =0;

ClasseFenetre.hInstance =hInstance;

ClasseFenetre.hIcon =LoadIcon(0,IDI_APPLICATION); //LoadIcon charge un identificateur d'icone

ClasseFenetre.hCursor =LoadCursor(0,IDC_ARROW); //LoadCursor charge un identificateur de curseur

ClasseFenetre.hbrBackground =CreateSolidBrush(RGB(255,255,255)); //définit le fond d'écran de la fenêtre

ClasseFenetre.lpszMenuName =0;

ClasseFenetre.lpszClassName =NomProgramme;

ClasseFenetre.hIconSm =LoadIcon(NULL,IDI_APPLICATION);



RegisterClassEx(&ClasseFenetre); //on enregistre la classe de la fenêtre



//CreateWindow va créer "visuellement" une fenetre qui utilisera la classe enregistree

Fenetre=CreateWindow(NomProgramme, //nom de la classe de fenetre


"xamax", //titre de la fenêtre visible


WS_OVERLAPPEDWINDOW, //style de la fenetre


CW_USEDEFAULT, //emplacement x à l'appel


CW_USEDEFAULT, //emplacement y à l'appel


220, //taille sur l'axe x


290, //taille sur l'axe y


NULL,


NULL, //handle du menu


hInstance, //handle de l'instance (instance déclarée en haut)


NULL); //paramètres supplementaires



ShowWindow(Fenetre,ModeAffichage);//afficher la fenêtre à l'écran

UpdateWindow(Fenetre);//mise à jour de la fenêtre



//Lecture d'un message dans la file d'attente

while(GetMessage(&Message,NULL,0,0))

{

TranslateMessage(&Message);

DispatchMessage(&Message);

}

return Message.wParam;

}





LRESULT CALLBACK ProcedureDeFenetre(HWND fen,UINT msg,WPARAM wparam,LPARAM lparam)

{

switch(msg)

{

HINSTANCE hInst; //déclaration d'une instance type à cette fonction de traitement des messages



//déclaration de variables pour les images

BITMAP bm;

PAINTSTRUCT ps;

HDC hDC, hMemDC;

static HBITMAP hBitmap;



case WM_CREATE:

hBitmap = LoadImage(hInst, //charge l'image dans l'instance déclarée sans la dessiner

"xamax.bmp", //indique le nom du fichier, pourrait être du style "C:\\dossier\\xamax.bmp"

IMAGE_BITMAP, //indique que c'est une image bitmap :P

0, 0, //0,0 prends l'image sans la déformer

LR_DEFAULTSIZE|LR_LOADFROMFILE); //charge l'image avec ses tailles de départs

break;



case WM_PAINT:

hDC = BeginPaint(fen, &ps);



//Affiche l'image

DrawState(hDC,

NULL,

NULL,

(LPARAM)hBitmap,


0, 20, 10, 0, 0, //position de l'image

DST_BITMAP);

SetBkMode(hDC, TRANSPARENT); //peut aussi être opaque

TextOut(hDC, 60, 235, "Aller Xamax!!!
>_>!",
13);





DeleteDC(hMemDC);

EndPaint(fen, &ps);

break;



case WM_DESTROY:

PostQuitMessage(0);//arret du programme

return 0;

}

return DefWindowProc(fen,msg,wparam,lparam);

}

//*************************************
Commenter la réponse de by_rabbit_08
Messages postés
109
Date d'inscription
vendredi 8 avril 2005
Statut
Membre
Dernière intervention
15 mai 2007
0
Merci
Merci bcp!
Commenter la réponse de by_rabbit_08
Messages postés
1
Date d'inscription
jeudi 24 septembre 2009
Statut
Membre
Dernière intervention
24 septembre 2009
0
Merci
dfergergeqg
Commenter la réponse de juju2612