<?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[Bitmap in Popup-Menü]]></title><description><![CDATA[<p>Hallo.</p>
<p>ich habe folgenden code geschrieben, um meinen button in der toolbar ein kleins menü hinzuzufügen:</p>
<pre><code class="language-cpp">BOOL CMainFrame::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
//...
		CBitmap *MyBmp;
		MyBmp-&gt;LoadBitmap(IDB_TEST);
		CDC MyBmpDC;
		MyBmpDC.CreateCompatibleDC(NULL);
		MyBmpDC.SelectObject(MyBmp);

		CMenu men;
		men.CreatePopupMenu ( );
		men.AppendMenu (MF_STRING, iItem, MyBmp);
		men.AppendMenu (MF_STRING, iItem, &quot;Sample 1&quot;);
		men.AppendMenu (MF_STRING, iItem, &quot;Sample 2&quot;);
		men.TrackPopupMenu( 0, pt.x, pt.y, this );

		men.DestroyMenu ( );
}
</code></pre>
<p>leider stürzt mein programm dabei immer ab, in der wingdi.cpp datei, in folgender funktion:</p>
<pre><code class="language-cpp">BOOL CGdiObject::Attach(HGDIOBJ hObject)
{
	ASSERT(m_hObject == NULL);      // only attach once, detach on destroy
	if (hObject == NULL)
	{
		return FALSE;
	}
	// remember early to avoid leak
	m_hObject = hObject;
	CHandleMap* pMap = afxMapHGDIOBJ(TRUE); // create map if not exist
	ASSERT(pMap != NULL);
	pMap-&gt;SetPermanent(m_hObject, this);
	return TRUE;
}
</code></pre>
<p>1.) was muss an meinem code verändert werden, damit ich das bild im menü sehen kann?<br />
2.) mit welcher memberfunktion kann ich abfragen, welches item gedrückt wurde (Sample 1, Sample 2 oder das bild)? konnte das leider nicht in der online MSDN-hilfe finden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
DANKE.<br />
STICK.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/166182/bitmap-in-popup-menü</link><generator>RSS for Node</generator><lastBuildDate>Fri, 26 Jun 2026 01:07:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/166182.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 27 Nov 2006 03:16:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Bitmap in Popup-Menü on Mon, 27 Nov 2006 05:54:24 GMT]]></title><description><![CDATA[<p>Hallo.</p>
<p>ich habe folgenden code geschrieben, um meinen button in der toolbar ein kleins menü hinzuzufügen:</p>
<pre><code class="language-cpp">BOOL CMainFrame::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
//...
		CBitmap *MyBmp;
		MyBmp-&gt;LoadBitmap(IDB_TEST);
		CDC MyBmpDC;
		MyBmpDC.CreateCompatibleDC(NULL);
		MyBmpDC.SelectObject(MyBmp);

		CMenu men;
		men.CreatePopupMenu ( );
		men.AppendMenu (MF_STRING, iItem, MyBmp);
		men.AppendMenu (MF_STRING, iItem, &quot;Sample 1&quot;);
		men.AppendMenu (MF_STRING, iItem, &quot;Sample 2&quot;);
		men.TrackPopupMenu( 0, pt.x, pt.y, this );

		men.DestroyMenu ( );
}
</code></pre>
<p>leider stürzt mein programm dabei immer ab, in der wingdi.cpp datei, in folgender funktion:</p>
<pre><code class="language-cpp">BOOL CGdiObject::Attach(HGDIOBJ hObject)
{
	ASSERT(m_hObject == NULL);      // only attach once, detach on destroy
	if (hObject == NULL)
	{
		return FALSE;
	}
	// remember early to avoid leak
	m_hObject = hObject;
	CHandleMap* pMap = afxMapHGDIOBJ(TRUE); // create map if not exist
	ASSERT(pMap != NULL);
	pMap-&gt;SetPermanent(m_hObject, this);
	return TRUE;
}
</code></pre>
<p>1.) was muss an meinem code verändert werden, damit ich das bild im menü sehen kann?<br />
2.) mit welcher memberfunktion kann ich abfragen, welches item gedrückt wurde (Sample 1, Sample 2 oder das bild)? konnte das leider nicht in der online MSDN-hilfe finden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
DANKE.<br />
STICK.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1182002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1182002</guid><dc:creator><![CDATA[stick_thai]]></dc:creator><pubDate>Mon, 27 Nov 2006 05:54:24 GMT</pubDate></item><item><title><![CDATA[Reply to Bitmap in Popup-Menü on Mon, 27 Nov 2006 09:05:52 GMT]]></title><description><![CDATA[<p>stick_thai schrieb:</p>
<blockquote>
<p>[cpp]<br />
BOOL CMainFrame::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)<br />
{<br />
//...<br />
*<em>CBitmap <em>MyBmp;<br />
MyBmp-&gt;LoadBitmap(IDB_TEST);</em></em> <em>CDC MyBmpDC;<br />
MyBmpDC.CreateCompatibleDC(NULL);<br />
MyBmpDC.SelectObject(MyBmp);</em><br />
}[/cpp]</p>
</blockquote>
<p>Den kursiven Teil kannst Du vergessen. Du brauchst keinen DC hier.</p>
<p>Du hast einen Zeiger auf eine Bitmap angelegt und diesen nicht initialisiert!<br />
Es muss aber ein Objekt vorhanden sein, also:</p>
<pre><code class="language-cpp">CBitmap bmpMy;
		bmpMy.LoadBitmap(IDB_TEST);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1182081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1182081</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Mon, 27 Nov 2006 09:05:52 GMT</pubDate></item><item><title><![CDATA[Reply to Bitmap in Popup-Menü on Mon, 27 Nov 2006 12:32:10 GMT]]></title><description><![CDATA[<p>danke. funktioniert jetzt. es musste nur noch folgende zeile her:</p>
<pre><code class="language-cpp">men.AppendMenu (MF_STRING, iItem, &amp;bmpMy);
</code></pre>
<p>wie kann ich aber nun abfragen, welche der optionen im menue gedrueckt wurde?</p>
<p>DANKE.<br />
STICK.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1182252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1182252</guid><dc:creator><![CDATA[*stick_thai]]></dc:creator><pubDate>Mon, 27 Nov 2006 12:32:10 GMT</pubDate></item><item><title><![CDATA[Reply to Bitmap in Popup-Menü on Mon, 27 Nov 2006 13:09:17 GMT]]></title><description><![CDATA[<p>*stick_thai schrieb:</p>
<blockquote>
<p>wie kann ich aber nun abfragen, welche der optionen im menue gedrueckt wurde?</p>
</blockquote>
<p><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="😕"
    /> Ich verstehe die Frage nicht. Das ist ein Menü!<br />
Folgerichtig versendet es, wie jedes andere Menü WM_COMMAND Nachrichten für die Du ON_COMMAND Handler brauchst.<br />
Du kannst natürlich auch TPM_RETURNCMD übergeben und damit direkt das Ergebnis bekommen.<br />
Ich bevorzuge alerdings die Handler Methode, weil diese auch entsprechende ON_UPDATE_COMMAND Handler zulässt!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1182289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1182289</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Mon, 27 Nov 2006 13:09:17 GMT</pubDate></item></channel></rss>