Couleur de fond boite de dialogue[MFC]

Signaler
Messages postés
7
Date d'inscription
jeudi 29 mai 2008
Statut
Membre
Dernière intervention
21 juin 2012
-
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
-
niveau: débutant. C++/MFC

Bonjour, j'aurais aimé savoir comment changer la couleur de fond d'une boite de dialogue.
J'ai réussi à gérer les couleurs avec les EditBox et les textes static en utilisant CTLCOLOR_STATIC et CTLCOLOR_EDIT. J'ai voulu faire la même chose avec CTLCOLOR_DLG mais visiblement ça ne marche pas pareil. Sur un tuto j'ai vu une méthode en interceptant WM_ERASEBKGND  mais je n'ai pas trouvé de WM_ERASEBKGND.
Voici la façon dont je procède avec les editbox et les statics. Comment ça marche pour la boite de dialogue?
HBRUSH CPgmdenettoyageDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>

{

                HBRUSH hbr;

switch (nCtlColor)

  {

case CTLCOLOR_STATIC:

    switch (pWnd->GetDlgCtrlID())

    {

    case IDC_STATICFILE:

      pDC->SetBkMode(TRANSPARENT); //Mode transparent

      pDC->SetTextColor(m_whitecolor)); // Couleur texte

      hbr = (HBRUSH) m_bluebrush;   // couleur de fond

      break;

    // otherwise, do default handling of OnCtlColor

    default:

      hbr=CDialog::OnCtlColor(pDC,pWnd,nCtlColor);

    }

    break;

  // otherwise, do default handling of OnCtlColor

  default:

    hbr=CDialog::OnCtlColor(pDC,pWnd,nCtlColor);

  }

                // TODO: Return a different brush if the default is not desired

                return hbr;

}

1 réponse

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
Il faut simplement retourner le HBRUSH voulu directement:
case CTLCOLOR_STATIC:
        //...
case CTLCOLOR_DLG:
        return m_bluebrush;