
by_rabbit_08
|
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);
}
//*************************************
|