OVH Cloud OVH Cloud

CtreeCrl -- NM_RCLICK

6 réponses
Avatar
Ahryman40k
Bonjour,

lorsque l'on fait un clic droit sur un noeud d'un treeCtrl, Comment fait
t'on pour retrouver la valeur du HTREEITEM clické ??

merci !

6 réponses

Avatar
Ahryman40k
trop tard g trouvé !!
dsl

pour ceux que ca interresse c

HTREEITEM hItem = GetNextItem( TVI_ROOT, TVGN_CARET );


"Ahryman40k" a écrit dans le message de news:
c12gd6$4jl$
Bonjour,

lorsque l'on fait un clic droit sur un noeud d'un treeCtrl, Comment fait
t'on pour retrouver la valeur du HTREEITEM clické ??

merci !




Avatar
Ahryman40k
Arf encore dsl pour mon monologue !!
Mais ce que g dit precedemment n'est pas bon !!!


Ce n'est pas parce que l'on clic droit sur un item du tree qu'il est
forcement selectionné !!
Donc je dois retrouvé l'item clické et non l'item selectionné, comment je
peux faire ca ????


merci !
et encore dsl pour les post inutiles !!



"Ahryman40k" a écrit dans le message de news:
c12h81$doo$
trop tard g trouvé !!
dsl

pour ceux que ca interresse c

HTREEITEM hItem = GetNextItem( TVI_ROOT, TVGN_CARET );


"Ahryman40k" a écrit dans le message de news:
c12gd6$4jl$
> Bonjour,
>
> lorsque l'on fait un clic droit sur un noeud d'un treeCtrl, Comment fait
> t'on pour retrouver la valeur du HTREEITEM clické ??
>
> merci !
>
>




Avatar
Ahryman40k
Cette fois g vraiment trouvé !!

donc si certain veulent la reponse en fait comme on recherche sur le clic
droit , il faut utiliser

HTREEITEM hItem = GetNextItem( TVI_ROOT, TVGN_DROPHILITE );

Est ce que ca veut dire que les actions faites avec le boutons droit sont
toujours prevus comme des actions de Drag&Drop dans Windows ???
Avatar
Christian ASTOR
Ahryman40k a écrit:
Cette fois g vraiment trouvé !!

donc si certain veulent la reponse en fait comme on recherche sur le clic
droit , il faut utiliser

HTREEITEM hItem = GetNextItem( TVI_ROOT, TVGN_DROPHILITE );



Presque trouvé ... : pas bon si Drop Item = Selected Item

Bonne méthode :
GetMessagePos()-TreeView_HitTest()
Avatar
Ahryman40k
"Christian ASTOR" a écrit dans le message de
news: 40350904$0$5909$

Bonne méthode :
GetMessagePos()-TreeView_HitTest()





Bein en fait g egalement essayé cette methode, mais sa ne fonctionnait pas
correctement ... ???

Erreur dans la recup du point a passer a la methode hitest !

je faisais :
GetCursor( pt )
ScreenToClient( pt )
mTree.Hitest( pt, uflag );

et la bizarrement mon flag n'etait pas tjrs valide et lorsque je recup un
item sous le curseur ce n'etait pas le bon,, il y avait un decalage !!!!
Qu'est ce que g fait qui ne vas pas ??

merci
Avatar
Christian ASTOR
Ahryman40k a écrit:

GetCursor( pt )
ScreenToClient( pt )
mTree.Hitest( pt, uflag );



En détaillant pour l'exemple =>

{
DWORD nPos = GetMessagePos();
TVHITTESTINFO hti;
hti.pt.x = LOWORD(nPos);
hti.pt.y = HIWORD(nPos);
ScreenToClient(hTree, &hti.pt );
HTREEITEM hItem = TreeView_HitTest(hTree, &hti);

TVITEM tvi;
char sText[MAX_PATH];
memset(&tvi, 0, sizeof(TVITEM));
tvi.mask = TVIF_TEXT;
tvi.pszText = sText;
tvi.cchTextMax = sizeof(sText);
tvi.hItem = hItem;
if (!TreeView_GetItem(hTree, &tvi))
return FALSE;

char sBuffer[255];
wsprintf(sBuffer, "Item = %d - Text = %s", hItem, tvi.pszText);
MessageBox(NULL, sBuffer, "Info", MB_OK);
}