Gestion de la souris listview c++ api Win32

[Résolu]
Signaler
Messages postés
12
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
15 mai 2010
-
Messages postés
12
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
15 mai 2010
-
Bonjour, je voudrai savoir comment récupérer la cellule d'une listview avec un click de la souris
voila ce que j'ai fait:

       case WM_LBUTTONUP:
       {    
         // Déterminer l'élément pointé par la souris:
         lvhti.pt.x = LOWORD(lParam);
         lvhti.pt.y = HIWORD(lParam);
         SendMessage(hlistviewA,LVM_HITTEST,0,(LPARAM)&lvhti);
         // Ne rien faire si en dehors des éléments de la ListView:
         if (lvhti.iItem == -1) break;
         // Trouver l'élément sélectionné:
         int iSelected = SendMessage(hlistviewA,LVM_GETNEXTITEM,-1,LVIS_SELECTED);
         // Ne rien faire si aucun élément sélectionné ou s'il s'agit du même élément que celui pointé par la souris:
          if ((TabListA) && (iSelected>-1))//TabListA =>listview active
          {
          DialogBox(hInst,MAKEINTRESOURCE(IDD_CHOIX),ChildAnalyse,About);
          }        
       }
le but est de cliqué sur un item puis d'afficher une boite de dialogue correspondant a cette item.
Merci

3 réponses

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
Tu peux traiter WM_NOTIFY et capturer le message NM_CLICK, NM_BDLCLK, NM_RCLICK, NM_RDBLCLK ou LVN_ITEMCHANGED.
Exemple:
    case WM_NOTIFY:
    {
        NMHDR* pnmh = (NMHDR*)lParam;        if(pnmh->hwndFrom hlistview && pnmh->code NM_CLICK )
        {
            NMITEMACTIVATE* pia=(NMITEMACTIVATE*) lParam;
            // pia->iItem contient l'index de l'item cliqué
            // pia->iSubItem contient l'index du sous-item cliqué
            return 0;
        }
    return 0;       
    }
Messages postés
12
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
15 mai 2010

Re, j'ai essayé d'afficher un message box (MessageBox(NULL,"ok","vide",MB_OK| MB_ICONEXCLAMATION);) dans le if mais il ne s'affiche jamais.
Messages postés
12
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
15 mai 2010

J'ai rien dit... par contre j'ai un tabcontrol et quant je fait (SendMessage(hlistview,LVM_GETNEXTITEM,-1,LVIS_SELECTED);) il me prend les item du tabcontrol et pas de la listview.