<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Kontextmenu nur über CTreeCtrl öffnen]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ist es möglich, ein Kontextmenu nur bei Rechtsklick auf ein einzelnes Control (in diesem Fall ein COXTreeCtrl, die Ultimate Toolbox Variante zu CTreeCtrl) erscheinen zu lassen?</p>
<p>Momentan fange ich die</p>
<pre><code class="language-cpp">ON_WM_CONTEXTMENU()
</code></pre>
<p>ab und öffne folgendermaßen das Kontextmenu ( QT gekürzt )</p>
<pre><code class="language-cpp">void CDlg::OnContextMenu(CWnd* pWnd, CPoint ptMousePos) 
{
   CMenu menu;

   menu.LoadMenu( IDR_MENU1 );

   CMenu * pop;

   pop = menu.GetSubMenu(0);

   if (ptMousePos.x == -1 &amp;&amp; ptMousePos.y == -1)
      ptMousePos = (CPoint) GetMessagePos();

   CWnd * pMenuParent = AfxGetMainWnd();

   UINT uCmd = pop-&gt;TrackPopupMenu( TPM_RETURNCMD | TPM_LEFTALIGN |
            TPM_RIGHTBUTTON, ptMousePos.x, ptMousePos.y,
            pMenuParent, NULL );

   menu.DestroyMenu();   
}
</code></pre>
<p>Dies bewirkt aber (logischerweise), dass das Kontextmenu bei jedem Rechtsklick (auch ausserhalb des Controls) aufgebaut wird.<br />
Ich habe schon versucht, die Message</p>
<pre><code class="language-cpp">NM_RCLICK
</code></pre>
<p>abzufangen, aber diese wird nur bei einem Klick auf ein Item des Tree's ausgelöst. Ich möchte aber, dass die Message auch ausgelöst wird, wenn noch keine Items vorhanden sind, und ich im Control rechtsklicke.</p>
<p>Wie macht man das?</p>
<p>Viele Grüße und Danke<br />
Daniel</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/163929/kontextmenu-nur-über-ctreectrl-öffnen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 31 Jul 2026 01:30:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/163929.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 03 Nov 2006 08:29:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kontextmenu nur über CTreeCtrl öffnen on Fri, 03 Nov 2006 08:29:00 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ist es möglich, ein Kontextmenu nur bei Rechtsklick auf ein einzelnes Control (in diesem Fall ein COXTreeCtrl, die Ultimate Toolbox Variante zu CTreeCtrl) erscheinen zu lassen?</p>
<p>Momentan fange ich die</p>
<pre><code class="language-cpp">ON_WM_CONTEXTMENU()
</code></pre>
<p>ab und öffne folgendermaßen das Kontextmenu ( QT gekürzt )</p>
<pre><code class="language-cpp">void CDlg::OnContextMenu(CWnd* pWnd, CPoint ptMousePos) 
{
   CMenu menu;

   menu.LoadMenu( IDR_MENU1 );

   CMenu * pop;

   pop = menu.GetSubMenu(0);

   if (ptMousePos.x == -1 &amp;&amp; ptMousePos.y == -1)
      ptMousePos = (CPoint) GetMessagePos();

   CWnd * pMenuParent = AfxGetMainWnd();

   UINT uCmd = pop-&gt;TrackPopupMenu( TPM_RETURNCMD | TPM_LEFTALIGN |
            TPM_RIGHTBUTTON, ptMousePos.x, ptMousePos.y,
            pMenuParent, NULL );

   menu.DestroyMenu();   
}
</code></pre>
<p>Dies bewirkt aber (logischerweise), dass das Kontextmenu bei jedem Rechtsklick (auch ausserhalb des Controls) aufgebaut wird.<br />
Ich habe schon versucht, die Message</p>
<pre><code class="language-cpp">NM_RCLICK
</code></pre>
<p>abzufangen, aber diese wird nur bei einem Klick auf ein Item des Tree's ausgelöst. Ich möchte aber, dass die Message auch ausgelöst wird, wenn noch keine Items vorhanden sind, und ich im Control rechtsklicke.</p>
<p>Wie macht man das?</p>
<p>Viele Grüße und Danke<br />
Daniel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1167468</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1167468</guid><dc:creator><![CDATA[DanielusITF]]></dc:creator><pubDate>Fri, 03 Nov 2006 08:29:00 GMT</pubDate></item><item><title><![CDATA[Reply to Kontextmenu nur über CTreeCtrl öffnen on Fri, 03 Nov 2006 08:36:43 GMT]]></title><description><![CDATA[<p><a href="http://support.microsoft.com/kb/222905/en-us" rel="nofollow">http://support.microsoft.com/kb/222905/en-us</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1167475</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1167475</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Fri, 03 Nov 2006 08:36:43 GMT</pubDate></item><item><title><![CDATA[Reply to Kontextmenu nur über CTreeCtrl öffnen on Fri, 03 Nov 2006 09:30:56 GMT]]></title><description><![CDATA[<p>Diesen Link hast Du mir schon mal gesagt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Hab wohl nicht deutlich genug gelesen.<br />
Für alle die es interessiert, das TreeCtrl als eigene Klasse ableiten und die MessageMap dort implementieren.<br />
Funktioniert bestens.</p>
<p>Danke für den Tipp<br />
Gruß<br />
Daniel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1167509</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1167509</guid><dc:creator><![CDATA[DanielusITF]]></dc:creator><pubDate>Fri, 03 Nov 2006 09:30:56 GMT</pubDate></item></channel></rss>