Bonjour,

Je cherche à pouvoir modifier la couleur et le fond d'un control CStatic.

Pour cela, j'utilise la fichier .h décrit dans la FAQ, le sujet étant:
Comment gérer la couleur sur un contrôle CStatic ou CEdit ?

Dans la fonction OnInitDialog, je fais ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
CTplCtrl<CStatic> m_WelcomeCtrl;
	COLORREF RGB1 = 0x0000ff00;
	COLORREF RGB2 = 0x000000ff;
 
	m_WelcomeCtrl.SetBkColor(RGB1,RGB2);
Mais aucun changements à lieu au niveau de mon CStatic quand jl'exécute l'application...Pourquoi?

Est il possible d'utiliser la fonction CtlColor() pour rendre transparent le fond de mon CStatic afin de bien se superposer avec l'image en fond de ma CDialog?

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
HBRUSH CtlColor(CDC* pDC, UINT nCtlColor)
    {
        bool bCEdit=(IsKindOf(RUNTIME_CLASS(CEdit))?true:false);
        HBRUSH hbr=NULL;
        ModeColor eMode=Normal;
        if(GetStyle() & ES_READONLY) eMode=ReadOnly;
        if(!IsWindowEnabled()) eMode=Disable;
 
        // TODO: Change any attributes of the DC here
        pDC->SetTextColor(m_arClrCtlText[eMode]);
 
        // Fixe le fond en transparent  pour le texte
        if(!bCEdit) pDC->SetBkMode(TRANSPARENT);
        else pDC->SetBkColor(m_arClrCtlBkText[eMode]);
 
        // retourne le handle de la brush pour le fond si il existe.
        if(m_arHbrClrCtlBk[eMode]) hbr = m_arHbrClrCtlBk[eMode]; 
 
        // TODO: Return a different brush if the default is not desired
        return hbr;
    }
Peut être vaut il mieux utiliser le sujet suivant de la FAQ: Comment changer la couleur de fond des contrôles dans une boîte de dialogue ?

Je suis un peu perdu pour savoir ce qui faut utiliser exactement pour arriver à mes fins.

Merci

Nicolas