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

MFC Discussion :

Probleme lors de la detection de l'element selectionné dans une CTreeCtrl


Sujet :

MFC

  1. #1
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2006
    Messages : 245
    Par défaut Probleme lors de la detection de l'element selectionné dans une CTreeCtrl
    Bonjour,

    Je suis en train de developper une application qui contient un CTreeCtrl et j'ai implementé une fonction qui permet de recuperer l'index de l'item selectionné dans cette CtreeCtrl.

    Le code que j'utilise est le suivant :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
     
    void CListCtrlDlg::OnRClick(NMHDR* pNMHDR, LRESULT* pResult)
    {
     
    	LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
     
    	CPoint Point;
        DWORD  dwPos;
    	UINT   Flags = TVHT_ONITEMLABEL ;
    	int    ht; 
     
    	// TODO: Add your control notification handler code here
     
     
    	dwPos = GetMessagePos(); 
    	Point.x = LOWORD (dwPos);
    	Point.y = HIWORD (dwPos); 
     
    	// conversion des coordonnées screen pour la zone cliente du TreeView
    	m_FileListCtrl.ScreenToClient( &Point );
     
    	// recuperation de l'item selectionné.
    	ht = m_FileListCtrl.HitTest( Point ,&Flags );
    	*pResult = 0;
    }
    Le probleme est qu'au retour de la fonction HitTest, je reçois toujours -1.

    Et je comprend pas pourquoi.

    Quelqu'un pourra m'aider ?

    Merci d'avance

  2. #2
    Membre émérite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    void CListCtrlDlg::OnNMRclick(NMHDR *pNMHDR, LRESULT *pResult)
    {
    	DWORD dwPos = ::GetMessagePos();
    	CPoint pt((int)(short)LOWORD(dwPos), (int)(short)HIWORD(dwPos));
    	UINT uFlags = 0;
    	m_FileListCtrl.ScreenToClient(&pt);
     
    	HTREEITEM hSelectedItem = m_FileListCtrl.HitTest(pt, &uFlags);		
    }
    essaie ça

  3. #3
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2006
    Messages : 245
    Par défaut
    J'ai essayé ton bout de code mais il donne le meme resultata que le mien.

    Ca me trouve toujours -1 et en plus hSelectedItem doit etre int.

    Alors si tu as une autre solution, j'ai hâte de la connaitre

  4. #4
    Membre émérite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par défaut
    Salut,

    Il y a une petite confusion. Tu interceptes un right-click sur un treectrl mais tu utilises une listctrl.

    D'ou ma question, Est-ce que m_FileListCtrl est un listctrl ou un treectrl???

    pour une listctrl
    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
     
    void CListCtrlDlg::OnRClick(NMHDR* pNMHDR, LRESULT* pResult)
    {
    	LPNMITEMACTIVATE pNMListView = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
    	int iSelectedItem = pNMListView->iItem;
     
    	UINT uFlags = 0;
    	CPoint point = pNMListView->ptAction;
     
    	m_FileListCtrl.HitTest(point, &uFlags);
    	m_FileListCtrl.ClientToScreen(&point);
     
    	if((iSelectedItem >= 0) && (LVHT_ONITEM & uFlags))
    	{
                 }

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/11/2012, 11h49
  2. probleme lors de la suppression d`un element du panier
    Par lucaazori1988 dans le forum Langage
    Réponses: 1
    Dernier message: 14/05/2010, 11h42
  3. Réponses: 0
    Dernier message: 20/07/2009, 14h13
  4. Réponses: 1
    Dernier message: 01/10/2007, 16h32
  5. Detection d'elements rectangulaires dans une image
    Par MonadicLabs dans le forum Traitement d'images
    Réponses: 4
    Dernier message: 14/09/2007, 10h13

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