<?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+::Image Problem]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe mir eine eigene kleine ImageList gemacht und wollte für die Images eigentlich ein Array des Typs Gdiplus::Image nehmen. Nun klappt das aber irgendwie nicht.</p>
<p>Folgender Code zum Zeichnen funktioniert:</p>
<pre><code class="language-cpp">void ImageList::Draw(::HDC &amp;hDC, const ::POINT &amp;Point)
{
    Gdiplus::Image Image(L&quot;Test.png&quot;);
    Gdiplus::Graphics Graphics(hDC);

    Graphics.DrawImage(&amp;Image, Point.x, Point.y);
}
</code></pre>
<p>Wenn nun aber die Klasse einen privaten Member des Type Gdiplus::Image *m_pImage enthält und ich ich die Draw Methode wie folgt abändere. Kann ich später im Destruktor den Zeiger nich mehr Löschen. Ich erhalte eine &quot;Zugriffsverletzung an Position...&quot; (beim delete Aufruf des Zeigers);</p>
<pre><code class="language-cpp">void ImageList::Draw(::HDC &amp;hDC, const ::POINT &amp;Point)
{
    this-&gt;m_pImage = new Gdiplus::Image(L&quot;Test.png&quot;);
    Gdiplus::Graphics Graphics(hDC);

    Graphics.DrawImage(this-&gt;m_pImage, Point.x, Point.y);
}
</code></pre>
<p>Könnte mir jemand erkären woran das liegt?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/181054/gdi-image-problem</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Apr 2026 04:37:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/181054.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 09 May 2007 14:14:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to GDI+::Image Problem on Wed, 09 May 2007 14:14:38 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe mir eine eigene kleine ImageList gemacht und wollte für die Images eigentlich ein Array des Typs Gdiplus::Image nehmen. Nun klappt das aber irgendwie nicht.</p>
<p>Folgender Code zum Zeichnen funktioniert:</p>
<pre><code class="language-cpp">void ImageList::Draw(::HDC &amp;hDC, const ::POINT &amp;Point)
{
    Gdiplus::Image Image(L&quot;Test.png&quot;);
    Gdiplus::Graphics Graphics(hDC);

    Graphics.DrawImage(&amp;Image, Point.x, Point.y);
}
</code></pre>
<p>Wenn nun aber die Klasse einen privaten Member des Type Gdiplus::Image *m_pImage enthält und ich ich die Draw Methode wie folgt abändere. Kann ich später im Destruktor den Zeiger nich mehr Löschen. Ich erhalte eine &quot;Zugriffsverletzung an Position...&quot; (beim delete Aufruf des Zeigers);</p>
<pre><code class="language-cpp">void ImageList::Draw(::HDC &amp;hDC, const ::POINT &amp;Point)
{
    this-&gt;m_pImage = new Gdiplus::Image(L&quot;Test.png&quot;);
    Gdiplus::Graphics Graphics(hDC);

    Graphics.DrawImage(this-&gt;m_pImage, Point.x, Point.y);
}
</code></pre>
<p>Könnte mir jemand erkären woran das liegt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281680</guid><dc:creator><![CDATA[HaJo.]]></dc:creator><pubDate>Wed, 09 May 2007 14:14:38 GMT</pubDate></item><item><title><![CDATA[Reply to GDI+::Image Problem on Wed, 09 May 2007 15:16:47 GMT]]></title><description><![CDATA[<p>Es ist sinnfrei das Bild in der Zeichenmethode zu laden. Davon abgesehen solltest du vllt mal debuggen und gucken wo du dir den Bereich auf den der Zeiger zeigt schrottest. Und beim freigeben vorher auch mal gucken ob denn der Zeiger existiert ...hmm obwohl letzters ist unnötig, da laut std. auch löschen eines NULL-Zeigers erlaubt ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281748</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281748</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Wed, 09 May 2007 15:16:47 GMT</pubDate></item><item><title><![CDATA[Reply to GDI+::Image Problem on Wed, 09 May 2007 15:52:53 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<p>Es ist sinnfrei das Bild in der Zeichenmethode zu laden. Davon abgesehen solltest du vllt mal debuggen und gucken wo du dir den Bereich auf den der Zeiger zeigt schrottest.</p>
</blockquote>
<p>Da gebe ich dir Recht, aber da es anders irgenwie überhaupt nicht funktioniert...<br />
Zeigeradressen vor Aufruf von Graphics.DrawImage und hinterher sind gleich. Der Fehler tritt direkt beim delete Aufruf</p>
<pre><code class="language-cpp">delete this-&gt;m_pImage;
</code></pre>
<p>auf.</p>
<p>(D)Evil schrieb:</p>
<blockquote>
<p>Und beim freigeben vorher auch mal gucken ob denn der Zeiger existiert ...hmm obwohl letzters ist unnötig, da laut std. auch löschen eines NULL-Zeigers erlaubt ist.</p>
</blockquote>
<p>Ja, ich prüfe IMMER. Desweiteren nutze ich NIE NULL für &quot;leere&quot; Zeiger sondern 0.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281774</guid><dc:creator><![CDATA[HaJo.]]></dc:creator><pubDate>Wed, 09 May 2007 15:52:53 GMT</pubDate></item><item><title><![CDATA[Reply to GDI+::Image Problem on Wed, 09 May 2007 17:42:16 GMT]]></title><description><![CDATA[<blockquote>
<p>Ja, ich prüfe IMMER. Desweiteren nutze ich NIE NULL für &quot;leere&quot; Zeiger sondern 0.</p>
</blockquote>
<p>... ist ja auch in dem Fall gleich <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>
<blockquote>
<p>Zeigeradressen vor Aufruf von Graphics.DrawImage und hinterher sind gleich. Der Fehler tritt direkt beim delete Aufruf</p>
</blockquote>
<p>Hmm nein ich meinte eher du solltest mal dein Programm durchsteppen und immer gucken was dein Zeiger für nen Wert hat. Vllt schleicht sich irgendwo nen Fehler ein ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281837</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281837</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Wed, 09 May 2007 17:42:16 GMT</pubDate></item><item><title><![CDATA[Reply to GDI+::Image Problem on Wed, 09 May 2007 18:25:00 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<p>... ist ja auch in dem Fall gleich <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>
</blockquote>
<p>Schon klar. Schließlich sollte es ja</p>
<pre><code class="language-cpp">#define NULL 0;
</code></pre>
<p>heißen. Jedoch hatt e ich schon Probleme unter VS6 Windows XP, mit NULL und 0. Null ist eben nicht gleich Null. Desweiteren halte ich mich an den Hinweis von Herrn Stroustrup stets 0 zu nutzen.</p>
<p>(D)Evil schrieb:</p>
<blockquote>
<p>Hmm nein ich meinte eher du solltest mal dein Programm durchsteppen und immer gucken was dein Zeiger für nen Wert hat. Vllt schleicht sich irgendwo nen Fehler ein ...</p>
</blockquote>
<p>Ja, werde ich wohl noch einmal probieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281869</guid><dc:creator><![CDATA[HaJo.]]></dc:creator><pubDate>Wed, 09 May 2007 18:25:00 GMT</pubDate></item></channel></rss>