OVH Cloud OVH Cloud

Question sur Vue de Liste

4 réponses
Avatar
Olivier
Bonjour

J'utilise un contrôle de vu de liste dans une application(avec tri croissant
ou décroissant lors d'un clique dans une entête de colonne).
Afin de savoir quel élément de ma liste est sélectionné j'ai le code suivant
:

BEGIN_MESSAGE_MAP(CFindSite, CDialog)
//{{AFX_MSG_MAP(CFindSite)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LISTFIND, OnItemchangedList)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

et voici ma fonction :

void CFindSite::OnItemchangedList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;

CListCtrl * List = (CListCtrl *) GetDlgItem (IDC_LISTFIND);
int nSelected = pNMListView->iItem;

if (nSelected >= 0)
strItem = List->GetItemText(nSelected, 0);

int nCount = List->GetItemCount();

int numberOfSelectedItems = List->GetSelectedCount();
*pResult = 0;
}

Mais quelque soit l'élément sélectionné, strItem est le texte du dernier
élément de ma liste...
Je bloques....

Cordialement,

Olivier

4 réponses

Avatar
Christian ASTOR
Olivier wrote:

J'utilise un contrôle de vu de liste dans une application(avec tri croissant
ou décroissant lors d'un clique dans une entête de colonne).
Afin de savoir quel élément de ma liste est sélectionné j'ai le code suivant



Pour retrouver les items sélectionnés, on fait une boucle avec
ListView_GetNextItem() & LVNI_SELECTED
Avatar
Olivier
> Pour retrouver les items sélectionnés, on fait une boucle avec
ListView_GetNextItem() & LVNI_SELECTED



Merci j'ai trouvé une autre solutuion, j'ai remplacé :
int nSelected = pNMListView->iItem;
par :
int nSelected = List->GetSelectionMark();
et ça marche sans problèmes, même quand les items sont triés...
Avatar
Christian ASTOR
Olivier wrote:

Merci j'ai trouvé une autre solutuion, j'ai remplacé :
int nSelected = pNMListView->iItem;
par :
int nSelected = List->GetSelectionMark();
et ça marche sans problèmes, même quand les items sont triés...



Mais ce n'est pas une bonne méthode : ne marchera pas si multi-sélection
(sens, non-contiguïté, ...)
Avatar
Olivier
> Mais ce n'est pas une bonne méthode : ne marchera pas si multi-sélection
(sens, non-contiguïté, ...)



Oui mais je n'utilise pas le multi-selection...

Merci