<?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[Dialog mit Bitmap-Buttons-&amp;gt;Bitmaps verschwinden]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich habe eine dialogfeldbasierende Anwendung; alle Buttons habe ich dort mit Bitmaps belegt:</p>
<pre><code>bmp.LoadBitmap(IDB_BITMAP15);
	m_button1.SetBitmap(bmp);
	bmp.Detach();
</code></pre>
<p>bmp ist eine CBitmap-Klasse.</p>
<p>Im Dialog habe ich eine CListCtrl, der ich Elemente mit Bitmaps hinzufüge.</p>
<pre><code>lvitem.mask = LVIF_TEXT |  LVIF_IMAGE;
lvitem.iSubItem=0;
lvitem.pszText=name.GetBuffer(0);	
lvitem.iImage=sfi.iIcon;
lvitem.iItem=0;
m_list.InsertItem(&amp;lvitem);
</code></pre>
<p>sfi ist eine SHFILEINFO-Klasse.<br />
Soweit funktioniert das alles auch.<br />
Problem ist, wenn ich öfter und/oder in größerem Umfang (mehrere tausend) Elemente dieser Liste hinzufüge, verschwinden irgendwann die Bitmaps von meinen Buttons.</p>
<p>Nehme mal an, das ist irgendein Speicherproblem, oder?<br />
Ist die Datenmenge für die Liste zu groß, oder muss ich für jedes Element das ich der Liste hinzufüge Speicherplatz anfordern? (Keine Ahnung wie ich das machen soll).<br />
Den Inhalt der Liste lösche ich mit m_list.DeleteAllItems();</p>
<p>Bin für jeden Hinweis dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/191286/dialog-mit-bitmap-buttons-gt-bitmaps-verschwinden</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 04:38:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/191286.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 01 Sep 2007 09:25:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dialog mit Bitmap-Buttons-&amp;gt;Bitmaps verschwinden on Sat, 01 Sep 2007 09:25:32 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich habe eine dialogfeldbasierende Anwendung; alle Buttons habe ich dort mit Bitmaps belegt:</p>
<pre><code>bmp.LoadBitmap(IDB_BITMAP15);
	m_button1.SetBitmap(bmp);
	bmp.Detach();
</code></pre>
<p>bmp ist eine CBitmap-Klasse.</p>
<p>Im Dialog habe ich eine CListCtrl, der ich Elemente mit Bitmaps hinzufüge.</p>
<pre><code>lvitem.mask = LVIF_TEXT |  LVIF_IMAGE;
lvitem.iSubItem=0;
lvitem.pszText=name.GetBuffer(0);	
lvitem.iImage=sfi.iIcon;
lvitem.iItem=0;
m_list.InsertItem(&amp;lvitem);
</code></pre>
<p>sfi ist eine SHFILEINFO-Klasse.<br />
Soweit funktioniert das alles auch.<br />
Problem ist, wenn ich öfter und/oder in größerem Umfang (mehrere tausend) Elemente dieser Liste hinzufüge, verschwinden irgendwann die Bitmaps von meinen Buttons.</p>
<p>Nehme mal an, das ist irgendein Speicherproblem, oder?<br />
Ist die Datenmenge für die Liste zu groß, oder muss ich für jedes Element das ich der Liste hinzufüge Speicherplatz anfordern? (Keine Ahnung wie ich das machen soll).<br />
Den Inhalt der Liste lösche ich mit m_list.DeleteAllItems();</p>
<p>Bin für jeden Hinweis dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1356652</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1356652</guid><dc:creator><![CDATA[Christian]]></dc:creator><pubDate>Sat, 01 Sep 2007 09:25:32 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog mit Bitmap-Buttons-&amp;gt;Bitmaps verschwinden on Sun, 02 Sep 2007 12:38:09 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Weiß keiner Rat? <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="😞"
    /></p>
<p>Ich habe zwischenzeitlich mal folgendes versucht:<br />
Alles unnötige deaktiviert; nur mit ner Schleife 3000 Items dem CListCtrl hinzugefügt; alle items dann mit .DeleteAllItems gelöscht, und wieder 3000 in die Liste geschrieben.<br />
Das reicht dann schon, um das Programm zu &quot;zerstören&quot;. Bitmaps weg, wenn ich den Dialog verlasse (der wird von nem anderen Dialog aufgerufen) ist auch der Parent-Dialog &quot;zerstört&quot;. Muss dann das Programm beenden und neu starten; dann geht´s wieder.<br />
Habe auch versucht, mit malloc für jeden Eintrag in der Liste Speicherplatz zu reservieren; bringt aber garnix.<br />
Ist das CListCtrl evtl. Sch.... ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1357271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1357271</guid><dc:creator><![CDATA[Christian]]></dc:creator><pubDate>Sun, 02 Sep 2007 12:38:09 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog mit Bitmap-Buttons-&amp;gt;Bitmaps verschwinden on Sun, 02 Sep 2007 13:52:18 GMT]]></title><description><![CDATA[<p>Rufst du auch die SHFILEINFO-Klasse 3000 Mal auf. Dann hast du bestimmt die MSDN nicht durchgelesen und dir gehen die Handle aus. Denn laut MSDN mußt du das Handle von hIcon aus der Struktur SHFILEINFO wieder frei geben.</p>
<p>Gruß Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1357305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1357305</guid><dc:creator><![CDATA[CTecS]]></dc:creator><pubDate>Sun, 02 Sep 2007 13:52:18 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog mit Bitmap-Buttons-&amp;gt;Bitmaps verschwinden on Mon, 03 Sep 2007 14:53:01 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Sehr guter Tip. Das war die Lösung. DANKE.</p>
<p>So richtig verstehen tu ich´s zwar nicht, da ich das hIcon nicht benutze, sondern nur das iIcon (der Index des Systemicon).<br />
Möglicherweise hängt´s damit zusammen, das ich das hIcon ja mit initialisiere.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358019</guid><dc:creator><![CDATA[Christian]]></dc:creator><pubDate>Mon, 03 Sep 2007 14:53:01 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog mit Bitmap-Buttons-&amp;gt;Bitmaps verschwinden on Mon, 03 Sep 2007 20:54:19 GMT]]></title><description><![CDATA[<p>Wenn du die strucktur zurückbekommst ist diese initialisiert und da wird auch für das icon ein Handle erzeugt, dieses mußt du natürlich frei geben sonst gehen die irgendwann aus, ob du das Handle nutzt oder nicht is dabei vollkommen egal.</p>
<p>Aber schön das ich dir helfen konnte.</p>
<p>Gruß Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358345</guid><dc:creator><![CDATA[CTecS]]></dc:creator><pubDate>Mon, 03 Sep 2007 20:54:19 GMT</pubDate></item></channel></rss>