Selection d'un item d'un CTreeCtrl pour la seconde fois.

Résolu
cs_hdaniel Messages postés 37 Date d'inscription vendredi 9 juillet 2004 Statut Membre Dernière intervention 18 octobre 2010 - 13 avril 2005 à 12:32
cs_hdaniel Messages postés 37 Date d'inscription vendredi 9 juillet 2004 Statut Membre Dernière intervention 18 octobre 2010 - 14 avril 2005 à 12:15
Bonjour,

j'utilise un arbre, lorsque l'évènement TVN_SELCHANGED arrive je traite la sélection
tout fonctionne.(je peux lire quel est l'item sélectionné etc...)
mais si je reclique sur le même item rien ne se passe.(normal mais très embêtant)

que faire dans ce cas?
comment savoir que l'on a recliquer sur l'item sélectionné?

hdaniel

4 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
14 avril 2005 à 11:34
GetCursorPos(&pt); // coordonnées par rapport au bord de l'écran

ScreenToClient(m_treeCtrl.GetSafeHwnd(), &pt); // donne les coordonnée dans la fenêtre



Tu peux aussi retenir dans une variable le dernier item séléctionné, et tu regardes si c'est différent
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
13 avril 2005 à 20:30
Avec NM_CLICK tu peux savoir quand on clique avec le bouton droit, a ce
moment tu récupère la sélection. Mais garde TVN_SELCHANGED car le
sélection peut être modifiée aussi avec le clavier.
0
cs_hdaniel Messages postés 37 Date d'inscription vendredi 9 juillet 2004 Statut Membre Dernière intervention 18 octobre 2010 1
14 avril 2005 à 09:31
Le problème est alors de savoir si l'on a recliqué sur l'item déja sélectionné.
J' ai essayé avec

GetCursorPos(&pt);
HTREEITEM tItemClicked = m_treeCtrl.HitTest(pt,&nFlag);

mais ça ne marche pas (tItemClicked est NULL). je suppose qu'il faut avoir la position par rapport à l'arbre et non a la fenêtre du programme.

hdaniel
0
cs_hdaniel Messages postés 37 Date d'inscription vendredi 9 juillet 2004 Statut Membre Dernière intervention 18 octobre 2010 1
14 avril 2005 à 12:15
l'on peut pas regarder si l'item est différent simplement parceque lorsque l'on clique l'item, il n'est pas encore sélectionné.

GetCursorPos(&pt); // coordonnée du click dans screen
m_treeCtrl.ScreenToClient(&pt); // donne les coordonnée dans la fenêtre tree
HTREEITEM tItemClicked = m_treeCtrl.HitTest(pt,&nFlag); // je retrouve mon item

nickel j'te remercie vecchio56

hdaniel
0
Rejoignez-nous