CtreeCtrl (Click droit sur 1 item)

Signaler
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
-
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
-
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

Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
3
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>
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
23
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.
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
3
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>