Bonsoir,
J'aimerais savoir s'il est possible de changer la couleur du fond dans le titre des colonnes d'une clistctrl. SetBkcolor ne modifie que la couleur de fond du texte dans le tableau, et pas dans les titres...
Merci,
shin
Bonsoir,
J'aimerais savoir s'il est possible de changer la couleur du fond dans le titre des colonnes d'une clistctrl. SetBkcolor ne modifie que la couleur de fond du texte dans le tableau, et pas dans les titres...
Merci,
shin
salut,
voir post it faq:
http://www.developpez.net/forums/vie...59308&start=60
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
Bonjour,
je vien de voir et tester le code que tu m'a proposé...
J'imagine que ka fonction à modifier est bien 'CHeaderCtrlEx::OnPaint()'
Avec ça, je parviens au mieux à modifier la couleur de fond autour du texte dans les titres des colonnes (seulement si j'enlève la ligne dc.SetBkMode(TRANSPARENT)), mais le reste de la barre de titre reste gris...
J'ai fais plusieurs tests, mais je ne parvien pas à changer cette couleur...
Est ce normal ou est ce que j'ai oublié quelque chose?
drawframecontrole utilise les couleurs standards pour dessiner le bouton...
a ce moment la il faudra peut etre passer par la solution manuelle de redessiner soit meme le bouton ou d'utiliser un bitmap..
voir par exemple CDC::FrameRect .
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
ouah ça m'a pas l'air simple tout ça...
Bon ben maintenant à moi de trouver la meilleure méthode.
En tout cas, merci beaucoup pour ton aide Farscape.
Tu es toujours là pour proposer des solutions, c'est sympa.
salut,
j'ai modifié ma classe pour rajouter le dessin du header entierement customisé.
j'ai copié l'apparence de outlook (flat header).
le projet est à jour.
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
ouah, c'est trop bien ce que tu as fait![]()
Malheureusement, je galère depuis tout à l'heure pour l'intégrer à mon code... Je suis dans une dialog box, et c'est peut être ce qui me cause des soucis...
Soit visual plante à la compilation car il ne connait pas GetListCtrl()
Et si je fais juste au début
Code : Sélectionner tout - Visualiser dans une fenêtre à part CListCtrl& theCtrl = GetListCtrl();
Alors le prog plante à l'exécution, ici:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 CListCtrl theCtrl;
Voilà je sais pas si c'est normal ou si je suis juste à la masse...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 CHeaderCtrl* CListCtrl::GetHeaderCtrl() { ASSERT(::IsWindow(m_hWnd)); [...] }
si tu es dans une dialogue box tu n'as pas besoin de GetListCtrl(); qui est utilisé uniquement avec une CListView ,toi tu utilises une CListCtrl
regarde le post it faq ,la seule chose que tu dois faire c'est le sublass dans la fonction PreSubclassWindow().
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
Bonjour, voilà désolé pour le temps de réaction mais les fêtes de noël imposent la pause![]()
Voilà, je crois que je n'ai pas compris quelque chose, parce que je n'arrive pas très bien à utiliser ton exemple...
Dans mon .h de ma dialogbox, j'ai ces éléments :
ainsi que la définition de la classe CHeaderCtrlEx...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 COLORREF m_cBkColor[3]; COLORREF m_cTxtColor[3]; CHeaderCtrlEx m_HeaderCtrl; void SetLineColor(COLORREF Bkclr,COLORREF TxtColor,bool bLinePair=true) { m_cBkColor[!bLinePair]=Bkclr; m_cTxtColor[!bLinePair]=TxtColor; }
Dans le .cpp associé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 List.ModifyStyle(0,LVS_REPORT); for (int i=0; itv != listventes.end();i++, itv++) { prodList.InsertItem(LVIF_TEXT|LVIF_STATE, i, "txt", (i%2)==0?LVIS_SELECTED : 0, LVIS_SELECTED,0, 0); prodList.SetItemText(i, 1, "txt"; prodList.SetItemText(i, 2, "txt"); //[etc.] } m_HeaderCtrl.SubclassWindow(List.GetHeaderCtrl()->m_hWnd); m_HeaderCtrl.SetBackGround(RGB(89,147,195),RGB(0,0,0)); m_HeaderCtrl.SetTextColor(RGB(255,255,255),RGB(255,255,255));
j'ai essayé de faire une fonction PreSubclassWindow() dans la dialogbox, mais ca ne fonctionne pas, le code ci dessus est le seul moyen d'avoir les titres des colonnes colorés... Et si je mets l'appel a 'SubClassWindow' avant les insertions dans le tableau, le programme plante.
Ai-je oublié quelque chose d'important? En tout cas pour le moment je ne maitrise pas vraiment le système...
De même, je ne parviens pas à mettre une ligne colorée sur deux comme dans ton exemple. J'ai essayé plusieurs choses, comme utiliser la fonction SetLineColor, modifier les flags dans la fonction Modifstyle (si je mets les même que toi, ça plante également), et utiliser le i%2 lors de l'ajout de sous-items dans le tableau, mais ça ne marche pas vraiment...
Voilà, merci d'avance pour vos réponses.
shin
salut,
le PreSubclassWindow() c'est pas sur la dialogbox mais sur la classe listctrl elle meme ,relis ce post:
http://www.developpez.net/forums/vie...466390#2466390
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
Oui j'avais bien lu, mais je ne suis peut être pas allé assez loin...
Est ce que cela veut dire que je dois créer une classe
CCustomListCtrl : public Clistctrl
avec come attribut m_HeaderCtrl, et ensuite créer un objet CCustomListCtrl dans mon dialogbox a la place d'un Clistctrl simple?
:
oui c'est ça !!!Envoyé par shiin
crée la class CCustomListCtrl par classwizard en lui indiquant la classe de base CListCtrl.
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
Partager