Gestion de la souris listview c++ api Win32

Résolu
cs_Spunk62 Messages postés 12 Date d'inscription mardi 23 septembre 2008 Statut Membre Dernière intervention 15 mai 2010 - 17 juin 2009 à 11:35
cs_Spunk62 Messages postés 12 Date d'inscription mardi 23 septembre 2008 Statut Membre Dernière intervention 15 mai 2010 - 18 juin 2009 à 10:44
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

racpp Messages postés 1910 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 15
17 juin 2009 à 13:23
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;       
    }
3
cs_Spunk62 Messages postés 12 Date d'inscription mardi 23 septembre 2008 Statut Membre Dernière intervention 15 mai 2010
18 juin 2009 à 10:18
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.
0
cs_Spunk62 Messages postés 12 Date d'inscription mardi 23 septembre 2008 Statut Membre Dernière intervention 15 mai 2010
18 juin 2009 à 10:44
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.
0