<?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[GDI Handles und Freigabe]]></title><description><![CDATA[<p>Hi!<br />
Ich hab ein Problem:<br />
folgender code funktioniert nicht, da das übergebene HDC zerstört wird. Wieso wird dadurch auch das hdc zerstört?</p>
<pre><code class="language-cpp">HDC hdc;
        HBITMAP hbitmap;

        /*Funktionsbeginn*/
        HDC _hdc=CreateDC(&quot;DISPLAY&quot;, &quot;DISPLAY&quot;, 0, 0);
        HDC _hpuffer= CreateCompatibleDC(_hdc);        
        hdc=_hpuffer;     

        HBITMAP _puffer=CreateCompatibleBitmap(_hdc, _width, _height);
        hbitmap=_puffer;
        SelectObject(hdc, hbitmap);

        DeleteObject(_hdc);            
        DeleteObject(_hpuffer); 
        DeleteObject(_puffer);  

        /*Funktionsende*/
</code></pre>
<p>wenn ich aber das &quot;DeleteObject(_hpuffer)&quot; funktioniert alles (d.h. der HDC bekommt später ein Bild zugewiesen dass sich ohne probleme auf den screen bringen lässt) -&gt; aber ich hab dann ein GDI-Leak.</p>
<p>Wieso kriege ich schon durch einfache zuweisungen wie<br />
&quot;HDC _hpuffer= CreateCompatibleDC(_hdc);&quot; ein GDI-leak, wenn ich _hpuffer nicht zerstöre??? Bei GetDC(hwnd) passiert das auch.</p>
<p>Was kann ich gegen diese behinderten Leaks machen, ohne dass mein HDC zerstört wird?</p>
<p>grüße<br />
chris90</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/134004/gdi-handles-und-freigabe</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Jul 2026 19:40:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/134004.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 22 Jan 2006 20:49:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to GDI Handles und Freigabe on Sun, 22 Jan 2006 20:49:48 GMT]]></title><description><![CDATA[<p>Hi!<br />
Ich hab ein Problem:<br />
folgender code funktioniert nicht, da das übergebene HDC zerstört wird. Wieso wird dadurch auch das hdc zerstört?</p>
<pre><code class="language-cpp">HDC hdc;
        HBITMAP hbitmap;

        /*Funktionsbeginn*/
        HDC _hdc=CreateDC(&quot;DISPLAY&quot;, &quot;DISPLAY&quot;, 0, 0);
        HDC _hpuffer= CreateCompatibleDC(_hdc);        
        hdc=_hpuffer;     

        HBITMAP _puffer=CreateCompatibleBitmap(_hdc, _width, _height);
        hbitmap=_puffer;
        SelectObject(hdc, hbitmap);

        DeleteObject(_hdc);            
        DeleteObject(_hpuffer); 
        DeleteObject(_puffer);  

        /*Funktionsende*/
</code></pre>
<p>wenn ich aber das &quot;DeleteObject(_hpuffer)&quot; funktioniert alles (d.h. der HDC bekommt später ein Bild zugewiesen dass sich ohne probleme auf den screen bringen lässt) -&gt; aber ich hab dann ein GDI-Leak.</p>
<p>Wieso kriege ich schon durch einfache zuweisungen wie<br />
&quot;HDC _hpuffer= CreateCompatibleDC(_hdc);&quot; ein GDI-leak, wenn ich _hpuffer nicht zerstöre??? Bei GetDC(hwnd) passiert das auch.</p>
<p>Was kann ich gegen diese behinderten Leaks machen, ohne dass mein HDC zerstört wird?</p>
<p>grüße<br />
chris90</p>
]]></description><link>https://www.c-plusplus.net/forum/post/973340</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/973340</guid><dc:creator><![CDATA[chris90]]></dc:creator><pubDate>Sun, 22 Jan 2006 20:49:48 GMT</pubDate></item><item><title><![CDATA[Reply to GDI Handles und Freigabe on Sun, 22 Jan 2006 20:55:12 GMT]]></title><description><![CDATA[<p>chris90 schrieb:</p>
<blockquote>
<p>Wieso kriege ich schon durch einfache zuweisungen wie<br />
&quot;HDC _hpuffer= CreateCompatibleDC(_hdc);&quot; ein GDI-leak</p>
</blockquote>
<p>Das ist zwar auch eine Zuweisung, aber zuallererst wird hier was &quot;erzeugt&quot; (create).</p>
<p>chris90 schrieb:</p>
<blockquote>
<p>Was kann ich gegen diese behinderten Leaks machen, ohne dass mein HDC zerstört wird?</p>
</blockquote>
<p>Die Handles in der richtigen Reihenfolge lösachen <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="😉"
    /><br />
Warum verwendest Du nicht BitBlt um das Bitmap zu Zeichnen? Ich bin mir gerade unsicher ob es mit dem &quot;SelectObject&quot; ausreicht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/973355</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/973355</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Sun, 22 Jan 2006 20:55:12 GMT</pubDate></item><item><title><![CDATA[Reply to GDI Handles und Freigabe on Mon, 23 Jan 2006 06:09:52 GMT]]></title><description><![CDATA[<p>Um das Bitmap zu zeichnen verwende ich später auch BitBlt.<br />
Könntest du meinen Code nicht einfach grad so umschreiben, dass es keine probleme mehr gibt? Weil ich hab schon versucht die handle-freigabe umzukehren aber es klappt nicht.</p>
<p>mfg<br />
chris90</p>
]]></description><link>https://www.c-plusplus.net/forum/post/973555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/973555</guid><dc:creator><![CDATA[chris90]]></dc:creator><pubDate>Mon, 23 Jan 2006 06:09:52 GMT</pubDate></item><item><title><![CDATA[Reply to GDI Handles und Freigabe on Mon, 23 Jan 2006 06:33:04 GMT]]></title><description><![CDATA[<p>Du musst das Bitmap natürlich erst Zeichnen, bevor Du was freigibst... das felt ja hier ganz in Deinem Code...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/973559</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/973559</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Mon, 23 Jan 2006 06:33:04 GMT</pubDate></item><item><title><![CDATA[Reply to GDI Handles und Freigabe on Mon, 23 Jan 2006 15:00:09 GMT]]></title><description><![CDATA[<p>ja aber die eigentlichen handles werden ja gar nicht gelöscht... nur die die die funktionen übergeben bekommen haben.</p>
<p>d.h. nach funktionsende sollten hdc und hbitmap beide noch funktionieren, oder??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/974007</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/974007</guid><dc:creator><![CDATA[chris90]]></dc:creator><pubDate>Mon, 23 Jan 2006 15:00:09 GMT</pubDate></item><item><title><![CDATA[Reply to GDI Handles und Freigabe on Mon, 23 Jan 2006 18:19:03 GMT]]></title><description><![CDATA[<p>Ich weiss ja nicht was die Zuweisungen zu &quot;hdc&quot; und &quot;hbitmap&quot; sind... aber diese werden auf jeden Fall gelöscht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/974208</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/974208</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Mon, 23 Jan 2006 18:19:03 GMT</pubDate></item><item><title><![CDATA[Reply to GDI Handles und Freigabe on Mon, 23 Jan 2006 20:11:28 GMT]]></title><description><![CDATA[<p>Was machst du denn mit hpuffer ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/974305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/974305</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Mon, 23 Jan 2006 20:11:28 GMT</pubDate></item></channel></rss>