[Visual C++] Mettre un .bmp dans l'exe

Mettre un .bmp dans l'exe [Visual C++] - Programmation

Marsh Posté le 20-01-2002 à 16:08:05    

salut
je voudrais mettre un .bmp dans l'exe au lieu de faire référence à un autre fichier externe classique. J'ai donc créé une nouvelle ressource Bitmap et j'ai mis le bitmap dedans. VC++ génère un .h et .rc, tout va bien ça compile. Seulement, je souhaite indiquer à une fonction DisplayBMP() non pas "c:\\toto.bmp", mais la ressource. Je fais donc MAKEINTRESOURCE(IDB_BITMAP1), ça compile, mais ça marche pas, le bitmap n'est pas afficher ! Help !

Reply

Marsh Posté le 20-01-2002 à 16:08:05   

Reply

Marsh Posté le 20-01-2002 à 16:48:18    

D'ou elle sort cette fonction DisplayBMP?

Reply

Marsh Posté le 20-01-2002 à 16:57:06    

Non non c juste un exemple ! Une fonction qui affiche un bmp et qui prend comme param un chemin d'accès ! Peut on changer ce chemin d'accès en MAKINTRESOURCE ?

Reply

Marsh Posté le 20-01-2002 à 16:58:34    

un fin LoadBitmap(..) + bitmap stocké dans les resources peut etre ?

Reply

Marsh Posté le 20-01-2002 à 16:59:49    

Ben ouais moi j'ai toujours appris a charger a partir des ressources; La révélation ca a été quand j'ai su comment charger des fichiers externes!

Reply

Marsh Posté le 20-01-2002 à 16:59:52    

mais la fonction que j'utilise (lib SDL) c'est pas loadbitmap...

Reply

Marsh Posté le 20-01-2002 à 17:11:10    

ben alors essaye avec LockResource, LoadResource & cie pour sortir ton BMP de l'exe, le sauver dans un endroit temporaire et le relire avec SDL
 
 
ca fait un peu foutoir, quand meme .....

Reply

Marsh Posté le 20-01-2002 à 17:13:21    

ben ouais, c vrai que créer un fichier externe temp, c pas top, enfin,...

Reply

Marsh Posté le 20-01-2002 à 17:22:11    

Ben déjà montre nous à quoi ressemble ta fonction DisplayBMP...c'est sans doute là que se trouve l'erreur!


---------------
Si t'es pas net, reste a la buvette
Reply

Marsh Posté le 21-01-2002 à 13:12:46    

le problème c pas ma fonction !
Elle est dans un .lib et je peux pas y toucher

Reply

Marsh Posté le 21-01-2002 à 13:12:46   

Reply

Marsh Posté le 21-01-2002 à 13:15:04    

si la fonction attend un nom de fichier tu dois lui donner un nom de fichier
 
la seule solution est de créer un fichier temporaire


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 21-01-2002 à 13:16:59    

Et bien voila comme ça c clair !
Merci à tous de m'avoir aidé
a+  :hello:  
ANT

Reply

Marsh Posté le 21-01-2002 à 17:01:36    

Non mais attendez la, c'est vraiment porc comme technique ca. Il y a un autre moyen simple d'afficher un bitmap contenu dans une ressource.

Reply

Marsh Posté le 21-01-2002 à 17:22:32    

oui mais si il veut utiliser sa fonction venant de son .lib il a pas trop le choix...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 21-01-2002 à 18:47:33    

Qui parle d'utiliser absolument cette fonction?

Reply

Marsh Posté le 21-01-2002 à 18:51:29    

ben tu proposes quoi ?

Reply

Marsh Posté le 21-01-2002 à 19:01:10    

// On suppose que hdc est un HDC correspondant a ta fenetre
 
HBITMAP hBitmp;
HDC hdcBitmap;
 
hBitmap = LoadBitmap(hdc, IDB_BITMAP);
hdcBitmap = CreateCompatibleDC(hdc);
SelectObject(hdcBitmap, hBitmap);
BitBlt(hdc, x, y, cx, cy, hdcBitmap, 0, 0, SRCCOPY);
DeleteObject(hdcBitmap)
DeleteObject(hBitmap)

Reply

Marsh Posté le 21-01-2002 à 21:06:00    

Le problème c'est que tout ça (fenêtre, etc) est géré par ma librairie SDL donc moi je m'occupe pas de ça ! Je fais un truc du genre Init() et ensuite je dessine dans la fenêtre ! Y a pas de HDC pas plus que de HWND (en tout cas je n'y ai pas accès !)

Reply

Marsh Posté le 21-01-2002 à 23:00:04    

C'est pas clair :)
 
Pour obtenir le HWND tu utilise SDL_GetWMInfo() de SDL_syswm.h. (Y doit y avoir un example sur le site de la SDL...). Mais je suis bonne poire :)
 
extern DECLSPEC int SDL_GetWMInfo(SDL_SysWMinfo *info);
et...miracle:
 
typedef struct {
 SDL_version version;
 HWND window;
} SDL_SysWMinfo;
 
Avec ca, tu peux avoir ton DC et faire ce que tu veux!

 

[edtdd]--Message édité par Willythekid--[/edtdd]


---------------
Si t'es pas net, reste a la buvette
Reply

Marsh Posté le 22-01-2002 à 19:52:28    

merci ! Et tu ne saurais pas par hasard comment mettre un bmp dans l'exe avec SDL ?

Reply

Marsh Posté le 22-01-2002 à 21:01:31    

Ben tu l'as pas fait avec les resources?? T'as pas créé une resource BMP dans VC++?? Ca n'a pas particulièrement de rapport avec la SDL:
1) tu crée la ressource et l'ajoute à l'exe lors de la compil
2) tu la load avec les fonctions de l'API Win32
3) tu l'affiche avec les fonctions de la SDL
 
Ton premier post laisse penser que c'est la piste que tu avais choisi!...
 
Au fait, pourkoi tu as chosi la SDL, si c'est pas pour faire du code portable?

 

[edtdd]--Message édité par Willythekid--[/edtdd]


---------------
Si t'es pas net, reste a la buvette
Reply

Marsh Posté le 23-01-2002 à 10:42:41    

si si tu as raison, mais peux tu me filerle code pour :
la Loader avec avec Win32 et l'afficher ?
L'afficher je sais comment faire mais la loader a partir des ressources et l'afficher ensuite je sais pas (c tout le topic ça !) merci

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed