IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[MFC] image sur un bouton


Sujet :

MFC

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 28
    Points : 30
    Points
    30
    Par défaut [MFC] image sur un bouton
    Salut , j'utilise visual studio .net 2003 et les MFC.

    j'utilise ce bout de code pour afficher une iamge sur un bouton et ça marche bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    HWND hBouton = ::GetDlgItem(this->m_hWnd,IDC_BUTTON1);
        this->hImage = ::LoadImage(this->hInst,MAKEINTRESOURCE(IDB_FONT),
     
    IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);
     
        ::SendMessage(hBouton, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)(HANDLE)hImage);
    Le soucis est que j'utilise une image dans les ressources et vu que j'arrive pas à mettre une .bmp dans les ressources j'aimerais loader une image avec son PATH. J'ai une classe CPicture qui fait ça mais j'arrive pas à faire le lien entre le code au dessus et la classe CPicture. J'utilise la classe CPicture pour mettre une image en fond d'une CDialog en fait. Après j'ai trouvée une fonction sur ce site qui load une image :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    HBITMAP CYEPDlg::LoadAnImage(char* FileName)
     {
         WCHAR wpath[MAX_PATH];
         MultiByteToWideChar(CP_ACP, 0, FileName, -1, wpath, MAX_PATH);
     
         IPicture* pPic;
         OleLoadPicturePath(wpath, NULL, NULL, NULL, IID_IPicture,(LPVOID*)&pPic);
     
     
         HBITMAP hPic = NULL;
         pPic->get_Handle((UINT*)&hPic);
     
            HBITMAP hPicRet = (HBITMAP)CopyImage(hPic, IMAGE_BITMAP, 0, 0, LR_COPYRETURNORG);
     
            pPic->Release();
     
     
         return hPicRet;
     }
    mais la ligne soulignée fait planté le programme.
    Si quelqu'un pouvait m'aider svp !! En gros j'aimerais mettre une image sur un bouton l'image n'étant pas dans les ressources . Merci par avance !
    [a l'avenir utilise la balise code ,Merci Farscape]

  2. #2
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut
    c'est quoi comme type dans ton premier code this->hImage
    Qui va piano va sano...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 28
    Points : 30
    Points
    30
    Par défaut
    ouais j'avais oublié de précisé que hImage est de type HANDLE

  4. #4
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut
    ben je pense que tu peut caster ton HBITMAP en handle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    HBITMAP hBmp = LodAnImage("C:\\Test.bmp");
     
      ::SendMessage(hBouton, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)(HANDLE)hBmp );
    Qui va piano va sano...

  5. #5
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut Re: [MFC] image sur un bouton
    Citation Envoyé par mfrai02
    ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    HBITMAP CYEPDlg::LoadAnImage(char* FileName)
     {
         WCHAR wpath[MAX_PATH];
         MultiByteToWideChar(CP_ACP, 0, FileName, -1, wpath, MAX_PATH);
     
         IPicture* pPic;
         OleLoadPicturePath(wpath, NULL, NULL, NULL, IID_IPicture,(LPVOID*)&pPic);
     
     
         HBITMAP hPic = NULL;
         pPic->get_Handle((UINT*)&hPic);
     
            HBITMAP hPicRet = (HBITMAP)CopyImage(hPic, IMAGE_BITMAP, 0, 0, LR_COPYRETURNORG);
     
            pPic->Release();
     
     
         return hPicRet;
     }
    mais la ligne soulignée fait planté le programme.
    ...
    Quelle ligne ?
    Qui va piano va sano...

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 28
    Points : 30
    Points
    30
    Par défaut
    C'est à cette ligne : pPic->get_Handle((UINT*)&hPic);

    Merci pour la réponse au dessus , le problème maintenant c'est LoadAnImage en fait . Je vais mettre un lien où je l'ai trouvé .

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 28
    Points : 30
    Points
    30
    Par défaut
    Bon ben finalement ça marche et loadAnImage plante plus Merci infiniment

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. mettre une image sur un bouton de commande
    Par delamarque dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 05/01/2006, 20h18
  2. [MFC] Pb sur un bouton
    Par spirit_1999 dans le forum MFC
    Réponses: 13
    Dernier message: 15/06/2005, 13h38
  3. [wxpython][wx.frame] mettre une image sur un bouton
    Par Kyti dans le forum wxPython
    Réponses: 7
    Dernier message: 02/05/2005, 12h13
  4. [JBouton] Comment mettre une image sur un bouton ?
    Par Kyti dans le forum Composants
    Réponses: 6
    Dernier message: 11/03/2005, 16h08
  5. [MFC] Boucle sur un bouton
    Par karl3i dans le forum MFC
    Réponses: 6
    Dernier message: 17/02/2004, 11h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo