IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

CHeaderCtrl avec DrawItem


Sujet :

MFC

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 177
    Par défaut CHeaderCtrl avec DrawItem
    Bonjour à tous!

    Je possède une CListCtrl basé sur le modèle personnalisable de Farscape:
    http://cpp.developpez.com/faq/vc/?pa...tCtrlOwnerDraw

    Mon but est maintenant de pouvoir ajouter des icones triangulaire dans les header, afin d'indiquer l'ordre de tri effectif pour une colonne donnée.

    Dans cette même section de la FAQ, j'ai pu voir ceci:
    http://cpp.developpez.com/faq/vc/?pa...rlCustomHeader

    Effectivement, il est question de personnalisation de l'affichage des headers, mais cette méthode passe par l'événement ON_WM_PAINT, et cela ne me convient pas car j'ai besoin de garder le comportement de type bouton.

    J'ai pu voir que ce code fonctionnait très bien en stand alone:
    http://www.codeproject.com/KB/list/sortlistctrl.aspx

    Mais lorsque j'essai de l'intégrer à mon code, il ne passe jamais dans la méthode DrawItem.

    La seule différence que je vois, c'est que ma liste est, elle, définie avec la propriété Owner Draw. Et je me demande si le problème vient de là...

    Mon code est organisé comme dans la FAQ : une CListCtrlEx héritant de CListCtrl, et définie avec la propriété Owner draw, qui contient un élément CHeaderCtrlEx dont le comportement est contrôle par la classe du même nom.
    Le rattachement entre les deux se fait par un PreSubclassWindow.

    Là où j'ai du mal à saisir, c'est que les événements à base de click et de mouvements de souris sont très bien gérés sur les headers, mais ce DrawItem continue de me résister.

    Merci d'avance de m'aider à trouver un moyen de rentrer dans cette fichue méthode

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 177
    Par défaut
    Bon, j'ai trouvé une solution en ajoutant ce bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    HD_ITEM hditem;
     
    hditem.mask = HDI_FORMAT;
    VERIFY( GetHeaderCtrl()->GetItem( nNoColumn, &hditem ) );
    hditem.fmt |= HDF_OWNERDRAW;
    VERIFY( GetHeaderCtrl()->SetItem( nNoColumn, &hditem ) );
    Dans la boucle for du DrawItem rattaché au CListCtrlEx.

    J'avoue que si une autre solution existait, j'aimerais la connaitre car j'ai peur que celle ci soit un peu trop consommatrice de resources...

Discussions similaires

  1. requete avec OBCD et visual c++
    Par Anonymous dans le forum MFC
    Réponses: 12
    Dernier message: 18/11/2004, 16h15
  2. [langage] Comparer Perl avec d'autres langages comme C ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 10/08/2002, 23h52
  3. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  4. [Kylix] Runtime error 230 avec INDY
    Par Anonymous dans le forum EDI
    Réponses: 2
    Dernier message: 23/03/2002, 11h51
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo