<?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[CreatePopupMenu]]></title><description><![CDATA[<p>hi,</p>
<p>ich hab ein menü welches bei rechtsklick auf das trayicon meines programmes erscheint; dies funktioniert ansich einwandfrei, jedoch wird dadurch das programm solange angehalten, bis ein item gewählt wurde bzw. es &quot;weggeklickt&quot; wurde.</p>
<p>könnte mir jemand einen tipp geben damit es trotzdem weiterläuft auch wenn das popup menü aktiv ist?<br />
ich finde einfach keine lösung..</p>
<p>danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/107331/createpopupmenu</link><generator>RSS for Node</generator><lastBuildDate>Tue, 30 Jun 2026 03:28:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/107331.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 18 Apr 2005 15:48:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CreatePopupMenu on Mon, 18 Apr 2005 15:48:59 GMT]]></title><description><![CDATA[<p>hi,</p>
<p>ich hab ein menü welches bei rechtsklick auf das trayicon meines programmes erscheint; dies funktioniert ansich einwandfrei, jedoch wird dadurch das programm solange angehalten, bis ein item gewählt wurde bzw. es &quot;weggeklickt&quot; wurde.</p>
<p>könnte mir jemand einen tipp geben damit es trotzdem weiterläuft auch wenn das popup menü aktiv ist?<br />
ich finde einfach keine lösung..</p>
<p>danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/769599</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/769599</guid><dc:creator><![CDATA[Noir]]></dc:creator><pubDate>Mon, 18 Apr 2005 15:48:59 GMT</pubDate></item><item><title><![CDATA[Reply to CreatePopupMenu on Mon, 18 Apr 2005 19:31:43 GMT]]></title><description><![CDATA[<p>hier noch mal ein beispiel falls meine formulierung unklar sein sollte:<br />
kurzer codeauschnitt<br />
...</p>
<p>case WM_RBUTTONUP: // rechte Maustaste</p>
<p>SetForegroundWindow(hwnd);<br />
GetCursorPos(&amp;pt);<br />
Auswahl = (int)TrackPopupMenu(hMenu, TPM_RIGHTBUTTON | TPM_RETURNCMD, pt.x, pt.y, 0, hwnd, NULL);</p>
<p>PostMessage(hwnd, WM_NULL, 0, 0);</p>
<p>if (Auswahl==3)<br />
{....}</p>
<p>...</p>
<p>also wenn mit rechtsklick das menü aufgerufen wird dann wartet das programm solange bis der benutzer eine auswahl gemacht hat und ich wollte wissen ob und wie es möglich ist, dass das programm trotzdem unblockiert weiterläuft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/769854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/769854</guid><dc:creator><![CDATA[Noir]]></dc:creator><pubDate>Mon, 18 Apr 2005 19:31:43 GMT</pubDate></item><item><title><![CDATA[Reply to CreatePopupMenu on Mon, 18 Apr 2005 20:14:33 GMT]]></title><description><![CDATA[<p>TPM_RETURNCMD weglassen und via WM_COMMAND feststellen, was gewählt wurde <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";D"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/769880</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/769880</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Mon, 18 Apr 2005 20:14:33 GMT</pubDate></item><item><title><![CDATA[Reply to CreatePopupMenu on Mon, 18 Apr 2005 21:25:51 GMT]]></title><description><![CDATA[<p>hi,</p>
<p>danke das geht!!</p>
<p>nur ein problem hab ich noch:</p>
<pre><code class="language-cpp">...
case WM_COMMAND:
 if ( LOWORD( wParam ) == 3) //3 ist mein menüitem
{
	  //mach irgendwas
}

...
...

 case WM_RBUTTONUP: // rechte Maustaste

    SetForegroundWindow(hwnd);		
    GetCursorPos(&amp;pt); 
    TrackPopupMenu(hMenu, TPM_RIGHTBUTTON , pt.x, pt.y, 0, hwnd, NULL); 
    PostMessage(hwnd, WM_NULL, 0, 0); 
....
</code></pre>
<p>wenn ich nun rechtklick mache wird dies erkannt &quot;//mach irgendwas&quot; wird ausgeführt, programm läuft weiter, nur blöderweise wird &quot;//mach irgendwas&quot; immer wieder ausgeführt (ununterbrochen ohne erneuerte aktivierung durch menüauswahl) ?? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
was könnte mein fehler sein? steh ich auf dem schlauch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/769937</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/769937</guid><dc:creator><![CDATA[Noir]]></dc:creator><pubDate>Mon, 18 Apr 2005 21:25:51 GMT</pubDate></item><item><title><![CDATA[Reply to CreatePopupMenu on Tue, 19 Apr 2005 10:43:01 GMT]]></title><description><![CDATA[<p>zu &quot;case&quot; hast du auch überall nen &quot;break&quot; oder ?<br />
Prüf mal noch lParam und HIWORD(wParam) - vielleicht kommen die gar nicht vom Menü...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/770201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/770201</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Tue, 19 Apr 2005 10:43:01 GMT</pubDate></item><item><title><![CDATA[Reply to CreatePopupMenu on Fri, 22 Apr 2005 17:50:23 GMT]]></title><description><![CDATA[<p>hi, ich poste mal einen gekürzten code auschnitte (ich hoffe ich hab nicht zu viel gekürzt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> )</p>
<pre><code class="language-cpp">switch (message)
    {

    case WM_COMMAND:
 if ( LOWORD( wParam ) == 3) //bei auswahl des menüitem 3
{

//mach was
}
break;

    case WM_CREATE:

      hMenu = CreatePopupMenu (); // Menu anlegen 

      InsertMenu (hMenu, 0, MF_BYPOSITION, 0, &quot;bla&quot;);
      InsertMenu (hMenu, 1, MF_BYPOSITION, 1, &quot;bla&quot;);
      InsertMenu (hMenu, 2, MF_SEPARATOR, 0, NULL); // Separator 
      InsertMenu (hMenu, 3, MF_BYPOSITION, 3, &quot;bla&quot;);
      break ;

    case WM_PAINT:
        hdc = BeginPaint (hwnd, &amp;ps) ;
        EndPaint (hwnd, &amp;ps) ;
        break ;

//Nachricht bei klick auf das Icon in der Taskbar
    case WM_ICONCLICK:
        switch(lParam)
        {
            case WM_LBUTTONUP: // linke Maustaste
                //..bla
	   break;

            case WM_RBUTTONUP: // rechte Maustaste

    SetForegroundWindow(hwnd);		
    GetCursorPos(&amp;pt); 
    TrackPopupMenu(hMenu, TPM_RIGHTBUTTON , pt.x, pt.y, 0, hwnd, NULL); 
    PostMessage(hwnd, WM_NULL, 0, 0); 
    break;
        }
        return 0;

    case WM_DESTROY:
// Icon entfernen
		DestroyMenu (hMenu);

        Icon_in_Taskleiste (hwnd, FALSE); // Icon aus der Taskleiste entfernen
        DestroyIcon (hIcon); // Speicher freigeben

        PostQuitMessage (0) ;
        return 0 ;

    default:
    //  Taskleiste  neu gestartet:
        if (message == s_uTaskbarRestart)
        Icon_in_Taskleiste (hwnd, TRUE); // Icon in die Taskleiste setzen
        break;
     }

    return DefWindowProc (hwnd, message, wParam, lParam) ;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/770506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/770506</guid><dc:creator><![CDATA[Noir]]></dc:creator><pubDate>Fri, 22 Apr 2005 17:50:23 GMT</pubDate></item><item><title><![CDATA[Reply to CreatePopupMenu on Tue, 19 Apr 2005 22:41:27 GMT]]></title><description><![CDATA[<p>die message wird irgendwie nicht gelöscht? das eie message von wo anders her kommt kann ich mir nicht vorstellen, sonst würde dies doch nicht nur als folge eines ersten rechtsklick passieren. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/770786</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/770786</guid><dc:creator><![CDATA[Noir]]></dc:creator><pubDate>Tue, 19 Apr 2005 22:41:27 GMT</pubDate></item><item><title><![CDATA[Reply to CreatePopupMenu on Wed, 20 Apr 2005 05:05:38 GMT]]></title><description><![CDATA[<p>Du solltest vielleicht auch den HIWORD noch auswerten, denn es gibt sicher einige Nachrichten mit LOWORD von 3 <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/770805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/770805</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Wed, 20 Apr 2005 05:05:38 GMT</pubDate></item><item><title><![CDATA[Reply to CreatePopupMenu on Wed, 20 Apr 2005 16:56:56 GMT]]></title><description><![CDATA[<p>sorry, aber ich find leider nirgends was HIWORD (wParam) zurückgeben soll?, ich dachte zuerst halt das handle vom menü if (HIWORD (wParam) == hMenu)... aber das ist total falsch... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/771484</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/771484</guid><dc:creator><![CDATA[Noir]]></dc:creator><pubDate>Wed, 20 Apr 2005 16:56:56 GMT</pubDate></item><item><title><![CDATA[Reply to CreatePopupMenu on Wed, 20 Apr 2005 19:29:19 GMT]]></title><description><![CDATA[<p>Sorry, sehe gerade, dass das im MSDN-Example auch nicht gemacht wird - ansonsten:</p>
<blockquote>
<p>The high-order word specifies the notification code if the message is from a control. [..] If the message is from a menu, this value is zero.</p>
</blockquote>
<p>Der Fehler steckt also wo anders. Kann es vielleicht sein, dass du bei einem darüberliegenden case das break vergessen hast, oder was ändert sich durch den Mausklick (denn davor bekommst du ja nicht dauernd diese Nachricht)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/771618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/771618</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Wed, 20 Apr 2005 19:29:19 GMT</pubDate></item><item><title><![CDATA[Reply to CreatePopupMenu on Wed, 20 Apr 2005 21:35:21 GMT]]></title><description><![CDATA[<p>ich werd mir morgen den code nochmal gründlich vornehmen, aber mal eine kurze zwischenfrage:</p>
<p>wie bekomme ich das handle vom menü?<br />
mit LOWORD( wParam ) bekomme das ausgewählte menüitem, aber wie finde ich heraus von welchem menü diese kommt. (also in meinem beispiel hMenu) ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/771717</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/771717</guid><dc:creator><![CDATA[Noir]]></dc:creator><pubDate>Wed, 20 Apr 2005 21:35:21 GMT</pubDate></item><item><title><![CDATA[Reply to CreatePopupMenu on Fri, 22 Apr 2005 16:16:15 GMT]]></title><description><![CDATA[<p>so, ich hab jetzt mal rumprobiert</p>
<p>wenn ich</p>
<p>[cpp] case WM_COMMAND:<br />
if ( LOWORD( wParam ) == 3) //bei auswahl des menüitem 3<br />
{<br />
//mach was<br />
<strong>PostMessage(hwnd, WM_NULL, 0, 0);</strong>//neu<br />
}<br />
break; [/cpp]</p>
<p>das postmessage da rein nehme tritt der fehler nicht mehr auf? ist das nun korrekt oder ist das nun gewissermassen &quot;zufall&quot; das es dadurch jetzt geht?</p>
<p>und weiß nun vielleicht jemand wie ich an das handle vom menü komme?<br />
also wenn ich jetzt mehrer menüs habe</p>
<p>hMenu1 = CreatePopupMenu ();<br />
InsertMenu (hMenu1, 0, MF_BYPOSITION, 1, &quot;text1&quot;);</p>
<p>hMenu2 = CreatePopupMenu ();<br />
InsertMenu (hMenu2, 0, MF_BYPOSITION, 1, &quot;text2&quot;);</p>
<p>dann bekomme ich ja mit LOWORD( wParam ) == 1 für beide menüs eine übereinstimmung?</p>
<p>cu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/773102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/773102</guid><dc:creator><![CDATA[Noir]]></dc:creator><pubDate>Fri, 22 Apr 2005 16:16:15 GMT</pubDate></item><item><title><![CDATA[Reply to CreatePopupMenu on Fri, 22 Apr 2005 16:24:58 GMT]]></title><description><![CDATA[<p>LOWORD( wParam ) sollte eigentlich für beide 0 sein, denn da wird die ID übergeben - das wass du bei InsertMenu als zweites angegeben hast. Dafür definiert man sich für gewöhnlich Konstanten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/773110</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/773110</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Fri, 22 Apr 2005 16:24:58 GMT</pubDate></item></channel></rss>