<?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[Volker Racho]]></title><description><![CDATA[<p>Nabend zusammen,</p>
<p>ich bastel gerade an nem programm, in dem ich unter anderem auch bitblt benutze. damit will ich wiederholt einen speicherkontext in ein fenster kopieren und damit so ne kleine 3D-animation machen. das klappt auch alles ne zeit land recht gut, doch ab einem gewissen punkt verschwinden auf einmal die farben (nur noch schwarz-weiss) und als nächstes fängt er an, nicht mehr in das fenster sondern auf den gesamten Bildschirm zu kopieren (also bezugspunkt ganz oben links -&gt; hdc=0? ohne stretchen oder ähnliches). hoffe das ist irgenwie klar geworden, ist n bißchen blöd zu erklären.</p>
<p>ich bezweifele, dass jemand lust hat sich durch den ganzen quellcode zu wühlen, aber vlt hat jemand aufgrund der genanten symptome schon einen verdacht. vlt habe ich ja irgendwelche objekte nicht gelöscht oder ähnliches, so dass sich das nach ner zeit aufsummiert und zu problemen führt. weiss nicht mehr, woran es noch liegen könnte. hab schon alles mögliche ausprobiert.</p>
<p>mein fehlerquellen-favorit ist diese fkt.</p>
<pre><code class="language-cpp">void drawPattern (HDC hdc, t_coord **P, double PhiZMax, int i, int j)
{
	POINT	apt[4];
	HBRUSH	hb [10];
	double	PhiZMean = (P[i][j].PhiZ + P[i+1][j].PhiZ + P[i+1][j+1].PhiZ + P[i][j+1].PhiZ)/4;

	hb[0] = CreateSolidBrush (RGB (190, 0, 0));
	hb[1] = CreateSolidBrush (RGB (255, 0, 0));
	hb[2] = CreateSolidBrush (RGB (255, 128, 0));
	hb[3] = CreateSolidBrush (RGB (255, 255, 0));
	hb[4] = CreateSolidBrush (RGB (128, 255, 0));
	hb[5] = CreateSolidBrush (RGB (0, 255, 0));
	hb[6] = CreateSolidBrush (RGB (0, 255, 128));
	hb[7] = CreateSolidBrush (RGB (0, 255, 255));
	hb[8] = CreateSolidBrush (RGB (0, 128, 255));
	hb[9] = CreateSolidBrush (RGB (0, 0, 255));

	apt[0].x	=(int)(P[i][j].x);		apt[0].y	=(int)(P[i][j].y);
	apt[1].x	=(int)(P[i+1][j].x);	apt[1].y	=(int)(P[i+1][j].y);
	apt[2].x	=(int)(P[i+1][j+1].x);	apt[2].y	=(int)(P[i+1][j+1].y);
	apt[3].x	=(int)(P[i][j+1].x);	apt[3].y	=(int)(P[i][j+1].y);

	if		((PhiZMean &lt;= PhiZMax) &amp;&amp; (PhiZMean &gt; 0.8*PhiZMax)) 	
		SelectObject (hdc, hb[0]);
	else if ((PhiZMean &lt;= 0.8*PhiZMax) &amp;&amp; (PhiZMean &gt; 0.6*PhiZMax)) 	
		SelectObject (hdc, hb[1]);
	else if ((PhiZMean &lt;= 0.6*PhiZMax) &amp;&amp; (PhiZMean &gt; 0.4*PhiZMax)) 	
		SelectObject (hdc, hb[2]);
	else if ((PhiZMean &lt;= 0.4*PhiZMax) &amp;&amp; (PhiZMean &gt; 0.2*PhiZMax )) 	
		SelectObject (hdc, hb[3]);
	else if ((PhiZMean &lt;= 0.2*PhiZMax) &amp;&amp; (PhiZMean &gt; 0)) 	
		SelectObject (hdc, hb[4]);
	else if ((PhiZMean &lt;= 0) &amp;&amp; (PhiZMean &gt; -0.2*PhiZMax)) 	
		SelectObject (hdc, hb[5]);
	else if ((PhiZMean &lt;= -0.2*PhiZMax) &amp;&amp; (PhiZMean &gt; -0.4*PhiZMax )) 	
		SelectObject (hdc, hb[6]);
	else if ((PhiZMean &lt;= -0.4*PhiZMax) &amp;&amp; (PhiZMean &gt; -0.6*PhiZMax)) 	
		SelectObject (hdc, hb[7]);
	else if ((PhiZMean &lt;= -0.6*PhiZMax) &amp;&amp; (PhiZMean &gt; -0.8*PhiZMax)) 	
		SelectObject (hdc, hb[8]);
	else if ((PhiZMean &lt;= -0.8*PhiZMax) &amp;&amp; (PhiZMean &gt;= -PhiZMax )) 	
		SelectObject (hdc, hb[9]);

	Polygon (hdc, apt, 4);

//	for (int i=0; i++; i&lt;10)
//		DeleteObject (hb[i]);
}
</code></pre>
<p>vlt sieht hier ja jemand einen fehler.</p>
<p>da ich das programm in einem seminar demonstrieren soll, wäre es schön wenn der fehler bis dahin verschwunden ist und ich ne gelungene präsentation zustande bringe <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="😉"
    /> ich bin also für jeden tip dankbar, und poste auch gerne mehr code, falls mehr infos benötigt werden.</p>
<p>gruß volker</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/149626/volker-racho</link><generator>RSS for Node</generator><lastBuildDate>Sun, 19 Jul 2026 08:18:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/149626.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 Jun 2006 20:55:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Volker Racho on Wed, 07 Jun 2006 20:55:59 GMT]]></title><description><![CDATA[<p>Nabend zusammen,</p>
<p>ich bastel gerade an nem programm, in dem ich unter anderem auch bitblt benutze. damit will ich wiederholt einen speicherkontext in ein fenster kopieren und damit so ne kleine 3D-animation machen. das klappt auch alles ne zeit land recht gut, doch ab einem gewissen punkt verschwinden auf einmal die farben (nur noch schwarz-weiss) und als nächstes fängt er an, nicht mehr in das fenster sondern auf den gesamten Bildschirm zu kopieren (also bezugspunkt ganz oben links -&gt; hdc=0? ohne stretchen oder ähnliches). hoffe das ist irgenwie klar geworden, ist n bißchen blöd zu erklären.</p>
<p>ich bezweifele, dass jemand lust hat sich durch den ganzen quellcode zu wühlen, aber vlt hat jemand aufgrund der genanten symptome schon einen verdacht. vlt habe ich ja irgendwelche objekte nicht gelöscht oder ähnliches, so dass sich das nach ner zeit aufsummiert und zu problemen führt. weiss nicht mehr, woran es noch liegen könnte. hab schon alles mögliche ausprobiert.</p>
<p>mein fehlerquellen-favorit ist diese fkt.</p>
<pre><code class="language-cpp">void drawPattern (HDC hdc, t_coord **P, double PhiZMax, int i, int j)
{
	POINT	apt[4];
	HBRUSH	hb [10];
	double	PhiZMean = (P[i][j].PhiZ + P[i+1][j].PhiZ + P[i+1][j+1].PhiZ + P[i][j+1].PhiZ)/4;

	hb[0] = CreateSolidBrush (RGB (190, 0, 0));
	hb[1] = CreateSolidBrush (RGB (255, 0, 0));
	hb[2] = CreateSolidBrush (RGB (255, 128, 0));
	hb[3] = CreateSolidBrush (RGB (255, 255, 0));
	hb[4] = CreateSolidBrush (RGB (128, 255, 0));
	hb[5] = CreateSolidBrush (RGB (0, 255, 0));
	hb[6] = CreateSolidBrush (RGB (0, 255, 128));
	hb[7] = CreateSolidBrush (RGB (0, 255, 255));
	hb[8] = CreateSolidBrush (RGB (0, 128, 255));
	hb[9] = CreateSolidBrush (RGB (0, 0, 255));

	apt[0].x	=(int)(P[i][j].x);		apt[0].y	=(int)(P[i][j].y);
	apt[1].x	=(int)(P[i+1][j].x);	apt[1].y	=(int)(P[i+1][j].y);
	apt[2].x	=(int)(P[i+1][j+1].x);	apt[2].y	=(int)(P[i+1][j+1].y);
	apt[3].x	=(int)(P[i][j+1].x);	apt[3].y	=(int)(P[i][j+1].y);

	if		((PhiZMean &lt;= PhiZMax) &amp;&amp; (PhiZMean &gt; 0.8*PhiZMax)) 	
		SelectObject (hdc, hb[0]);
	else if ((PhiZMean &lt;= 0.8*PhiZMax) &amp;&amp; (PhiZMean &gt; 0.6*PhiZMax)) 	
		SelectObject (hdc, hb[1]);
	else if ((PhiZMean &lt;= 0.6*PhiZMax) &amp;&amp; (PhiZMean &gt; 0.4*PhiZMax)) 	
		SelectObject (hdc, hb[2]);
	else if ((PhiZMean &lt;= 0.4*PhiZMax) &amp;&amp; (PhiZMean &gt; 0.2*PhiZMax )) 	
		SelectObject (hdc, hb[3]);
	else if ((PhiZMean &lt;= 0.2*PhiZMax) &amp;&amp; (PhiZMean &gt; 0)) 	
		SelectObject (hdc, hb[4]);
	else if ((PhiZMean &lt;= 0) &amp;&amp; (PhiZMean &gt; -0.2*PhiZMax)) 	
		SelectObject (hdc, hb[5]);
	else if ((PhiZMean &lt;= -0.2*PhiZMax) &amp;&amp; (PhiZMean &gt; -0.4*PhiZMax )) 	
		SelectObject (hdc, hb[6]);
	else if ((PhiZMean &lt;= -0.4*PhiZMax) &amp;&amp; (PhiZMean &gt; -0.6*PhiZMax)) 	
		SelectObject (hdc, hb[7]);
	else if ((PhiZMean &lt;= -0.6*PhiZMax) &amp;&amp; (PhiZMean &gt; -0.8*PhiZMax)) 	
		SelectObject (hdc, hb[8]);
	else if ((PhiZMean &lt;= -0.8*PhiZMax) &amp;&amp; (PhiZMean &gt;= -PhiZMax )) 	
		SelectObject (hdc, hb[9]);

	Polygon (hdc, apt, 4);

//	for (int i=0; i++; i&lt;10)
//		DeleteObject (hb[i]);
}
</code></pre>
<p>vlt sieht hier ja jemand einen fehler.</p>
<p>da ich das programm in einem seminar demonstrieren soll, wäre es schön wenn der fehler bis dahin verschwunden ist und ich ne gelungene präsentation zustande bringe <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="😉"
    /> ich bin also für jeden tip dankbar, und poste auch gerne mehr code, falls mehr infos benötigt werden.</p>
<p>gruß volker</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1073477</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1073477</guid><dc:creator><![CDATA[DC-Willkür]]></dc:creator><pubDate>Wed, 07 Jun 2006 20:55:59 GMT</pubDate></item><item><title><![CDATA[Reply to Volker Racho on Wed, 07 Jun 2006 20:58:48 GMT]]></title><description><![CDATA[<p>Warum hast du DeleteObject auskommentiert?</p>
<p>Und zur SelectObject Funktion:</p>
<p>This function returns the previously selected object of the specified type. An application should always replace a new object with the original, default object after it has finished drawing with the new object.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1073479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1073479</guid><dc:creator><![CDATA[----]]></dc:creator><pubDate>Wed, 07 Jun 2006 20:58:48 GMT</pubDate></item><item><title><![CDATA[Reply to Volker Racho on Wed, 07 Jun 2006 21:05:31 GMT]]></title><description><![CDATA[<p>DeleteObject hab ich auskommentiert, weils am fehler nix ändert. im petzold mein ich gelesen, dass man objekte in einem speicherkontext nicht löschen muss (die fkt bekommt als hdc einen speicherkontext übergeben. habs nur mal probeweise eingesetzt.</p>
<p>also meinst du, bei SelectObject sollte ich was in der Art machen:</p>
<pre><code class="language-cpp">oldBrush = SelectObject (hdc, newBrush);
... zeichnen ...
SelectObject (hdc, oldBrush);
</code></pre>
<p>meinst du denn, dass das zu dem beschriebenen fehler führen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1073481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1073481</guid><dc:creator><![CDATA[Volker Racho]]></dc:creator><pubDate>Wed, 07 Jun 2006 21:05:31 GMT</pubDate></item><item><title><![CDATA[Reply to Volker Racho on Wed, 07 Jun 2006 21:13:11 GMT]]></title><description><![CDATA[<p>in obiger form ändert es nix an dem fehler</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1073485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1073485</guid><dc:creator><![CDATA[Volker Racho]]></dc:creator><pubDate>Wed, 07 Jun 2006 21:13:11 GMT</pubDate></item><item><title><![CDATA[Reply to Volker Racho on Thu, 08 Jun 2006 06:21:26 GMT]]></title><description><![CDATA[<p>Du musst vor dem Löschen der Brushes in jedem Fall das alte Objekt wieder selektieren!<br />
Der Code so wie er gepostet ist erzeugt undendlich viele Brushes! Selbst Wenn Du das Löschen einbaust, wird der selektierte Brush nicht gelöscht, da er nicht aus dem DC entfernt wurde.<br />
Der Effekt ist nur zu erklärlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1073561</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1073561</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 08 Jun 2006 06:21:26 GMT</pubDate></item></channel></rss>