<?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[Fehlerhafte Funktion]]></title><description><![CDATA[<p>Warum funktioniert diese Funktion hier nicht, wenn ich sie in WM_PAINT aufrufe:#</p>
<pre><code class="language-cpp">int DrawTiles(HWND hWnd)
{
	int x=0;
	int y=0;
	int i=0;
	HDC hdc,bufferhdc;

	hdc=GetDC(hWnd);
	bufferhdc=CreateCompatibleDC(hdc);

	while (y&lt;=150&amp;&amp;i&lt;=tile_number)
	{
		x=0;
		while (x&lt;=96&amp;&amp;i&lt;=tile_number)
		{
			SelectObject (bufferhdc,hTiles[i]);
			BitBlt (hdc,x,y,32,30,bufferhdc,0,0,SRCCOPY);
                        //hTiles besitzt gültige Werte!!!
			x+=32;
			i++;
		}
		i++;		
		y+=30;
	}
	return 0;
}
</code></pre>
<p>Bin echt am verzweifeln...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/102921/fehlerhafte-funktion</link><generator>RSS for Node</generator><lastBuildDate>Fri, 01 May 2026 08:11:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/102921.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 02 Mar 2005 20:17:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehlerhafte Funktion on Wed, 02 Mar 2005 20:17:04 GMT]]></title><description><![CDATA[<p>Warum funktioniert diese Funktion hier nicht, wenn ich sie in WM_PAINT aufrufe:#</p>
<pre><code class="language-cpp">int DrawTiles(HWND hWnd)
{
	int x=0;
	int y=0;
	int i=0;
	HDC hdc,bufferhdc;

	hdc=GetDC(hWnd);
	bufferhdc=CreateCompatibleDC(hdc);

	while (y&lt;=150&amp;&amp;i&lt;=tile_number)
	{
		x=0;
		while (x&lt;=96&amp;&amp;i&lt;=tile_number)
		{
			SelectObject (bufferhdc,hTiles[i]);
			BitBlt (hdc,x,y,32,30,bufferhdc,0,0,SRCCOPY);
                        //hTiles besitzt gültige Werte!!!
			x+=32;
			i++;
		}
		i++;		
		y+=30;
	}
	return 0;
}
</code></pre>
<p>Bin echt am verzweifeln...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/736392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/736392</guid><dc:creator><![CDATA[MasterCounter]]></dc:creator><pubDate>Wed, 02 Mar 2005 20:17:04 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerhafte Funktion on Wed, 02 Mar 2005 20:35:57 GMT]]></title><description><![CDATA[<p>Hmm,</p>
<p>ich glaube, man sollte in Reaktion auf WM_PAINT nicht GetDC aufrufen, sondern stattdessen BeginPaint und EndPaint verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/736409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/736409</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 02 Mar 2005 20:35:57 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerhafte Funktion on Wed, 02 Mar 2005 20:40:46 GMT]]></title><description><![CDATA[<p>Das Problem dabei ist aber, dass ich die Funktion auch noch bei anderen Messages aufrufen will und dan kann ich ja schlecht BeginPaint und EndPaint verwenden, oder? Aber bei den andren Messages funktioniert die Funktion auch manchmal nicht richtig... Obwohl sie ja vom Grundegerüst her stimmt oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/736413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/736413</guid><dc:creator><![CDATA[MasterCounter]]></dc:creator><pubDate>Wed, 02 Mar 2005 20:40:46 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerhafte Funktion on Wed, 02 Mar 2005 20:47:00 GMT]]></title><description><![CDATA[<p>Kleine Nachfrage: Er zeigt die Tiles nicht an, oder was funzt nicht ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/736420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/736420</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Wed, 02 Mar 2005 20:47:00 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerhafte Funktion on Wed, 02 Mar 2005 20:48:35 GMT]]></title><description><![CDATA[<p>jep... immer nur das zuletzt einbgefügte... und das allerdings an der richtigen position von x und y... Ich versuchs jetzt nochmal statt in WM_PAINT mit einer anderen Message...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/736421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/736421</guid><dc:creator><![CDATA[MasterCounter]]></dc:creator><pubDate>Wed, 02 Mar 2005 20:48:35 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerhafte Funktion on Wed, 02 Mar 2005 20:49:38 GMT]]></title><description><![CDATA[<blockquote>
<p>Das Problem dabei ist aber, dass ich die Funktion auch noch bei anderen Messages aufrufen will und dan kann ich ja schlecht BeginPaint und EndPaint verwenden, oder?</p>
</blockquote>
<p>Ich kann ja nicht mehr machen, als dich darauf hinweisen, wie es in der MSDN steht.<br />
Deine Sache.<br />
Außerdem möchte ich dich noch auf die Funktionen ReleaseDC und FreeDC hinweisen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/736423</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/736423</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 02 Mar 2005 20:49:38 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerhafte Funktion on Wed, 02 Mar 2005 20:57:02 GMT]]></title><description><![CDATA[<p>Wenn du kein BeginPaint/EndPaint in der WM_PAINT drin hast, sollte zumindest nen ValidateRect() ans Ende der WM_PAINT, sonst ballert Windows dein Fenster weiter mit WM_PAINT Nachrichten zu.</p>
<p>Was meinen denn die Rückgabewerte und GetLastError() ?<br />
Die Bitmaps in hTiles[] sind ja auch nicht noch irgendwo in einen anderen DC selektiert ?</p>
<p>Das Handle von CreateCompatibleDC() solltest du wie bereits erwähnt am Ende auch wieder freigeben (mit DeleteDC)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/736433</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/736433</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Wed, 02 Mar 2005 20:57:02 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerhafte Funktion on Thu, 03 Mar 2005 14:46:22 GMT]]></title><description><![CDATA[<p>verdammt, könnte tatsächlich am selektieren liegen... ohoh... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
Aber im Prinzip könnte ich mir ja auch ein HDC Array erstellen, in das ich dann die einzelnen Bitmaps reinlade, dann hab ich ja das Problem mit dem noch selektiert nicht mehr, oder?<br />
Also:</p>
<pre><code class="language-cpp">HDC hdcTiles[100];
HBITMAP hTile;

hTile = LoadImage (...);
SelectObject (hdcTiles[tiles_number],hTile);

//und dann in meiner Funktion DrawTiles()
BitBlt (hdc,....,hdcTiles[i],...);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/736772</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/736772</guid><dc:creator><![CDATA[MasterCounter]]></dc:creator><pubDate>Thu, 03 Mar 2005 14:46:22 GMT</pubDate></item></channel></rss>