<?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[Crash nach GDI+-Funktion]]></title><description><![CDATA[<p>Bei Entdeckung einer bestimmten Message an die Haupt-Fensterprozedur lasse ich eine Funktion &quot;draw&quot; ausführen, die mithilfe der GDI+ eine Form anzeigen soll und wie folgt lautet:</p>
<pre><code class="language-cpp">void draw(HWND hwnd) {
	GdiplusStartupInput gdiplusStartupInput;
	ULONG_PTR gdiplusToken;
	PAINTSTRUCT ps;
	HDC hdc;

	GdiplusStartup(&amp;gdiplusToken, &amp;gdiplusStartupInput, NULL);

	hdc = BeginPaint(hwnd, &amp;ps);
	Graphics graphics(hdc);
	Pen pen(Gdiplus::Color(255, 0, 0, 255), 5);
	graphics.DrawRectangle(&amp;pen, 0, 0, 200, 100);
	EndPaint(hwnd, &amp;ps);

	GdiplusShutdown(gdiplusToken);
}
</code></pre>
<p>Da scheint es irgendwo einen Fehler zu geben, der das ganze zum Absturz bringt, NACHDEM die Funktion komplett ausgeführt wurde. Wenn man aber nach jeder Zeile eine MessageBox in der Funktion selbst einfügt, dann wird die noch angezeigt. Eine MessageBox nach dem Funktionsaufruf aber nicht mehr. Zudem lässt sich der Fehler vermeiden, wenn man die Zeilen 10-12 auskommentiert.</p>
<p>Irgendeine Idee, was hier dahinterstecken könnte?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/178506/crash-nach-gdi-funktion</link><generator>RSS for Node</generator><lastBuildDate>Fri, 10 Jul 2026 13:13:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/178506.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 11 Apr 2007 18:26:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Crash nach GDI+-Funktion on Wed, 11 Apr 2007 18:26:59 GMT]]></title><description><![CDATA[<p>Bei Entdeckung einer bestimmten Message an die Haupt-Fensterprozedur lasse ich eine Funktion &quot;draw&quot; ausführen, die mithilfe der GDI+ eine Form anzeigen soll und wie folgt lautet:</p>
<pre><code class="language-cpp">void draw(HWND hwnd) {
	GdiplusStartupInput gdiplusStartupInput;
	ULONG_PTR gdiplusToken;
	PAINTSTRUCT ps;
	HDC hdc;

	GdiplusStartup(&amp;gdiplusToken, &amp;gdiplusStartupInput, NULL);

	hdc = BeginPaint(hwnd, &amp;ps);
	Graphics graphics(hdc);
	Pen pen(Gdiplus::Color(255, 0, 0, 255), 5);
	graphics.DrawRectangle(&amp;pen, 0, 0, 200, 100);
	EndPaint(hwnd, &amp;ps);

	GdiplusShutdown(gdiplusToken);
}
</code></pre>
<p>Da scheint es irgendwo einen Fehler zu geben, der das ganze zum Absturz bringt, NACHDEM die Funktion komplett ausgeführt wurde. Wenn man aber nach jeder Zeile eine MessageBox in der Funktion selbst einfügt, dann wird die noch angezeigt. Eine MessageBox nach dem Funktionsaufruf aber nicht mehr. Zudem lässt sich der Fehler vermeiden, wenn man die Zeilen 10-12 auskommentiert.</p>
<p>Irgendeine Idee, was hier dahinterstecken könnte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264101</guid><dc:creator><![CDATA[Sniffman]]></dc:creator><pubDate>Wed, 11 Apr 2007 18:26:59 GMT</pubDate></item><item><title><![CDATA[Reply to Crash nach GDI+-Funktion on Wed, 11 Apr 2007 22:03:50 GMT]]></title><description><![CDATA[<p>Niemand 'ne Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264239</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264239</guid><dc:creator><![CDATA[Sniffman]]></dc:creator><pubDate>Wed, 11 Apr 2007 22:03:50 GMT</pubDate></item><item><title><![CDATA[Reply to Crash nach GDI+-Funktion on Wed, 11 Apr 2007 23:20:03 GMT]]></title><description><![CDATA[<p>Mittlerweile scheint es zu gehen. Aber auch nur, wenn ich das ganze in einem case-Block, der von der Message WM_PAINT ausgelöst wurde, ausführen lasse. In WM_INITDIALOG ging es nicht. Ich habe aber schon viele Codebeispiele im Internet gesehen, aus denen man eigentlich schließen könnte, dass das egal ist.</p>
<p>Also, mache ich hier irgendwas falsch, oder ist das tatsächlich so? Bitte um Aufklärung!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264267</guid><dc:creator><![CDATA[Sniffman]]></dc:creator><pubDate>Wed, 11 Apr 2007 23:20:03 GMT</pubDate></item><item><title><![CDATA[Reply to Crash nach GDI+-Funktion on Thu, 12 Apr 2007 05:09:52 GMT]]></title><description><![CDATA[<p>Das Problem ist, dass deine GDI+-Objekte noch &quot;leben&quot;, wenn du GdiplusShutdown aufrufst, denn da sie Autovariablen sind, werden sie erst zerstört, wenn der Block beendet ist, in dem sie angelegt worden sind. Das ist bei dir der Fall, wenn diese draw-Funktion an ihrem Ende angekommen ist.</p>
<p>Du kannst die GDI+-Objekte in ihren eigenen Scope-Block einschließen, dann klappt das. Es ist aber sowieso ein wenig seltsam, für jeden Zeichenvorgang GdiplusStartup und GdiplusShutdown aufzurufen. Das ist in etwa so, als ob du beim Laufen für jeden einzelnen Schritt die Schuhe an- und wieder ausziehst. Mach das einmal, am Anfang und am Ende des Programms (Ende heißt natürlich, nachdem <em>alle</em> GDI+-Objekte zerstört wurden).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264306</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Thu, 12 Apr 2007 05:09:52 GMT</pubDate></item><item><title><![CDATA[Reply to Crash nach GDI+-Funktion on Thu, 12 Apr 2007 07:42:14 GMT]]></title><description><![CDATA[<p>Ja, ich dachte mir schon sowas in der Art.</p>
<p>Nee, das was ich da im Moment mache ist nur einmal ein einziger Zeichenvorgang zum Test. Wenn ich später mehr habe, dann werde ich das natürlich auch anders managen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264370</guid><dc:creator><![CDATA[Sniffman]]></dc:creator><pubDate>Thu, 12 Apr 2007 07:42:14 GMT</pubDate></item><item><title><![CDATA[Reply to Crash nach GDI+-Funktion on Thu, 12 Apr 2007 07:53:16 GMT]]></title><description><![CDATA[<p>Trotzdem gehört es eher in WinMain rein ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264377</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Thu, 12 Apr 2007 07:53:16 GMT</pubDate></item><item><title><![CDATA[Reply to Crash nach GDI+-Funktion on Thu, 12 Apr 2007 09:25:58 GMT]]></title><description><![CDATA[<p>Gibt es bei mir nicht, da ich ein Plugin für eine Anwendung in DLL-Form schreibe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264436</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264436</guid><dc:creator><![CDATA[Sniffman]]></dc:creator><pubDate>Thu, 12 Apr 2007 09:25:58 GMT</pubDate></item><item><title><![CDATA[Reply to Crash nach GDI+-Funktion on Thu, 12 Apr 2007 09:33:51 GMT]]></title><description><![CDATA[<p>Dann halt bei DLL_PROCESS_ATTACH und DLL_PROCESS_DETACH in der DllMain ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264442</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Thu, 12 Apr 2007 09:33:51 GMT</pubDate></item><item><title><![CDATA[Reply to Crash nach GDI+-Funktion on Thu, 12 Apr 2007 10:29:21 GMT]]></title><description><![CDATA[<p>Im Magazin gibts einen GDI+ Artikel, da sind die Basics erklärt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264477</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264477</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Thu, 12 Apr 2007 10:29:21 GMT</pubDate></item><item><title><![CDATA[Reply to Crash nach GDI+-Funktion on Thu, 12 Apr 2007 11:23:12 GMT]]></title><description><![CDATA[<p>Hab ich gelesen. Gut geschrieben, sehr aufklärend, wenn man vorher keine Ahnung davon hatte. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264532</guid><dc:creator><![CDATA[Sniffman]]></dc:creator><pubDate>Thu, 12 Apr 2007 11:23:12 GMT</pubDate></item></channel></rss>