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

by_rabbit_08 109 Messages postés vendredi 8 avril 2005Date d'inscription 15 mai 2007 Dernière intervention - 1 juin 2005 à 21:13 - Dernière réponse : juju2612 1 Messages postés jeudi 24 septembre 2009Date d'inscription 24 septembre 2009 Dernière intervention
- 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

Répondre au sujet
cs_thedestiny 56 Messages postés samedi 3 juillet 2004Date d'inscription 30 juin 2008 Dernière intervention - 1 juin 2005 à 22:45
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_thedestiny
cs_thedestiny 56 Messages postés samedi 3 juillet 2004Date d'inscription 30 juin 2008 Dernière intervention - 1 juin 2005 à 21:38
0
Utile
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
by_rabbit_08 109 Messages postés vendredi 8 avril 2005Date d'inscription 15 mai 2007 Dernière intervention - 1 juin 2005 à 21:41
0
Utile
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
by_rabbit_08 109 Messages postés vendredi 8 avril 2005Date d'inscription 15 mai 2007 Dernière intervention - 1 juin 2005 à 22:46
0
Utile
Merci bcp!
Commenter la réponse de by_rabbit_08
juju2612 1 Messages postés jeudi 24 septembre 2009Date d'inscription 24 septembre 2009 Dernière intervention - 24 sept. 2009 à 19:36
0
Utile
dfergergeqg
Commenter la réponse de juju2612

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.