<?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[SelectObject! Wozu?]]></title><description><![CDATA[<p>Hallo,</p>
<p>kann mir mal jemand erklären wozu ich SelectObject brauche?</p>
<p>Hab in der MSDN gelesen, da heisst es das ich dem 2. Parameter von SelectObject den Typ des ersten Paramters zuweise(??????)</p>
<p>Ich versteh das nicht.</p>
<p>Ein Beispiel:</p>
<p>In einer Methode in der alle Ressourcen freigegeben werden müssen steht folgendes:</p>
<pre><code>if(old_bmp)
	{
		SelectObject(back_hdc,old_bmp); // Select back original HBITMAP
		old_bmp = NULL;
	}
</code></pre>
<p>wobei back_hdc vom Typ HDC ist und old_bmp vom Typ HBITMAP ist.</p>
<p>Was bringt das bitte? Wann und warum ich SelectObject brauche?</p>
<p>Wäre dankbar für Antworten... <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>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/118522/selectobject-wozu</link><generator>RSS for Node</generator><lastBuildDate>Fri, 03 Jul 2026 23:52:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/118522.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 21 Aug 2005 14:36:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to SelectObject! Wozu? on Sun, 21 Aug 2005 14:37:29 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>kann mir mal jemand erklären wozu ich SelectObject brauche?</p>
<p>Hab in der MSDN gelesen, da heisst es das ich dem 2. Parameter von SelectObject den Typ des ersten Paramters zuweise(??????)</p>
<p>Ich versteh das nicht.</p>
<p>Ein Beispiel:</p>
<p>In einer Methode in der alle Ressourcen freigegeben werden müssen steht folgendes:</p>
<pre><code>if(old_bmp)
	{
		SelectObject(back_hdc,old_bmp); // Select back original HBITMAP
		old_bmp = NULL;
	}
</code></pre>
<p>wobei back_hdc vom Typ HDC ist und old_bmp vom Typ HBITMAP ist.</p>
<p>Was bringt das bitte? Wann und warum ich SelectObject brauche?</p>
<p>Wäre dankbar für Antworten... <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>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/855445</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/855445</guid><dc:creator><![CDATA[Edenus]]></dc:creator><pubDate>Sun, 21 Aug 2005 14:37:29 GMT</pubDate></item><item><title><![CDATA[Reply to SelectObject! Wozu? on Sun, 21 Aug 2005 15:44:34 GMT]]></title><description><![CDATA[<blockquote>
<p>The SelectObject function selects an object into the specified device context (DC).</p>
</blockquote>
<p>Dieses Object kann z.B. ein Brush, Font, Pen, o.ä. sein - warum brauchst du das? Ganz einfach, weil in einem DC immer nur ein Object jeder Sorte aktiv sein kann. Willst du jetzt z.B. mit einer anderen Pen-Farbe zeichnen, dann selektierst du einfach den entsprechenden Pen in den DC.</p>
<p>Zu dem Code-Beispiel, das du gepostet hast: Du kannst / solltest keine GDI-Objekte löschen, die noch in einen DC selektiert sind - also selektierst du einfach wieder das zuvor aktive Objekt wieder zurück und kannst dann das andere wieder freigeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/855479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/855479</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Sun, 21 Aug 2005 15:44:34 GMT</pubDate></item><item><title><![CDATA[Reply to SelectObject! Wozu? on Sun, 21 Aug 2005 16:01:39 GMT]]></title><description><![CDATA[<p>Wenn du in Windows irgendeine Graphikausgabe machen willst dann brauschat du dazu erst mal ein Device Handle.<br />
Wenn du nichts anderes machst sind da einmal gewisse Standard Objecte ( Werkzeuge ) selektiert. Wenn du jetzt aber andere Werkzeuge ( Brush, Bitmap, Font, Region ... ) verwenden willst dann geht man normalerweise folgendermassen vor.<br />
z.b<br />
1. Brush erzeugen<br />
2. Brush in den DC selektieren<br />
3. Brush verwenden<br />
4. Originale Brush selektieren<br />
5. Brush freigeben<br />
Aus diesem Grund gibt dir SelectObject das Object vom gleichen Typ zurück das vorher selektiert war.<br />
Du solltest es also folgendermassen Verwenden</p>
<pre><code class="language-cpp">HBRUSH oldBrush = (HBRUSH)SelectObject( dc, newBrush ); // cast ist notwendig da SelectObject verschiedenartige Handles zurückgibt
 .... // newBrush werwenden
 SelectObject( dc, oldBrush ); // Vorherige Brush zurückselektieren
 DeleteObject( newBrush );     // Brush freigeben
</code></pre>
<p>Wenn du das nicht so machst und ein selektiertes Objekt freigibst bringst du damit Windows total durcheinander das kann bis zum Totalabsturz von Windows führen.<br />
Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/855487</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/855487</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Sun, 21 Aug 2005 16:01:39 GMT</pubDate></item><item><title><![CDATA[Reply to SelectObject! Wozu? on Sun, 21 Aug 2005 16:17:36 GMT]]></title><description><![CDATA[<p>Das fehlende Zurückselektieren fällt leider bei Windows XP (glaub auch 2000) nicht auf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/855495</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/855495</guid><dc:creator><![CDATA[so]]></dc:creator><pubDate>Sun, 21 Aug 2005 16:17:36 GMT</pubDate></item></channel></rss>