Changement de toutes les couleurs dans une appli en MFC

cs_obby Messages postés 91 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 12 octobre 2006 - 29 juil. 2005 à 20:06
cs_obby Messages postés 91 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 12 octobre 2006 - 1 août 2005 à 13:19
Salut,



Je voudrai changer toutes les couleurs dans mon application. J'ai
déjà réussi à changer la couleur de fond d'une boite de dialogue mais
j'aimerai aussi peindre dans une couleur spécifique le fond de
l'application (qui est une MDI), le menu. Dans l'une de mes boites de
dialogues j'ai tous les statics qui restent avec un fond gris alors que
le reste a bien changer et que j'ai bien spécifié dans les propriété du
control qu'il était transparent. De plus j'ai des group box et je ne
sais pas si il est possible de mettre une autre couleur à l'interieur
de ces derniers en plus de ma couleur de fond.



merciiiii

8 réponses

SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013
29 juil. 2005 à 20:17
essaye en win32

case WM_CTLCOLORSTATIC:

{

SetTextColor((HDC)wParam,cTexte);

SetBkMode((HDC)wParam, TRANSPARENT);

return (BOOL)GetStockObject(NULL_BRUSH);

}



avec COLOREF cTexte = couleur du texte

marche pour texte check radio



Sinon pour les groupbox moi perso le seul moyen que j'ai trouvé c'est de passer par OWNERDRAW et de les redessiner totallement
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
29 juil. 2005 à 20:46
0
cs_obby Messages postés 91 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 12 octobre 2006
29 juil. 2005 à 22:49
J'arrive a dessiner le fond de ma dialog, mais pas a mettre un static
transparent (meme si je l'ai spécifié dans les propriétés lorsque l'on
crée graphiquement le static). Voila le code, peut etre que vous y
trouverez un bug





HBRUSH CDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)

{

HWND hBtn = ::GetDlgItem(this->GetSafeHwnd (), IDC_STATIC1);

::SetBkMode ((HDC)hBtn, TRANSPARENT);



HBRUSH hbr =
CDialogBar::OnCtlColor(pDC, pWnd, nCtlColor);




if(pWnd == this)

{

pDC->SetBkMode(TRANSPARENT);

return m_hBackGround;

}



return hbr;

}
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
30 juil. 2005 à 10:15
(HDC)hBtn, voila une première erreur
Si tu veux un DC du static, utilise GetDC, puis ReleaseDC pour libérer quand tu n'en a plus besoin.
Par contre, regarde si tu as vraiment intérêt à continuer à utiliser les MFC ici, car tu utilises les API globales. En MFC, logiquement tu ne manipules pas de HWND mais un CWnd*
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_obby Messages postés 91 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 12 octobre 2006
30 juil. 2005 à 11:04
le truc avec les MFC c'est que j'ai un soft qui est super conséquent
(je bosse dessus depuis un peu plus de 2 mois) je vais pas tout
recommencer ;)

Pour l'erreur du (HDC) hBtn, je l'ai vu après avoir posté le message dsl.
0
cs_obby Messages postés 91 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 12 octobre 2006
30 juil. 2005 à 12:18
j'ai réussi pour le static
(www.codeguru.com/Cpp/controls/editctrl/backgroundcolor/comments.php/c3929/?thread=48140),
je vais voir pour les autres controles.



@+
0
cs_obby Messages postés 91 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 12 octobre 2006
31 juil. 2005 à 18:13
Bon, finalement j'arrive à gérer la transparence des statics, slider et
autre contrôles grace la fonction OnCtlColor(...). Autre
problème, je veux remplir la zone constitué par des groupbox par une
autre couleur que celle de la boite de dialogue?
0
cs_obby Messages postés 91 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 12 octobre 2006
1 août 2005 à 13:19
dsl de encore posté un msg mais j'ai un gros problème. En fait, je
dessine ma dialogbar avec la couleur que je veu, les controles
transparents, etc... Sauf que ... la dialogbar devient grise
par moment (qd je pointe la souris sur la barre des taches par
exemple), et pour récupérer le dessin normal il faut que je double-clic
sur la dialog bar.

Est-ce que qqun sait d'ou cela vient?



Merci
0