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 :

CTreeCtrl, problème graphique sur changement d'ImageList


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 27
    Par défaut CTreeCtrl, problème graphique sur changement d'ImageList
    Bonjour, je suis en train de bosser sur un CtreeCtrl tout à fait banal. J'ai dû y intégrer une sorte de fonction de zoom. En gros en appuyant sur la touche CTRL et en mettant un coup de molette souris, ça agrandit ou diminue la taille des icones des nœuds de l'arbre.
    Pour ce faire je charge en mémoire 5 CImageList avec les même icones pour toutes mais une taille différente pour chacune (16, 24, 32, 48, 64). Lors du zoom ou du "dézoom" je fais simplement un SetImageList sur mon arbre et je repeins derrière.
    Pour le zoom ça marche nickel, par contre, pour le "dézoom", ça met la pagaille parce que l’espacement entre les noeud effectifs et les boutons '+' ou '-' correspondants reste comme si c'était des icones de plus grande taille.
    Nom : Explication1.png
Affichages : 160
Taille : 4,4 Ko
    Nom : Explication2.png
Affichages : 177
Taille : 20,4 Ko
    Nom : Explication3.png
Affichages : 169
Taille : 8,6 Ko

    J'ai essayé de supprimer et ré ajouter mes items entre les zooms, j'ai essaye les redraw, les invalidate, les setRedraw mais rien n'y fait.

    Quelqu'un peut-il m'aider?

    Merci bien
    Finarfin86

  2. #2
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 27
    Par défaut Solution trouvée
    Bon, en fouillant un peu, j'ai trouvé la solution.
    Ce qui se passe c'est que quand on met une icone plus grande que 16*16, CTreeCtrl augmente la valeur de l'indentation des nœuds enfants. Par contre, en diminuant la taille des icônes, il ne remet pas l'indentation en place, ce qui provoque le décalage observé.
    Heureusement qu'ils ont prévu le coup avec la méthode SetIndent( UINT ) de CTreeCtrl. Elle permet d’établir le nombre de pixels que fera l'indentation des noeuds enfants. Un petit coup GetIndent en debug m'a permis de voir que par défaut, Windows met une indentation de largeur de l'icône + 3 pixels ( pour une icône de 16*16, l'indentation par défaut sera de 19, pour une icône de 24 ce sera de 27).

    Du coup, un coup de SetIndent( sizeIco + 3 ) après mon SetImageList() et avant mon invalidate() permet de régler tous mes soucis.

    Voilà voilà

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 461
    Par défaut
    Merci beaucoup pour toutes ces informations.

    Attention, il est fort probable que ces 3 pixels "d'entourage" soit variable en fonction du thème Windows sélectionné, entre autres.

  4. #4
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 27
    Par défaut En fonction du thème
    Bonne observation, dès que j'ai deux minutes je tente le coup en changeant le thème et la taille de police par défaut.

Discussions similaires

  1. [XL-2007] Problème graphique sur 12 mois déroulant
    Par Hellhand dans le forum Excel
    Réponses: 12
    Dernier message: 20/08/2012, 10h38
  2. Réponses: 1
    Dernier message: 07/10/2007, 01h39
  3. Problème Combo list sur changement de valeur
    Par soso78 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 24/05/2007, 21h57
  4. Réponses: 10
    Dernier message: 04/05/2007, 09h05
  5. problème dû à un changement de carte graphique
    Par chabfive dans le forum OpenGL
    Réponses: 5
    Dernier message: 30/09/2005, 12h41

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