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

Visual C++ Discussion :

Gestion de la souris listview c++ api Win32


Sujet :

Visual C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 38
    Par défaut Gestion de la souris listview c++ api Win32
    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:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
           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

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par spunk62 Voir le message
    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:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
           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
    Salut,
    Quel est le problème avec lvhti.iItem ?

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 38
    Par défaut
    Bonsoir, je ne c'est pas ou est le problème dans mon code mais la boite de dialogue ne s'affiche pas quant je clique sur un item...

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    As tu vérifié les valeurs de lvhti.iItem puis TabListA et iSelected au debugger ?

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 38
    Par défaut
    Non, je ne sais pas comment utiliser le debugger sinon j'ai trouver un code qui fonctionne sur un projet, mais je possède un tabcontrol dans lequel j'ai ma listview, ici ma boite de dialogue s'affiche que quant je change d'onglet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    case WM_NOTIFY :
    {
        LPNMHDR pnmhdr;
        pnmhdr=(LPNMHDR)lParam;
        if(pnmhdr->code==NM_CLICK)
        {
    	DialogBox(hInst, MAKEINTRESOURCE(IDD_CHOIX), hDlg,About);
    	return 0;
        }
    }
    break;
    de ce faite j'ai modifié le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    case WM_NOTIFY :
    {
        LPNMHDR pnmhdr;
        pnmhdr=(LPNMHDR)lParam;
        if(pnmhdr->hwndFrom == hlistviewA && pnmhdr->code==NM_CLICK)
        {
    	DialogBox(hInst, MAKEINTRESOURCE(IDD_CHOIX), hDlg,About);
    	return 0;
        }
    }
    break;
    Maintenant la boite de dialogue IDD_CHOIX ne s'affiche pu...

    Ma fenêtre principale et une dialogue box dans laquelle j'ai un tabcontrol plusieurs onglet contenant des boites de dialogue enfant et dans la boite de dialogue enfant 1 j'ai mis une listview.

    J'explique tout sa car il me semble que hwndFrom ne fonctionne pas avec les boites de dialogue.

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 38
    Par défaut
    J'ai reçu un peu d'aide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    case WM_NOTIFY :
    {
        LPNMITEMACTIVATE lpnmitem;
        lpnmitem = (LPNMITEMACTIVATE) lParam;
        if(lpnmitem->pnmhdr->hwndFrom == hlistviewA && lpnmitem->pnmhdr->code==NM_CLICK)
        {
           DialogBox(hInst, MAKEINTRESOURCE(IDD_CHOIX), hDlg,About);
           return 0;
        }
    }
    break;
    mais j'ai les erreurs suivante:
    'pnmhdr'*: n'est pas membre de 'tagNMITEMACTIVATE'
    voir la déclaration de 'tagNMITEMACTIVATE'
    pouvez-vous m'aider !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/04/2008, 18h22
  2. [API WIN32] Pb avec SHGetSpecialFolderLocation
    Par Invité dans le forum MFC
    Réponses: 3
    Dernier message: 27/01/2004, 21h19
  3. [API Win32] WriteFile()
    Par tut dans le forum MFC
    Réponses: 2
    Dernier message: 27/01/2004, 16h13
  4. API Win32
    Par benoit70 dans le forum MFC
    Réponses: 8
    Dernier message: 26/01/2004, 19h11
  5. [API win32] Récupérer le répertoire d'un profile
    Par sbeu dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 27/09/2002, 12h38

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