Utiliser les ressources sous vc++ (avec directdraw)

Signaler
Messages postés
8
Date d'inscription
mercredi 22 septembre 2004
Statut
Membre
Dernière intervention
23 novembre 2004
-
Messages postés
8
Date d'inscription
mercredi 22 septembre 2004
Statut
Membre
Dernière intervention
23 novembre 2004
-
bonjour à tous,
voilà j'ai un probleme avec les p* de ressources de vc++.
J'ai des images en bmp que je veux inclure dans mon exe sachant que ces bitmaps sont utilisées par la fonction (ddraw) LoadImage () à laquelle on doit passer en parametre le nom complet du fichier sou forme de char* (path+nom fichier). Cela a pour consequence que si les fichiers changent de repertoire et bien le prog ne les affiche pas !!
Avez vous une solution à ce probleme SVP ?

personnellement je pense à 2 choses mais je ne sais pas si c'est possible :
- trouver une fonction qui me récupère le repertoire courant pdt l'éxécution => je mettrai les bmp dans le repertoire courant de l'exe (mais elles ne seront pas incluses dans l'exe :-( )
- ou bien je m'arrange pour faire marcher ces p* de ressources et je trouve un moyen de passer en parametre à Loadimage() les ID des bmp (ce serait plus simple)

Voilà pour mon probleme, merci de vos reponses et à +

PS : ne me mettez pas le lien msdn vers loadimage() svp, je le connais deja et n'y comprend rien. merci

2 réponses

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
- Avec les ressources :
importer le bitmap et lui associer un ID (IDB_BITMAP)
charger le bitmap avec LoadBitmap(hAppInstance, MAKEINTRESOURCE(IDB_BITMAP1);
hAppInstance : instance de l'app contenant les ressources (1er param de WinMain).

- avec des fichiers externes :
utiliser LoadImage avec LR_LOADFROMFILE dans les flags et le path complet.
pour récupérer le path de l'exe :
szPath[260];
GetModuleFileName(NULL, szPath, 260);
*strrchr(szPath, '\\') = '\0';
il suffit d'y concaténer les path relatif des bitmaps
Messages postés
8
Date d'inscription
mercredi 22 septembre 2004
Statut
Membre
Dernière intervention
23 novembre 2004

Merci ymca2003 j'y suis enfin arrivé avec ta methode n°2.

Sinon j'ai essayé la méthode n°1 avec cette ligne :

HBITMAP hbitmap = (HBITMAP)LoadImage(TheInstance,MAKEINTRESOURCE(BMP_ID),IMAGE_BITMAP,0,0,LR_SHARED);

mais ça ne marche pas : ça me fait bien un fichier .exe plus gros (+2 mo dûs à la bmp) mais ça rame au demarrage et il n'affiche rien ...

je me suis donc rabattu sur les fichiers externes lus lors de l'exécution. Pour la concaténation j'utilise :

sprintf(background_path,"%s\\%s",szPath,"background.bmp");

et il n'y a plus qu'à mettre les fichiers nécessaires dans le rep d'exécution

Merci, probleme résolu 8-)