begin process at 2010 02 10 00:17:08
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

MFC

 > 

CLidtCtrl comment changer la couleur ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

CLidtCtrl comment changer la couleur ?

samedi 30 août 2008 à 20:32:58 | CLidtCtrl comment changer la couleur ?

aabdoos

Bonjours a tout le groupe :)
voila je travail avec MFC VC++ 6.0
et je veux savoire comment je peux changer la cuoleur d'une ligne ou d'une colonne d'une ListCtrl en mode Report en temps de l'execution (at runtime)?
j'ai essaye la methode  m_lst.SetTextColor(); ca a marche mais ca change la couleur de tout les element, (il leur donne la meme couleur) mais moi ce que je veux, est d'associer a chaque element  (ligne/colonne) une couleur differente ?
svp...comment puis'je le faire ?
merci d'avance :)
dimanche 31 août 2008 à 13:10:49 | Re : CLidtCtrl comment changer la couleur ?

yann_lo_san

Salut,

En API win32, on utilise le custom draw, et pour chaque item de la liste, on place un param personnalisé qui défini la couleur ou autre chose (List::nmcd.lItemlParam) :

Il suffit d'attribuer cette valeur au ListItem
LVITEM listItem;
listItem.lParam = param;


Au runtime, lorsque l'on modifie ou ajoute un item, ce parametres servira pour le dessin et donnera la bonne couleur.

// Si on veut des couleurs selon un etat particulier

enum eEtat
{
   E_ERR=0, E_INFO, E_OK
};

// le message de la wndProc

case WM_NOTIFY:

 if( LOWORD(wParam) == IDC_LST_REPORT )
 {
    LPNMLISTVIEW pnm = (LPNMLISTVIEW)lParam;

    if( pnm->hdr.code == NM_CUSTOMDRAW )
    {
       LRESULT ret = DrawLineEffect(lParam);
    }
  }


LRESULT DrawLineEffect(LPARAM lParam)
{
 LPNMLVCUSTOMDRAW pListDraw = (LPNMLVCUSTOMDRAW)lParam;

 switch( pListDraw->nmcd.dwDrawStage )
 {
 case CDDS_PREPAINT:
  return(CDRF_NOTIFYPOSTPAINT | CDRF_NOTIFYITEMDRAW);

 case CDDS_ITEMPREPAINT:
 {
  int iRow = (int)pListDraw->nmcd.dwItemSpec;
  if( pListDraw->nmcd.lItemlParam == E_ERR )
  {
   pListDraw->clrTextBk = RGB(255, 200, 200);
   return CDRF_NEWFONT;
  }
  else if( pListDraw->nmcd.lItemlParam == E_OK )
  {
   pListDraw->clrTextBk = RGB(238, 255, 238);
   return CDRF_NEWFONT;
  }
  // Ligne sans couleur particuliere
  else if( iRow % 2 == 0 )
  {
   pListDraw->clrTextBk = RGB(250, 250, 238);
   return CDRF_NEWFONT;
  }
 }
}

 return CDRF_DODEFAULT;
}


En MFC, c'est a peu près la meme chose, sauf qu'il faut ajouter les messages par MACRO dans la classe du parent du ListView ou créer une classe dérivée de CListCtl et gérer les messages de reflexion ON_CONTROL_REFLECT si je me rappelle bien.



Cette discussion est classée dans : ligne, changer, couleur, colonne, clidtctrl


Répondre à ce message

Sujets en rapport avec ce message

listview : comment changer individuellement la couleur d'une ligne? [ par cosmobob ] dans une listview, comment changer la couleur d'une ligne donnée ? lvm_settextcolor change la couleur de toutes les lignes.peut etre un moyen en utili Retourner à la ligne précédente et changer le couleur dans un cin . [ par Muner ] Salut à tous .Je programme en C++ et j'aimerais savoir comment revenir une ligne auparevent, le code :cout "\b" ;ne permet pas de passer à la ligne p Changement de toutes les couleurs dans une appli en MFC [ par obby ] 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'aim Changer Couleur quand on veut [ par 0xYg3n3 ] Bonjour, Voila j'ai cree une application qui gere l'etat d'automate Et je voudrais indiquer que l'automate fonctionne en couleur verte et qu'il ne fo Changer la couleur de fond d'une appli [ par Toutoun13 ] Bonjour, J'ai créé une appli de base avec VC++. Par defaut le fond de la fenetre est blanc. Est il possible de modifier ce fond, j'aimerais mettre du Changer les couleurs d'une bitmap [ par vecchio56 ] Salut, J'ai une bitmap dans une variable HBITMAP créée avec LoadBitmap et un HDC correpondant. Quelle est la manière la plus rapide de mettre tous les changer couleur Edit MFC [ par muldus ] Bonjour je voudrais suivant le cas (if) changer le fond de mon edit ainsi que du texte.Si qq'un pouvait m'aider?Muldus ListView selection ligne, colonne [ par Galmiza ] Salut, J'aimerai savoir comment selectionner une ligne + une colonne dans une ListView (en mode "report"). J'ai trouvé sur le forum et sur le net comm Changer la couleur de la scrollbar d'une Edit Box ? [ par benland ] Bon, ca va faire 2 jours que je me bat et je n'arrive toujours pas à colorer la scrollbar d'une Editbox, alors je m'en remet à ce Forum pour savoir s récupérer le nombre de valeurs identiques adjacentes dans un tableau [ par Pekele ] j'ai donc un tableau mur de 15*15 remplit de valeur. lorsque je choisis une valeur de ce tableau j'aimerais qu'il me comptabilise le nombre de valeur


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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 : 0,671 sec (4)

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