Bonjour.
Comment puis-je changer la couleur de l'arriere plan d'un element appartennant a la classe CStatic.
J'aimerais mettre un arriere plan rouge mais je ne trouve pas la fonction qu"il me faut .
Bonjour.
Comment puis-je changer la couleur de l'arriere plan d'un element appartennant a la classe CStatic.
J'aimerais mettre un arriere plan rouge mais je ne trouve pas la fonction qu"il me faut .
Salut,
une solution est de récupérer le fond associé à ta CStatic (méthode GetFont), le modifier.
T'as plus qu'à appeler la fonction SetFont pour associer le nouveau fond à ton static.
Ou créer directement un fond comme tu le veux (méthode CreateFontIndirect) et tu l'associes à ta CStatic.
Y'a aussi certainement une autre méthode mais l'avantage de celle ci est qu'elle marche pour tous les contrôles qui héritent de CWnd. Donc une fois que tu la comprise, tu peux changer des fonds dans des CEdit, des CTreeCtrl...
Merci beaucoup cra cela va bien me servir je te remerci pour ton aide
Bonjour,
Y'a confusion, je crois!!!
GetFont, CreateFont...... et les autres c'est pour modifier la police(Font (traduction) police).
Exemple ici :Comment changer la couleur de fond d'un dialogue ? d'un contrôle en particulier ? la couleur du texte ?
http://www.lafaqmfc.com/dialogs.htm
Bonjour James.
Ton information est peut être très utile mais je ne voit pas comment l'utiliser peut tu m'aider S.V.P.
MErci d'avance.![]()
Je vais essayer!!!
j'ai repris la fonction de la FAQ:
tu dois surcharger cette fonction, c'est à dire la modifier pour ton 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 HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hBrush = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); switch (nCtlColor) { case CTLCOLOR_STATIC : // pour les statics if ( pWnd->GetDlgCtrlID () == IDC_MONSTATIC ) { // seulement pour le static que tu veux modifier pDC->SetTextColor (RGB(128,0,0)); // texte rouge fonce pDC->SetBkColor (RGB(0,0,0)); // fond noir } ; break ; default: break; } ; return hBrush ; }
Click droit->Class Wizard->Messages Maps
tu choisis ton dialogue dans object ID's( un truc du genre CMonDialogueDlg), ensuite dans Messages, tu selectionnes WM_CTLCOLOR et Add Function.
Il te suffit de copier du dessus à l'intérieur
Pour les couleurs, http://www.immigration-usa.com/html_colors.html
Voila
Bon courage
Merci pour cela mais je vais encore t'embetter mais comment puis-je recupérerj'ai créer une biote de dialoque avec MFCAPPWisard(.EXE)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 CDC* pDC
mais je ne voit pas cette déclaration apparaître.
Peut-tu m'aider
Merci d'avance.
Normalement, c'est un argument de la fontion qui est connu lors du passge dans cette fonction, tu n'as rien à modifier!!!
Il faut créer la methode avec le ClassWizard, il te fait tout, tout seul
suis ce que j'ai écris plus haut
Voila
Mon problème est qu'il faut bien appeller cette fonction.
de cette manierele probleme est que je ne sait quoi lui donné en premier paramêtre pour les autres j'ai trouvé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part st1->OnCtlColor((CDC*) pDC,GetParent ( ) , CTLCOLOR_STATIC);
Non,tu n'as pas besoin de l'appeler. tu y passes forcement au demarrage de ton appli.
Maintenant si tu veux changer en cours de prog. la couleur de ton static, tu peux recuperer le CDC de ta boite de dialogue avec GetWindowDC();
tu fais un appel de ce genre
OnCtlColor(GetWindowDC(), this, CTLCOLOR_STATIC);
J'ai plusieur static dans ma classe puis-je avoir plusieur couleur différentes suivant le static ?
si oui on le spéecifie dans le switch de la fonction non ?
peut etre en surchargeat la fonction en lui faisant prendre l'id du static:
Dans l'exemple de code que je t'ai donné, il y a ce cas là, je veux bien t'aider mais il faut mettre un peu du tien!!!!!!![]()
James je ne te dérange plus maintenant car j'ai trouvé la solution et je te remercie pour toutes l'aide que tu m'as donnée car désormais je pense que tout mes problèmes vont être résolue grâce à l'aide que tu m'as donné
MERCI encire pour tout et bonne continuation
Gabriel Knight
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager