Mettre un .bmp dans l'exe [Visual C++] - Programmation
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 ?
Marsh Posté le 20-01-2002 à 16:58:34
un fin LoadBitmap(..) + bitmap stocké dans les resources peut etre ?
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!
Marsh Posté le 20-01-2002 à 16:59:52
mais la fonction que j'utilise (lib SDL) c'est pas loadbitmap...
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 .....
Marsh Posté le 20-01-2002 à 17:13:21
ben ouais, c vrai que créer un fichier externe temp, c pas top, enfin,...
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!
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
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
Marsh Posté le 21-01-2002 à 13:16:59
Et bien voila comme ça c clair !
Merci à tous de m'avoir aidé
a+
ANT
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.
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...
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)
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 !)
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]
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 ?
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]
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
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 !