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 :

couleur + bouton


Sujet :

MFC

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 25
    Points : 4
    Points
    4
    Par défaut couleur + bouton
    salut tout le monde,
    est ce que quelqu'un sait comment changer la couleur d'un bouton sous MFC ?
    Merci

  2. #2
    Membre habitué

    Inscrit en
    Mai 2005
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 132
    Points : 171
    Points
    171
    Par défaut
    Salut,

    C’est vraiment très facile. Il faut hériter une classe neuve par. ex. CMyButton de classe CButton et remplacer OnDraw avec

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    #define	my_color	RGB(100, 166, 177)	// votre couleur
     
    void CColorButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 
    {
    	// TODO: Add your code to draw the specified item
     
      UINT uStyle = DFCS_BUTTONPUSH;
     
      // This code only works with buttons.
      ASSERT(lpDrawItemStruct->CtlType == ODT_BUTTON);
     
      // If drawing selected, add the pushed style to DrawFrameControl.
      if (lpDrawItemStruct->itemState & ODS_SELECTED)
        uStyle |= DFCS_PUSHED;
     
      CDC *mdc = CDC::FromHandle (lpDrawItemStruct->hDC);
     
      // Draw the button frame.
      ::DrawFrameControl(lpDrawItemStruct->hDC, &lpDrawItemStruct->rcItem, DFC_BUTTON, uStyle);
     
      CRect mr = &lpDrawItemStruct->rcItem;
      mr.DeflateRect ( 2, 2 );
      mdc->FillSolidRect ( mr, my_color);
     
      COLORREF mb = RGB (0,0,0);
      #define MC  85
      if ( ( .31 * GetRValue (my_color) + .51 * GetGValue (my_color) + .18 * GetBValue (my_color)) < MC)
        mb = RGB (255,255,255);
     
      // Get the button's text.
      CString strText;
      GetWindowText(strText);
      if ( !strText.IsEmpty () )
      {
        // Draw the button text using the text color red.
        COLORREF crOldColor = ::SetTextColor(lpDrawItemStruct->hDC, mb);
     
        ::DrawText(lpDrawItemStruct->hDC, strText, strText.GetLength(), 
          &lpDrawItemStruct->rcItem, DT_SINGLELINE|DT_VCENTER|DT_CENTER);
     
        ::SetTextColor(lpDrawItemStruct->hDC, crOldColor);
      }
    }
    Quand vous créez un bouton, if faut le créer de CMyButton avec le style « Owner draw ».
    J’espère que vous comprendrez bien, ce que j’ai voulu dire, parce que pour moi c’est difficile l’explique en français.

    Petr
    [Merci de penser a la balise de code ,Farscape]

  3. #3
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757

  4. #4
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 42
    Points : 39
    Points
    39
    Par défaut
    Bonjour,
    j'ai eu le même problème, et j'ai appliqué cette solution mais mon bouton à un texte sur plusieurs lignes !
    Quand j'enlève DT_SINGLELINE du :rawText, mon texte ne se centre plus verticalement. Je n'arrive pas à le centrer correctement ??

    Quelqu'un sais comment faire ?

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Citation Envoyé par MSDN
    DT_VCENTER Centers text vertically. This value is used only with the DT_SINGLELINE value.
    J'ai bien peut que ça ne soit pas possible ainsi...

    Peut-être avec une fonction de la famille de GetTextExtentPoint32() pour connaitre la hauteur du texte, et ainsi savoir à quelle ordonnée l'afficher?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. [FLASH 8] Changer couleur bouton en AS
    Par jbidou88 dans le forum Flash
    Réponses: 3
    Dernier message: 18/04/2007, 11h10
  2. couleur Bouton selon variable d'url
    Par hisy dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/04/2006, 10h23
  3. [VBA-E] Nom et couleur bouton fonction d'une cellule
    Par zouille dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/04/2006, 17h00
  4. [VB.NET] [débutant] couleur bouton + click .
    Par Amenos dans le forum Windows Forms
    Réponses: 2
    Dernier message: 10/03/2006, 10h55
  5. Couleur Bouton
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 12/01/2006, 14h15

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