Bonjour !
Décidément, c'est vraiment pas joli les couleurs Windows !!
Bon alors après un Progress bar, comment peut-on changer la couleur d'un TabCtrl, (plus précisement un XTabCtrl) sans changer les couleurs de Windows ????
Version imprimable
Bonjour !
Décidément, c'est vraiment pas joli les couleurs Windows !!
Bon alors après un Progress bar, comment peut-on changer la couleur d'un TabCtrl, (plus précisement un XTabCtrl) sans changer les couleurs de Windows ????
salut,
oui intercepte le message WM_ERASEBKGND
:DCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 BOOL XTabCtrl::OnEraseBkgnd(CDC* pDC) { // TODO: Add your message handler code here and/or call default CBrush backBrush(m_crBackColor);//COLORREF CBrush *pOldBrush=pDC->SelectObject(&backBrush); CRect rect; pDC->GetClipBox(&rect); pDC->PatBlt(rect.left,rect.top,rect.Width(),rect.Height(),PATCOPY); pDC->SelectObject(pOldBrush); return TRUE; }
Et comment j'accède à ce Message ?? Pke ClassWizard ne me le propose pas...
Je fais certainement pas comme il faut... Alors comment dois-je faire ?
voir faq:
http://c.developpez.com/faq/vc/?page...dMessageFilter
dans ton cas mets windows
:D
ça ne marche pas... :cry:
Alors j'ai bien ajouté le message WM_ERASEBKGND, mais ça fait rien...
Je détaille un peu... :roll:
J'ai une classe CXTabCtrl qui dérive d'une classe tabctrl, elle même derive de CTabCtrl. J'ai intercepté le message WM_ERASEBKGND de la classe tabctrl et collé le code plus haut... :?
Et résultat, ça change pas de couleur... :cry:
tu as declaré une variable m_crBackColor de type COLORREF ?
et quelle valeur tu lui as mis ?
tu passes en debug dans la fonction?
:D
En fait, à la place de m_crBackColor, j'utilise la fonction RGB, avec 243,244,247 comme attributs.
ok
et tu passes en debug dans la fonction ?
:D
un petit oubli de ma part ,il faudra faire de meme pour les differentes dialogues composant tes onglets.
:D
Ok alors pour le Débug, je ne passe pas dans la fonction...
Par contre, pour les dialogue qui composent mes onglets, c'est réglé, j'ai la fonction OnCtlColor qui est lancée pour chaque dialogue de l'onglet. Donc le résultat que j'ai, c'est des onglets gris, le contenu blanc(243,244,247) et le contour de l'onglet en gris... Tu vois ce que je veux dire ??
C’est pas normal .
Tu dois avoir dans ton BEGIN_MESSAGE_MAP de cette classe
La ligne ON_WM_ERASEBKGND() c’est le cas ?
:D
Alors j'ai bien la ligne On_WM_ERASEBKGND(), par contre, je ne l'ai peut etre pas pour la bonne classe.
J'utilise un CXtabCtrl qui est dérivé de tabctrl, et c'est dans ce tabctrl que j'ai le message WM_ERASEBKGND.
Voila le résultat que j'ai :
http://deedier.x.free.fr/Onglet.JPG
Le blanc que j'ai dans l'onglet, je l'obtient grace à la fonction, OnCtlColor du Dialog client, mais j'ai toujours le tour du dialog en gris...
ça y est, ça marche...Le boulet dasn l'histoire CT moi...
Bon alors le code cité plus haut fonctionne, il faut intercepter le message de la classe CXTabCtrl, et non les classes mère, ça marche pas ...
Merci farscape !! Et désolé, ta réponse était la bonne dès le début... :ccool: :merci:
bien ,alors pense a mettre résolu sur ton post (avec le bouton ) :wink: