begin process at 2012 02 07 10:29:49
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Application

 > LISTVIEW EN COULEURS

LISTVIEW EN COULEURS


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Application Classé sous :listview, couleurs Niveau :Débutant Date de création :11/06/2006 Date de mise à jour :11/06/2006 16:55:30 Vu / téléchargé :7 827 / 668

Auteur : NeoUmbrella

Ecrire un message privé
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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-LI STVIEW-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.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 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

Source avec Zip Source avec une capture MOUSECONTROL
Source avec Zip Source avec une capture NU_FORMATSN - FORMATAGE DE PSEUDO AOL
Source avec Zip Source avec une capture INSTALLSHIELD
Source avec Zip AOHELL, FONCTIONS POUR AOL

 Sources de la même categorie

Source avec Zip Source avec une capture CONTACTES BOOK par mature
Source avec Zip Source avec une capture [C++/QT] SLIDEALWAYS, RÉALISEZ DES SLIDES POUR VOTRE SITE AV... par doderic
Source avec Zip Source avec une capture MAILLAGE 3D (VTK + QT) par ammoun007
Source avec Zip Source avec une capture CONVHTML : UN UTILITAIRE DE CONVERSION POUR FICHIERS HTML par pgl10
Source avec Zip SCANNER LANGAGE par lajouad

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture [WIN32] PETIT RÉPERTOIRE TÉLÉPHONIQUE ET AUTRES (GESTION LIS... par uaip
Source avec Zip Source avec une capture RÉARRANGER LES LIGNES D'UNE LISTVIEW À LA SOURIS (WIN32 API) par racpp
Source avec Zip Source avec une capture TUPEUPASTEPLANKER1.0 par mallack
Source avec Zip Source avec une capture GESTION DES ENTREES/ SORTIES AVEC CODEBARRE par YvaddavY
Source avec Zip Source avec une capture GÉNÉRATION D'UNE PALETTE OPTIMALE POUR LA RÉDUCTION DE COULE... par cali70

Commentaires et avis

Commentaire de elflink le 12/06/2006 02:39:58

Personnellement, j'émets un avis tout à fait positif sur ton code.
Bravo et bonne continuation:)

Commentaire de deck_bsd le 12/06/2006 17:51:38

Cette source va beaucoup me servir. :D

 Ajouter un commentaire


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


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,295 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales