CtreeCtrl (Click droit sur 1 item)

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 - 20 sept. 2006 à 15:18
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 - 21 sept. 2006 à 00:25
Salut, pourriez-vous m'éclairer sur la gestion du click droit sur un item d'un CtreeCtrl en Win32 ou MFC, pour pouvoir ouvrir un menu popup selon l'item et à l'endroit de l'item sélectionné. Je ne demande pas du code prèt à coler mais une explication serait la bienvenue. Merci d'avance.

3 réponses

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
20 sept. 2006 à 20:32
Salut,

Pour le clic droit, tu peux l'intercepter à plusieurs endroits, mais
WM_CONTEXTMENU semble le plus adapté. Pour trouver l'item sous le
curseur de la souris, tu peut envoyer le TVM_HITTEST au treeview.
<link href="../../../css/ie4.css" type="text/css" rel="stylesheet" /><!-- @ --><link href="../../../css/inetsdk.css" type="text/css" rel="stylesheet" /><!-- @ --><style type="text/css"><![CDATA[
PRE.clsCode { font-size:110%; }
PRE.clsSyntax { font-size:100%; }
TD DIV.clsBeta { display:none;}

A:link { color:#0000ff; text-decoration:underline;}
A:visited { color:#0000ff; text-decoration:underline;}
A:hover { color:#3366ff; text-decoration:underline;}
MSHelp\:link {
color:#0000ff;
text-decoration:underline;
cursor:hand;
hoverColor:#3366ff;
filterString: ;}
]]></style><link href="ms-help://Hx/HxRuntime/HxLink.css" type="text/css" rel="stylesheet" />

<xml id="_topicdata" pagetype="winmsg" proj="platsdk" name="TVM_HITTEST" pubpath="/platform/commctls/treeview/messages/tvm_hittest.htm"><!-- topic data --><root></root></xml>

<xml xmlns=""><mshelp:keyword index="A" term="_win32_TVM_HITTEST"></mshelp:keyword><mshelp:keyword index="A" term="_win32_TVM_HITTEST_cpp"></mshelp:keyword><mshelp:toctitle title="TVM_HITTEST Message"></mshelp:toctitle><mshelp:rltitle title="TVM_HITTEST Message ()"></mshelp:rltitle><mshelp:keyword index="F" term="TVM_HITTEST"></mshelp:keyword><mshelp:keyword index="K" term="TVM_HITTEST"></mshelp:keyword><mshelp:attr name="TopicType" value="kbRef"></mshelp:attr><mshelp:attr name="Locale" value="kbEnglish"></mshelp:attr><mshelp:attr name="DevLang" value="C++"></mshelp:attr><mshelp:attr name="Technology" value="Controls"></mshelp:attr><mshelp:attr name="TechnologyVers" value="kbControls"></mshelp:attr><mshelp:attr name="DocSet" value="WCSDK"></mshelp:attr><mshelp:attr name="DocSet" value="LHSDK"></mshelp:attr><mshelp:attr name="DocSet" value="PSDK"></mshelp:attr><mshelp:attr name="TargetOS" value="Windows"></mshelp:attr><mshelp:attr name="TopicType" value="apiref"></mshelp:attr><mshelp:attr name="APIName" value="TVM_HITTEST"></mshelp:attr><mshelp:attr name="APIType" value="HeaderDef"></mshelp:attr><mshelp:attr name="APILocation" value="commctrl.h"></mshelp:attr><mshelp:attr name="TopicType" value="kbSyntax"></mshelp:attr></xml>
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 24
20 sept. 2006 à 22:52
C'est bien ce que j'avais fait, mais il est impossible de selectionner un item avec le click droit, même si il s'Hilight, l'hItem renvoyé est celui sélectionné avant. j'avoue que c'est bizarre mais il y a une incohérence quelque part.
En cherchant ailleurs, on dit qu'il faut traiter obligatoirement le msg TVN_KEYDOWN avec OnKeyDown(), ce qui est totalement absurde mais contourne le problème.
Un test rapide en MFC montre bien le soucie.
Sinon merci de ta réponse.
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
21 sept. 2006 à 00:25
Salut,

Chez moi je n'ai aucun probleme, l'item trouvé avec HitTest  (et
TVHT_ONITEM) correspond bien a l'item juste sous le pointeur. Par
defaut le clic droit sur un item fait un peu n'importe quoi, mais tu
peux selectionner manuelement l'item trouvé avec SelectItem et dans ce
cas, le clic droit sur un item agis comme le clic gauche.
<link href="../../../css/ie4.css" type="text/css" rel="stylesheet" /><!-- @ --><link href="../../../css/inetsdk.css" type="text/css" rel="stylesheet" /><!-- @ --><style type="text/css"><![CDATA[
PRE.clsCode { font-size:110%; }
PRE.clsSyntax { font-size:100%; }
TD DIV.clsBeta { display:none;}

A:link { color:#0000ff; text-decoration:underline;}
A:visited { color:#0000ff; text-decoration:underline;}
A:hover { color:#3366ff; text-decoration:underline;}
MSHelp\:link {
color:#0000ff;
text-decoration:underline;
cursor:hand;
hoverColor:#3366ff;
filterString: ;}
]]></style><link href="ms-help://Hx/HxRuntime/HxLink.css" type="text/css" rel="stylesheet" />

<xml id="_topicdata" pagetype="winmsg" proj="platsdk" name="TVM_HITTEST" pubpath="/platform/commctls/treeview/messages/tvm_hittest.htm"><!-- topic data --><root></root></xml>

<xml xmlns=""><mshelp:keyword index="A" term="_win32_TVM_HITTEST"></mshelp:keyword><mshelp:keyword index="A" term="_win32_TVM_HITTEST_cpp"></mshelp:keyword><mshelp:toctitle title="TVM_HITTEST Message"></mshelp:toctitle><mshelp:rltitle title="TVM_HITTEST Message ()"></mshelp:rltitle><mshelp:keyword index="F" term="TVM_HITTEST"></mshelp:keyword><mshelp:keyword index="K" term="TVM_HITTEST"></mshelp:keyword><mshelp:attr name="TopicType" value="kbRef"></mshelp:attr><mshelp:attr name="Locale" value="kbEnglish"></mshelp:attr><mshelp:attr name="DevLang" value="C++"></mshelp:attr><mshelp:attr name="Technology" value="Controls"></mshelp:attr><mshelp:attr name="TechnologyVers" value="kbControls"></mshelp:attr><mshelp:attr name="DocSet" value="WCSDK"></mshelp:attr><mshelp:attr name="DocSet" value="LHSDK"></mshelp:attr><mshelp:attr name="DocSet" value="PSDK"></mshelp:attr><mshelp:attr name="TargetOS" value="Windows"></mshelp:attr><mshelp:attr name="TopicType" value="apiref"></mshelp:attr><mshelp:attr name="APIName" value="TVM_HITTEST"></mshelp:attr><mshelp:attr name="APIType" value="HeaderDef"></mshelp:attr><mshelp:attr name="APILocation" value="commctrl.h"></mshelp:attr><mshelp:attr name="TopicType" value="kbSyntax"></mshelp:attr></xml>
0