LoadImage et MAKEINTRESOURCE comment ça marche ? [Résolu]

cs_supergrey 475 Messages postés vendredi 27 juin 2003Date d'inscription 20 septembre 2010 Dernière intervention - 14 avril 2008 à 17:16 - Dernière réponse : cs_supergrey 475 Messages postés vendredi 27 juin 2003Date d'inscription 20 septembre 2010 Dernière intervention
- 16 avril 2008 à 09:02
Bonjour, je voudrais afficher une image provenant des ressources dans une boite de dialogue.
Dans un premier temps je l'ai fait avec une image local (donc pas en ressources), tout fonctionnait bien mais la j'ai besoin de mettre cette image en ressources et elle ne s'affiche pas,
voila ce que j'ai fait:

//fichier .rc
resmonimage                BITMAP    DISCARDABLE     "monimage.bmp"

//mon programme
HB=(HBITMAP)LoadImage(g_hInst, MAKEINTRESOURCE(resmonimage), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADMAP3DCOLORS);

Est-ce qu'il faut déclarer quelque chose d'autre ?

Merci
Afficher la suite 

Votre réponse

20 réponses

Meilleure réponse
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 15 avril 2008 à 22:26
3
Merci
Si tu veux etre sûr, tu remplaces ton g_hInst par GetModuleHandle(0)

_____________________________________
Un éditeur de ressources gratuit pour Windows

Merci vecchio56 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de vecchio56
cs_jfrancois 482 Messages postés vendredi 26 août 2005Date d'inscription 5 décembre 2009 Dernière intervention - 14 avril 2008 à 17:37
0
Merci
Bonjour,

"resmonimage" est une constante ou une chaîne de caractères ?

Jean-François
Commenter la réponse de cs_jfrancois
Neo_Fr 653 Messages postés mardi 6 décembre 2005Date d'inscription 10 novembre 2014 Dernière intervention - 14 avril 2008 à 17:43
0
Merci
Salut,
Essaye en remplacant MAKEINTRESOURCE(resmonimage) par (LPCTSTR)resmonimage
ou encore (LPCTSTR)"resmonimage", sinon ca peut etre aussi a cause du flag
LR_LOADMAP3DCOLORS:
"Do not use this option if you are loading a bitmap with a color depth greater than 8bpp."

Neo_Fr
Commenter la réponse de Neo_Fr
SAKingdom 3213 Messages postés lundi 7 novembre 2005Date d'inscription 16 février 2009 Dernière intervention - 14 avril 2008 à 17:46
0
Merci
Ou encore de LR_CREATEDIBSECTION qui fait retourner une section DIB au lieu d'un HBITMAP

C++ (@++)<!--
Commenter la réponse de SAKingdom
cs_supergrey 475 Messages postés vendredi 27 juin 2003Date d'inscription 20 septembre 2010 Dernière intervention - 14 avril 2008 à 18:02
0
Merci
Bon, j'ai esayé un peu toutes vos propositions mais toujours pas... donc procédons par élimination, sachant que mon image se charge bien lorsque je n'utilise pas les ressources on peut mettre de coté les probleme avec LR_LOADMAP3DCOLORS et LR_CREATEDIBSECTION
Pour la question sur resmonimage je suppose que c'est une constante puisque je fais :   resmonimage BITMAP    DISCARDABLE     "monimage.bmp" dans mon fichier .rc non ?
Donc il ne reste plus grand chose, est-ce qu'il faut mettre quelque chose dans resources.h ?

supergrey
Commenter la réponse de cs_supergrey
SAKingdom 3213 Messages postés lundi 7 novembre 2005Date d'inscription 16 février 2009 Dernière intervention - 14 avril 2008 à 18:18
0
Merci
Tu veux dire : si il faut ajouter quelque chose à resources.h ?

Normalement non.

C++ (@++)<!--
Commenter la réponse de SAKingdom
cs_magma 198 Messages postés vendredi 4 avril 2003Date d'inscription 18 mars 2011 Dernière intervention - 14 avril 2008 à 18:25
0
Merci
hBitmap = LoadImage(g_hInst, "resmonimage" ,IMAGE_BITMAP, 0, 0, 0);
Commenter la réponse de cs_magma
cs_jfrancois 482 Messages postés vendredi 26 août 2005Date d'inscription 5 décembre 2009 Dernière intervention - 14 avril 2008 à 18:25
0
Merci
On peut utiliser un identificateur numérique (une constante) ou un identificateur textuel (chaîne de caractères)

1) Avec identificateur = constante :
- Fichier des identificateurs toto.hpp contenant :
  #define resmonimage 1000
- Fichier des ressources toto.rc contenant :
  #include <toto.hpp>
  ...
  resmonimage BITMAP DISCARDABLE "monimage.bmp"
- Fichier du programme toto.cpp contenant :
  #include <toto.hpp>
  ...
  HB=(HBITMAP)LoadImage(g_hInst,MAKEINTRESOURCE(resmonimage),IMAGE_BITMAP,0,0,0);

2) Avec identificateur = chaîne de caractères :
- Fichier des ressources toto.rc contenant :
  "resmonimage" BITMAP DISCARDABLE "monimage.bmp"
- Fichier du programme toto.cpp contenant :
  HB=(HBITMAP)LoadImage(g_hInst,(LPCTSTR)"resmonimage",IMAGE_BITMAP,0,0,0);

