2010-04-09 8 views
11

Comment faire un CListCtrl pour redimensionner automatiquement la largeur de ses colonnes? Habituellement, quand un élément de la liste devient trop long, l'extrémité arrière disparaît de la vue et l'utilisateur doit manuellement redimensionner la largeur de la colonne correspondante. Y a-t-il un moyen de le faire par code?Redimensionnement automatique des largeurs de colonnes dans un CListCtrl

Répondre

12

Redimensionner les colonnes est automatiquement facile:

for(int i = 0;i < pListCtrl->GetHeaderCtrl()->GetItemCount();++i) 
    pListCtrl->SetColumnWidth(i,LVSCW_AUTOSIZE_USEHEADER); 

Cela permettra d'optimiser les colonnes.

+0

Hey, je l'ai essayé et il semble bien fonctionner :) :) Merci beaucoup pour la réponse dwo: D – Isuru

+0

Une petite question dwo, je n'ai jamais entendu parler de HeaderControl. Qu'est-ce que c'est exactement ??? Merci beaucoup! – Isuru

+0

Le contrôle d'en-tête est la partie supérieure du contrôle de liste avec les titres de colonne dans celui-ci. – dwo

1

L'option "Pas de défilement" est-elle activée? Par défaut (option "No Scroll" désactivée), si un élément est trop long, une barre de défilement apparaît.

1

Je suppose que vous voulez dire un contrôle de liste en mode rapport? Malheureusement, il n'y a aucun moyen de redimensionner automatiquement les colonnes. Ce que vous pouvez faire (ce que je fais à certains endroits) est de calculer la largeur des colonnes lorsque vous entrez des éléments, puis gérer WM_SIZE et redimensionner les colonnes. Cependant, cela entraîne des changements que l'utilisateur a fait disparaître, vous aurez peut-être besoin d'un meilleur algorithme comme le suivi si l'utilisateur a fait des changements, s'il n'a pas redimensionné. Ce n'est pas très agréable d'un point de vue UX, je l'utilise seulement dans un certain nombre de circonstances où le comportement a du sens dans le contexte du reste de l'interface utilisateur.

+0

Oui, c'est exactement ce que je voulais dire. Merci pour la réponse, si je ne peux pas obtenir un algo approprié, je vais juste gérer OnSize() pour redimensionner manuellement et demander au lecteur de redimensionner la fenêtre. – Isuru

Questions connexes