|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
LISTVIEW EN COULEURS
Information sur la source
Description
Voici une classe permettant de gérer plusieurs couleurs dans une listview. Ses fonctions sont limitées à l'utilisation que j'en ai faite dans un autre programme, il est donc largement possible de l'améliorer. Elle gère uniquement le style Report et ne prend pas en compte les icones. Certains n'aimeront pas car ils penseront que des classes sont crées pour tout et n'importe quoi. Je pense cependant qu'elle peut etre un point de départ vers une gestion améliorée des couleurs. Enfin, merci à vecchio56 pour son code source "PROGRESSBAR DANS LISTVIEW" dont le code est inspiré. Trouvable ici : http://www.cppfrance.com/codes/PROGRESSBAR-DANS-LISTVIEW-WIN32_24229.aspx
Source
- // ITEM_DRAW : DESSINE LES ITEMS
- /////////////////////////////////////////////////////////////////////////////////
- void cNU_ListView::Item_Draw(LPDRAWITEMSTRUCT lpDrawItem)
- {
- if(!pm_hlistview) return;
- RECT rctTemp, rctTemp2;
- BOOL BSelected = FALSE;
- int iTemp = 0;
- HBRUSH hbrTemp;
- char szTemp[256] = "";
-
- ListView_GetItemRect(pm_hlistview, lpDrawItem->itemID, &rctTemp, LVIR_BOUNDS);
- rctTemp.top = lpDrawItem->rcItem.top; rctTemp.bottom = lpDrawItem->rcItem.bottom; rctTemp.right = 0;
-
- rctTemp2 = lpDrawItem->rcItem; rctTemp2.left +=1;
-
- hbrTemp = CreateSolidBrush(pm_ItemsNU[lpDrawItem->itemID].clrBorderColor);
- FillRect(lpDrawItem->hDC, &rctTemp2, hbrTemp);
- DeleteObject(hbrTemp);
-
- if(ListView_GetItemState(pm_hlistview, lpDrawItem->itemID, LVIS_SELECTED) & LVIS_SELECTED) BSelected = TRUE;
-
- for(int a=0; a<pm_iColumnCount; a++){
- rctTemp.right = rctTemp.left + ListView_GetColumnWidth(pm_hlistview, a);
-
- if(!a) {
- if(BSelected){
- rctTemp.left += 2; rctTemp.top +=1; rctTemp.bottom -=1;
- hbrTemp = CreateSolidBrush(pm_ItemsNU[lpDrawItem->itemID].clrSelBackColor);
- FillRect(lpDrawItem->hDC, &rctTemp, hbrTemp);
- DeleteObject(hbrTemp);
- SetTextColor(lpDrawItem->hDC, pm_ItemsNU[lpDrawItem->itemID].clrSelTextColor);
- rctTemp.left -= 2; rctTemp.top -=1; rctTemp.bottom +=1;
- } else {
- hbrTemp = CreateSolidBrush(pm_ItemsNU[lpDrawItem->itemID].clrBackColor);
- FillRect(lpDrawItem->hDC, &rctTemp, hbrTemp);
- DeleteObject(hbrTemp);
- SetTextColor(lpDrawItem->hDC, pm_ItemsNU[lpDrawItem->itemID].clrTextColor);
- }
- rctTemp.left += 3; rctTemp.right -=2;
- if(pm_ItemsNU[lpDrawItem->itemID].szText[0] != '\0') DrawText(lpDrawItem->hDC, pm_ItemsNU[lpDrawItem->itemID].szText, (int)strlen(pm_ItemsNU[lpDrawItem->itemID].szText), &rctTemp, DT_VCENTER);
- rctTemp.left -= 3;
- } else {
- if(BSelected){
- rctTemp.top +=1; rctTemp.bottom -=1;
- if(a == pm_iColumnCount-1) rctTemp.right -=1;
- hbrTemp = CreateSolidBrush(pm_ItemsNU[lpDrawItem->itemID].SubItem[a].clrSelBackColor);
- FillRect(lpDrawItem->hDC, &rctTemp, hbrTemp);
- DeleteObject(hbrTemp);
- SetTextColor(lpDrawItem->hDC, pm_ItemsNU[lpDrawItem->itemID].SubItem[a].clrSelTextColor);
- rctTemp.top -=1; rctTemp.bottom +=1;
- if(a == pm_iColumnCount-1) rctTemp.right +=1;
- } else {
- hbrTemp = CreateSolidBrush(pm_ItemsNU[lpDrawItem->itemID].SubItem[a].clrBackColor);
- FillRect(lpDrawItem->hDC, &rctTemp, hbrTemp);
- DeleteObject(hbrTemp);
- SetTextColor(lpDrawItem->hDC, pm_ItemsNU[lpDrawItem->itemID].SubItem[a].clrTextColor);
- }
- rctTemp.left += 3; rctTemp.right -=2;
- if(pm_ItemsNU[lpDrawItem->itemID].SubItem[a].szText[0] != '\0') DrawText(lpDrawItem->hDC, pm_ItemsNU[lpDrawItem->itemID].SubItem[a].szText, (int)strlen(pm_ItemsNU[lpDrawItem->itemID].SubItem[a].szText), &rctTemp, DT_VCENTER);
- rctTemp.left -= 3;
- }
- rctTemp.left = rctTemp.left + ListView_GetColumnWidth(pm_hlistview, a);
- }
- return;
- }
// ITEM_DRAW : DESSINE LES ITEMS
/////////////////////////////////////////////////////////////////////////////////
void cNU_ListView::Item_Draw(LPDRAWITEMSTRUCT lpDrawItem)
{
if(!pm_hlistview) return;
RECT rctTemp, rctTemp2;
BOOL BSelected = FALSE;
int iTemp = 0;
HBRUSH hbrTemp;
char szTemp[256] = "";
ListView_GetItemRect(pm_hlistview, lpDrawItem->itemID, &rctTemp, LVIR_BOUNDS);
rctTemp.top = lpDrawItem->rcItem.top; rctTemp.bottom = lpDrawItem->rcItem.bottom; rctTemp.right = 0;
rctTemp2 = lpDrawItem->rcItem; rctTemp2.left +=1;
hbrTemp = CreateSolidBrush(pm_ItemsNU[lpDrawItem->itemID].clrBorderColor);
FillRect(lpDrawItem->hDC, &rctTemp2, hbrTemp);
DeleteObject(hbrTemp);
if(ListView_GetItemState(pm_hlistview, lpDrawItem->itemID, LVIS_SELECTED) & LVIS_SELECTED) BSelected = TRUE;
for(int a=0; a<pm_iColumnCount; a++){
rctTemp.right = rctTemp.left + ListView_GetColumnWidth(pm_hlistview, a);
if(!a) {
if(BSelected){
rctTemp.left += 2; rctTemp.top +=1; rctTemp.bottom -=1;
hbrTemp = CreateSolidBrush(pm_ItemsNU[lpDrawItem->itemID].clrSelBackColor);
FillRect(lpDrawItem->hDC, &rctTemp, hbrTemp);
DeleteObject(hbrTemp);
SetTextColor(lpDrawItem->hDC, pm_ItemsNU[lpDrawItem->itemID].clrSelTextColor);
rctTemp.left -= 2; rctTemp.top -=1; rctTemp.bottom +=1;
} else {
hbrTemp = CreateSolidBrush(pm_ItemsNU[lpDrawItem->itemID].clrBackColor);
FillRect(lpDrawItem->hDC, &rctTemp, hbrTemp);
DeleteObject(hbrTemp);
SetTextColor(lpDrawItem->hDC, pm_ItemsNU[lpDrawItem->itemID].clrTextColor);
}
rctTemp.left += 3; rctTemp.right -=2;
if(pm_ItemsNU[lpDrawItem->itemID].szText[0] != '\0') DrawText(lpDrawItem->hDC, pm_ItemsNU[lpDrawItem->itemID].szText, (int)strlen(pm_ItemsNU[lpDrawItem->itemID].szText), &rctTemp, DT_VCENTER);
rctTemp.left -= 3;
} else {
if(BSelected){
rctTemp.top +=1; rctTemp.bottom -=1;
if(a == pm_iColumnCount-1) rctTemp.right -=1;
hbrTemp = CreateSolidBrush(pm_ItemsNU[lpDrawItem->itemID].SubItem[a].clrSelBackColor);
FillRect(lpDrawItem->hDC, &rctTemp, hbrTemp);
DeleteObject(hbrTemp);
SetTextColor(lpDrawItem->hDC, pm_ItemsNU[lpDrawItem->itemID].SubItem[a].clrSelTextColor);
rctTemp.top -=1; rctTemp.bottom +=1;
if(a == pm_iColumnCount-1) rctTemp.right +=1;
} else {
hbrTemp = CreateSolidBrush(pm_ItemsNU[lpDrawItem->itemID].SubItem[a].clrBackColor);
FillRect(lpDrawItem->hDC, &rctTemp, hbrTemp);
DeleteObject(hbrTemp);
SetTextColor(lpDrawItem->hDC, pm_ItemsNU[lpDrawItem->itemID].SubItem[a].clrTextColor);
}
rctTemp.left += 3; rctTemp.right -=2;
if(pm_ItemsNU[lpDrawItem->itemID].SubItem[a].szText[0] != '\0') DrawText(lpDrawItem->hDC, pm_ItemsNU[lpDrawItem->itemID].SubItem[a].szText, (int)strlen(pm_ItemsNU[lpDrawItem->itemID].SubItem[a].szText), &rctTemp, DT_VCENTER);
rctTemp.left -= 3;
}
rctTemp.left = rctTemp.left + ListView_GetColumnWidth(pm_hlistview, a);
}
return;
}
Conclusion
Un projet est livré avec la classe pour montrer les utilisations de celle-ci. Rennomer ListView_Couleurs.ex_ en ListView_Couleurs.exe pour tester l'executable. Mises à jour selon mes besoins seront surement à venir.
Historique
- 11 juin 2006 16:55:30 :
- - Ajout d'une bordure autour de l'item selectionné.
- Récupération facilitée des textes et couleurs des items et sous-items.
- Suppression des HBRUSH.
Sources du même auteur
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
gcc et les couleurs !! [ par UncleShu ]
Salut je voudrais savoir les autres couleurs en C avec gcc, exemple :printf("\033[1;34m Ecrit en bleu !! \033[0m\n");Merci d'avance !
apres les polices, les couleurs [ par Xs ]
salut !!je sais comment on utilise les polices dans une application API, (HFONT) mais pas comment on change sa couleur.j'ai essayer COLORREF machin =
utiliser les couleurs [ par psycho ]
salut.Comment fait on pour utiliser les couleurs dans la console? J utilise vc++ 6.0merci
comment utilise t on les couleurs sous la console [ par psycho ]
j aimerais savoir quels sont les instructions qui permettent d incorporer de la couleur sous la console(j utilise visual studio), ainsi que les fichie
listview [ par danyce ]
kelk'un saurait il se servir d un listview avec visual c++j aimerai connaitre les lignes de code pour le remplir, ca serai cool!merci d avance...
Lumières, couleurs, matériaux, normals ... [ par fabienGL ]
Bonjour je vous écris car j'écris en OpenGL, tout va bi1 mais je me pose un petit problème pour éditer la couleur de la matière (diffuse, ambiante, sp
Créer une palette personalisée de 256 couleurs (couleurs sur 8 bits) [ par orus8 ]
Mon projet consiste en la quantification d'une image de 16 milions de couleurs en une image en 256 niveaux de couleurs (et non 256 niveaux de gris). L
Au secours ListView !!! :o((( [ par Frederyck ]
FrederyckSalut,Alors en fait j'ai créer une appli en VC++ 6.0 avec MFC, avec ma vue basée sur une LIstView, et j'aimerai faire deux choses:tout d'abor
Icones [ par wanny ]
Je n'arrive pas à afficher des icones en 256 couleurs.Pour une même icone définie en 256 couleurs, quand on l'affiche comme icone d'une boite de dialo
fenêtre arrière plan [ par wanny ]
Bonjour.DAns une appli, j'ai une ou plusieurs fenêtre(s) graphique (classe fille de CView).Je clique sur un menu de la mainframe pour changer des para
|
Téléchargements
Logiciels à télécharger sur le même thème :
|