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:
Mais aucun changements à lieu au niveau de mon CStatic quand jl'exécute l'application...Pourquoi?
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);![]()
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?
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 ?
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; }
Je suis un peu perdu pour savoir ce qui faut utiliser exactement pour arriver à mes fins.
Merci![]()
Nicolas
Partager