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

0/5 (4 avis)

Snippet vu 6 328 fois - Téléchargée 29 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
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
28
30 déc. 2006 à 16:33
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.
sebastienmz
Messages postés
139
Date d'inscription
mardi 16 mai 2006
Statut
Membre
Dernière intervention
23 juin 2008

30 déc. 2006 à 14:44
jessaye de faire marcher ton code mais ça marche pas sous dev-cpp
victorcoasne
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
7
9 juil. 2004 à 14:46
Nikoscian
Messages postés
13
Date d'inscription
mercredi 7 mai 2003
Statut
Membre
Dernière intervention
11 février 2005

2 oct. 2003 à 19:08
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.