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 :

CBitmapButton et fond transparent


Sujet :

MFC

  1. #1
    Membre confirmé Avatar de gabule
    Inscrit en
    Avril 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 139
    Par défaut CBitmapButton et fond transparent
    Salut a tous,
    j'ai une appli MFC avec des CBitmapButton. Ces CBitmapButton ont un fond gris mais suivant le theme de bureau de pc le fond se voit.
    Alors ma question est comment faire que ce fond soit transparent ?

    Merci

  2. #2
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Bonjour,

    J'ai trouvé ça en faisant une recherche : http://www.developpez.net/forums/showthread.php?t=94819.
    Tu devrais trouver réponse à ta question.

  3. #3
    Membre confirmé Avatar de gabule
    Inscrit en
    Avril 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 139
    Par défaut
    J'ai essayé mais ca me marche pas....
    Ca me marque que transparentBitmapButton n'a pas de contructeur.

  4. #4
    Membre confirmé Avatar de gabule
    Inscrit en
    Avril 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 139
    Par défaut
    j'essaye d'utiliser le code que FireJoker a donné en lien pour mettre un arrière plan transparent sur un CbitmapButton.

    Quand je l'utilise, je remplace
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     CTransparentBitmapButton Image;
    et le compilo gueule et me dit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error C2512: 'CTransparentBitmapButton' : aucun constructeur par défaut approprié disponible
    La reponse est assez explicite mais comment utiliser ce code alors ? parce qu'il est censé marcher

  5. #5
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Je ne connais pas du tout cette classe CTransparentBitmapButton proposée par Firejocker, mais as-tu essayé de rajouter un constructeur par défaut à cette classe, qui ne ferait rien d'autre qu'appeler le constructeur par défaut de la classe mère CBitmapButton ?
    Car de toute façon, à moins que tu construises tes boutons sans utiliser les ressources, ce n'est pas le constructeur qui compte mais la méthode PreSubclassWindow.

  6. #6
    Membre confirmé Avatar de gabule
    Inscrit en
    Avril 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 139
    Par défaut
    ben en fait il y est deja

  7. #7
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Et il est public ?
    Tu n'as pas oublié l'include de TransparentBitmapButton.h ?
    Sinon, je ne vois pas d'où ce message d'erreur peut venir...

  8. #8
    Membre confirmé Avatar de gabule
    Inscrit en
    Avril 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 139
    Par défaut
    malheureusement pour moi, oui il est public et j'ai bien inclus le header
    J'espere que FireJoker va me repondre ...

  9. #9
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Si par hasard tu as mis la classe CTransparentBitmapButton dans une dll distincte de ton projet, il ne faut pas oublier de l'exporter...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class __declspec(dllexport) CTransparentBitmapButton : public CBitmapButton

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 32
    Par défaut
    Est ce qu'il ne manque pas dans le constructeur de la classe contenant CTransparentBitmapButton Image;
    un appel au constructeur CTransparentBitmapButton ?

  11. #11
    Membre confirmé Avatar de gabule
    Inscrit en
    Avril 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 139
    Par défaut
    Bon alors un collegue ma donné la reponse.

    Alors ....
    1/ ButtonTransparent.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #ifdef BUTTONBAR_IMPLEMENT
    HBITMAP __declspec(dllexport) CreateGrayScaleBitmap(HDC hDC, HBITMAP hBmp);
    DWORD __declspec(dllexport) DrawTransparentBitmap(HDC hdc, HBITMAP hBitmap, BITMAP *pbm, long xStart, long yStart, COLORREF *pcTransparentColor = NULL);
    #else
    HBITMAP __declspec(dllimport) CreateGrayScaleBitmap(HDC hDC, HBITMAP hBmp);
    DWORD __declspec(dllimport) DrawTransparentBitmap(HDC hdc, HBITMAP hBitmap, BITMAP *pbm, long xStart, long yStart, COLORREF *pcTransparentColor = NULL);
    #endif
     
    #endif
    2/ dans XXXdlg.cpp
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    #include "ButtonTransparent.h"
     
    CButtonTranparent::CButtonTranparent(UINT uiBmp)
    {
      AFX_MANAGE_STATE(AfxGetStaticModuleState());
     
      m_bmp.Attach(::LoadImage(AfxGetResourceHandle(), MAKEINTRESOURCE(uiBmp), IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE|LR_LOADMAP3DCOLORS));
      m_bmp.GetBitmap(&m_bitmap);
    }
     
    /*virtual*/ CButtonTranparent::~CButtonTranparent()
    {
    }
     
    /*virtual*/ void CButtonTranparent::DrawItem(LPDRAWITEMSTRUCT lpDIS)
    {
      CDC *pDC = GetDC();
      HBITMAP hBitmap = (HBITMAP)m_bmp.m_hObject;
      BITMAP *pbmp = &m_bitmap;
     
      DrawTransparentBitmap(pDC->m_hDC, hBitmap, pbmp, 0, 0);
     
      ReleaseDC(pDC);
    }
     
    // et enfin l'appel pour avoir ce bt transparent et ayant bien sur auparavent mis notre image "IDBIMAGE" dans les resoureces et lui avoir attribué la variable "IDC_image"
     
    XXXDlg::XXXDlg(CWnd* pParent)
    : CDialog(XXXDlg::IDD, pParent), IDC_image(IDB_IMAGE)
    {
    	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    }
    Voila, merci de votre aide a tous

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 13/10/2005, 15h00
  2. Image avec fond transparent
    Par Virgile59 dans le forum Access
    Réponses: 3
    Dernier message: 16/09/2005, 11h48
  3. Rendre le fond transparent dans une picturebox
    Par fun31 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/01/2005, 18h17
  4. Image GIF a fond transparent dans un formulaire ?
    Par Coquelicot dans le forum IHM
    Réponses: 4
    Dernier message: 25/10/2004, 12h08
  5. [JButton] avec un fond transparent
    Par Tiercel dans le forum Composants
    Réponses: 6
    Dernier message: 23/09/2004, 09h19

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