Image de fond (bmp) dans une form [devc++]

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 188 fois - Téléchargée 27 fois

Contenu du snippet

Bonjour, je me permet de mettre cette source car j'ai cherché longtemps avant de trouver (Merci BruNews).
Cette source s'adresse au débutant comme moi qui cherche a mettre une image dans leur form.
Le code va chercher le fichier dans une ressource qui est incorporé dans l'executable.
Le compilateur utilisé est DevC++ 4.01.

Source / Exemple :


1/ Dans Edit Ressources File:
Image1 BITMAP "D:/Programme/Cpp/KDo[W32]/os1.bmp"

2/ Dans votre code:

	2-1/ La bibliotheque :
#include <windows.h>
	
	2-2/ Déclarer vos variables:
PAINTSTRUCT ps;
RECT rect;
HGLOBAL hgbl;
HDC hdc, hdc2;
HINSTANCE hinst;
HBITMAP hbmp;

	2-3/ Affichage de l'image:
[...]
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)                  
{
case WM_PAINT:
hbmp=(HBITMAP)LoadImage(hinst,"Image1", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION); // va chercher l'image 
hdc = BeginPaint( hwnd, &ps );
GetClientRect(hwnd,&rect);
hdc2 = CreateCompatibleDC(hdc);
SelectObject(hdc2, hbmp);  
StretchBlt(hdc,0,0,260,270,hdc2,0,0,260,270, SRCCOPY); // incorpore l'image dans la form
DeleteDC(hdc2);
EndPaint( hwnd, &ps );
break;                          
[...]
}

Conclusion :


La il est trop tard (00h44) je documenterais la source plus tard.
Je sais que ce code est pas formidable mais si il aide au moin un debutant comme moi .... ca sera deja ca.

"Le secret du sage est de briller dans l'ombre"

A voir également

Ajouter un commentaire Commentaires
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
LoadImage() est à faire hors de WM_PAINT pour ne pas utiliser trop la cpu.
Il manque ici le DeleteObject sinon saturation de la mémoire.
Messages postés
139
Date d'inscription
mardi 16 mai 2006
Statut
Membre
Dernière intervention
23 juin 2008

jessaye de faire marcher ton code mais ça marche pas sous dev-cpp
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
6
Messages postés
13
Date d'inscription
mercredi 7 mai 2003
Statut
Membre
Dernière intervention
11 février 2005

Si,si il est pas mal. Mais j'ai trouvé sur un tutoriel API (je n'arrive plus à me rappeler du site) une fonction encore plus simple qui affiche le bitmap (directement à partir d'un fichier) dans la fenêtre passée en paramètre:
void PrintBmp(HWND hWnd, char *filename)
{
HBITMAP hBmp;
HDC hDC;
hBmp=(HBITMAP)LoadImage(NULL,filename,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
hDC=GetDC(hWnd);
DrawState(hDC,NULL,NULL,(LPARAM)hBmp,0,0,0,0,0,DST_BITMAP);
DeleteObject(hBmp);
ReleaseDC(hWnd,hDC);
}
On peut éventuellement la modifier pour lui faire charger un bitmap depuis une .DLL où un .EXE mais il faudra charger le module spécifié avec LoadLibrary puis trouver la ressource avec FindResource

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.