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 :

[MFC]Custom TreeCtrl et Images


Sujet :

MFC

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 42
    Points : 31
    Points
    31
    Par défaut [MFC]Custom TreeCtrl et Images
    Bonjour,

    je suis en train de réécrire la fonction Paint d'un Tree.

    J'arrive a faire a peu pores ce que je veux sauf quelque truc...

    J'ai le control sur le texte donc pas de problème.


    J'amerai en plus ajouter 2 bitmaps ou icones après le texte de chaque ligne... comment faire? je n'ai rien trouvé la dessus...

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    quel est le probléme ?
    il suffit de projeter le bitmap à l'emplacement voulu.
    http://c.developpez.com/faq/vc/?page=GDI#DrawBitmap

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 42
    Points : 31
    Points
    31
    Par défaut
    Ok ca marche chez moi, par contre le TreeCtrl ne prend pas en compte cette nouvelle taille.

    Par exemple si je reduit mon Tree il ne met la Scrollbar que lorsque l'on ne voit plus la taille du texte initial et ne prend pas en compte la taille du texte+bitmap..

    Comment faire?

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    Salut,
    Ce que tu peux faire c'est spécifier pour toutes les items la taille maxi d'une item
    avec SetItemHeight.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 42
    Points : 31
    Points
    31
    Par défaut
    C'est bien ça sauf que j'en ai besoin pour la largeur mais SetItemWidth n'existe pas...

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    les possibilités de customisation sont très limités sur le treectrl ,
    cela nécessite de reprendre la main sur le dessin et de respecter les dimensions de l'item.
    alors a part la magouille qui consisterait (par exemple) à régler le contrôle avec une fonte plus grosse pour augmenter artificiellement la largeur .
    tout en utilisant une fonte plus petite dans le paint, je ne vois pas trop....

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 42
    Points : 31
    Points
    31
    Par défaut
    Ok merci beaucoup pour ton aide

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 42
    Points : 31
    Points
    31
    Par défaut
    Rebonjour,

    Toujours pour mon problème de largeur du Tree..

    J'ai décidé de mettre une largeur fixe a mon arbre...

    Sachant qu'il se trouve dans une frame comment empecher le redimmensionnement de cette frame? j'ai essayer pas mal de chose en vain..

  9. #9
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    tu peux intervenir sur le wm_size comme dans ce post de la faq
    http://c.developpez.com/faq/vc/?page...dWnd#MDINoMove
    dans ton cas tous le teste se passe dans wm_size

    sinon en utilisant le message WM_GETMINMAXINFO
    au niveau de la frame comme dans ce post de la faq:
    http://c.developpez.com/faq/vc/?page...tSizeMainFrame

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 42
    Points : 31
    Points
    31
    Par défaut
    Merci farscape,

    je vais essayer

    Bon week end

  11. #11
    Membre confirmé Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Points : 521
    Points
    521
    Par défaut
    Ou essayer d'enlever le style WS_THICKFRAME (=WS_SIZEBOX) a la MDI child.
    Je suis pas sure que ça marche, mais ça vaut le coup d'essayer.

    Par ModifyStyle() ou dans PreCreateWindow()

    @+

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 124
    Points : 136
    Points
    136
    Par défaut
    ...ou dans le CEdit, cela depend de l'ipémentation dans le fichier header

  13. #13
    Membre confirmé Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Points : 521
    Points
    521
    Par défaut
    Le CEdit(View?) n'a pas ce style là puisque c'est la frame qui le redimensionne par un RecalcLayout(). Il faut le faire sur une frame, soit sur une CMainFrame si c'est une appli SDI soit sur CChildFrame si c'est une appli MDI.
    Comment est-ce implémenté ?

    @+

  14. #14
    Membre confirmé Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Points : 521
    Points
    521
    Par défaut
    Autre solution pour empecher le changement de taille:

    Intercepter WM_NCHITTEST, laissez d'abord faire la procédure par défaut (Default()) et modifier le résultat si:

    * HTBOTTOM, HTBOTTOMLEFT ... HTLEFT, HTRIGHT, HTTOP ...

    par HTBORDER

    Pareil, a faire sur une fenetre qui a le style WS_SIZEBOX.

    L'avantage c'est qu'on peut laisser le redimensionnement en hauteur et empecher le redimensionnement en largeur par ex

    @+

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 42
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par stephdim
    Le CEdit(View?) n'a pas ce style là puisque c'est la frame qui le redimensionne par un RecalcLayout(). Il faut le faire sur une frame, soit sur une CMainFrame si c'est une appli SDI soit sur CChildFrame si c'est une appli MDI.
    Comment est-ce implémenté ?

    @+

    C'est une MDI je vais essayer tout ca merci de votre aide

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/05/2006, 09h26
  2. Réponses: 3
    Dernier message: 28/06/2005, 18h54
  3. [MFC] roll over sur image
    Par calimero82 dans le forum MFC
    Réponses: 7
    Dernier message: 11/04/2005, 18h14
  4. [API][MFC]Graphisme - Déplacement d'un image ???
    Par Alcarbone dans le forum MFC
    Réponses: 12
    Dernier message: 26/11/2003, 21h28
  5. [MFC] image dans un header de CListCtrl
    Par tut dans le forum MFC
    Réponses: 3
    Dernier message: 11/06/2003, 15h26

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