Jean-François
Commenter la réponse de cs_jfrancois
cs_supergrey 475 Messages postés vendredi 27 juin 2003Date d'inscription 20 septembre 2010 Dernière intervention - 14 avril 2008 à 18:38
0
Merci
Bon, j'ai essayé les deux méthodes et toujours pas, Loadimage renvoi toujours 0...
Commenter la réponse de cs_supergrey
cs_jfrancois 482 Messages postés vendredi 26 août 2005Date d'inscription 5 décembre 2009 Dernière intervention - 14 avril 2008 à 18:42
0
Merci
L'image est dans le bon répertoire ? Entre le chargement à l'exécution comme avant et le chargement dans les ressources à la compilation, il peut y avoir une différence !

Jean-François
Commenter la réponse de cs_jfrancois
cs_jfrancois 482 Messages postés vendredi 26 août 2005Date d'inscription 5 décembre 2009 Dernière intervention - 14 avril 2008 à 18:43
0
Merci
Quoique ! dans ce sens là le compilateur devrait signaler qu'il ne trouve pas l'image.

Jean-François
Commenter la réponse de cs_jfrancois
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 14 avril 2008 à 18:53
0
Merci
Dans le cas de l'identifiant non numérique, les quotes sont de trop:

resmonimage BITMAP DISCARDABLE "monimage.bmp"

_____________________________________
Un éditeur de ressources gratuit pour Windows
Commenter la réponse de vecchio56
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 14 avril 2008 à 18:55
0
Merci
Question bête, mais l'éditeur de liens prend bien en compte tes ressources?

_____________________________________
Un éditeur de ressources gratuit pour Windows
Commenter la réponse de vecchio56
cs_jfrancois 482 Messages postés vendredi 26 août 2005Date d'inscription 5 décembre 2009 Dernière intervention - 14 avril 2008 à 19:06
0
Merci
Autre question bête ! est-ce que g_hInst est bon ? Il ne servait à rien avec un fichier.

Jean-François
Commenter la réponse de cs_jfrancois
cs_supergrey 475 Messages postés vendredi 27 juin 2003Date d'inscription 20 septembre 2010 Dernière intervention - 15 avril 2008 à 20:40
0
Merci
Ben mince, j'ai répondu hier rrr! Bon donc je disais que le compilateur trouve bien l'image donc ce n'est pas un probleme de chemin, il n'y a pas de quote autour de resmonimage (j'ai essayé les deux methode), les ressources sont bien prise en compte, par exemple la fonction directx D3DXCreateTextureFromResource charge très bien d'autres images, et g_hInst est bon puisque ça fonctionnait sans passer par les resources...
Commenter la réponse de cs_supergrey
cs_supergrey 475 Messages postés vendredi 27 juin 2003Date d'inscription 20 septembre 2010 Dernière intervention - 15 avril 2008 à 20:53
0
Merci
Sinon, si je crée directement la boite dans les ressources ça marchera peut etre, le problème c'est que j'ai express donc je n'est pas d'éditeur de ressource donc pour créer la boite je devrais pouvoir me débrouiller mais pour l'image je ne sais pas la syntaxe à utiliser.
Commenter la réponse de cs_supergrey
cs_jfrancois 482 Messages postés vendredi 26 août 2005Date d'inscription 5 décembre 2009 Dernière intervention - 15 avril 2008 à 21:02
0
Merci
... et g_hInst est bon puisque ça fonctionnait sans passer par les resources...


Justement quand on par les ressources, l'instance ne sert à rieng_hInst est bien valide !

PS: Effectivement pas de quotes autour de resmonimage dans le fichier des ressources ! encore un dégât du copier/coller.

Jean-François
Commenter la réponse de cs_jfrancois
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 15 avril 2008 à 21:10
0
Merci
Pour créer des boîtes de dialogues avec VC++ express, tu peux utiliser l'outil dont le lien est ci-après

_____________________________________
Un éditeur de ressources gratuit pour Windows
Commenter la réponse de vecchio56
cs_supergrey 475 Messages postés vendredi 27 juin 2003Date d'inscription 20 septembre 2010 Dernière intervention - 15 avril 2008 à 22:14
0
Merci
Merci pour resedit j'avais déjà cherché sans trouvé, il a l'air très bien, bon pour l'instant je n'arrive pas à insérer une image mais je vais bien finir par trouver...
Pour le g_hInst donc il ne servait à rien sans utiliser les ressources mais ça marchait quand meme, et la il sert mais il est bon donc le probleme vient d'ailleur si j'ai tout compris.
Commenter la réponse de cs_supergrey
cs_supergrey 475 Messages postés vendredi 27 juin 2003Date d'inscription 20 septembre 2010 Dernière intervention - 16 avril 2008 à 09:02
0
Merci
Alleluia ! Avec GetModuleHandle(0) ça marche, en fait j'étais assez sûr du g_hInst car il était créé par l'appwizard de directx et tout le programme s'en sert mais le g_hInst=hinstance (dans le winmain) se faisait juste après l'initialisation dans laquelle je créais ma boite de dialogue, je l'ai changé de place maintenant ça fonctionne.
Donc merci à tous !
Commenter la réponse de cs_supergrey

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.