<?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[BitBlt ?]]></title><description><![CDATA[<p>Hi, wollte mal fragen warum folgendes funktioniert:</p>
<pre><code class="language-cpp">void paintBlocks()
{
	hdcBoard = CreateCompatibleDC(GetDC(0));
	HDC tHDC;
	for(int i = 0; i &lt; BOARDW; i++)
	{
		for(int j = 0; j &lt; BOARDH; j++)
		{
			if(myField[i][j] &gt; 0)
			{
				stone tmp = myStones.at(myField[i][j]-1);
				tHDC = getBitmapHDC(tmp.bitmap);

				BitBlt(hdcBoard, i*16,j*16,16,16,tHDC,0,0,SRCAND);

			}

		}
	}
	HDC test = GetDC(0);
	BitBlt(test, 0,0,16,16,tHDC,0,0,SRCCOPY); //&lt;-------- blit von tHDC
}
</code></pre>
<p>dies aber nicht:</p>
<pre><code class="language-cpp">void paintBlocks()
{
	hdcBoard = CreateCompatibleDC(GetDC(0));
	HDC tHDC;
	for(int i = 0; i &lt; BOARDW; i++)
	{
		for(int j = 0; j &lt; BOARDH; j++)
		{
			if(myField[i][j] &gt; 0)
			{
				stone tmp = myStones.at(myField[i][j]-1);
				tHDC = getBitmapHDC(tmp.bitmap);

				BitBlt(hdcBoard, i*16,j*16,16,16,tHDC,0,0,SRCAND);

			}

		}
	}
	HDC test = GetDC(0);
	BitBlt(test, 0,0,16,16,hdcBoard,0,0,SRCCOPY);//&lt;-------- blit von hdcBoard
}
</code></pre>
<p>Dazu sei gesagt, dass momentan nur ein block auf 0,0 liegt.</p>
<p>wär super, danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/183936/bitblt</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Jul 2026 19:10:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/183936.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 10 Jun 2007 16:41:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to BitBlt ? on Sun, 10 Jun 2007 16:42:14 GMT]]></title><description><![CDATA[<p>Hi, wollte mal fragen warum folgendes funktioniert:</p>
<pre><code class="language-cpp">void paintBlocks()
{
	hdcBoard = CreateCompatibleDC(GetDC(0));
	HDC tHDC;
	for(int i = 0; i &lt; BOARDW; i++)
	{
		for(int j = 0; j &lt; BOARDH; j++)
		{
			if(myField[i][j] &gt; 0)
			{
				stone tmp = myStones.at(myField[i][j]-1);
				tHDC = getBitmapHDC(tmp.bitmap);

				BitBlt(hdcBoard, i*16,j*16,16,16,tHDC,0,0,SRCAND);

			}

		}
	}
	HDC test = GetDC(0);
	BitBlt(test, 0,0,16,16,tHDC,0,0,SRCCOPY); //&lt;-------- blit von tHDC
}
</code></pre>
<p>dies aber nicht:</p>
<pre><code class="language-cpp">void paintBlocks()
{
	hdcBoard = CreateCompatibleDC(GetDC(0));
	HDC tHDC;
	for(int i = 0; i &lt; BOARDW; i++)
	{
		for(int j = 0; j &lt; BOARDH; j++)
		{
			if(myField[i][j] &gt; 0)
			{
				stone tmp = myStones.at(myField[i][j]-1);
				tHDC = getBitmapHDC(tmp.bitmap);

				BitBlt(hdcBoard, i*16,j*16,16,16,tHDC,0,0,SRCAND);

			}

		}
	}
	HDC test = GetDC(0);
	BitBlt(test, 0,0,16,16,hdcBoard,0,0,SRCCOPY);//&lt;-------- blit von hdcBoard
}
</code></pre>
<p>Dazu sei gesagt, dass momentan nur ein block auf 0,0 liegt.</p>
<p>wär super, danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302599</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302599</guid><dc:creator><![CDATA[pixartist]]></dc:creator><pubDate>Sun, 10 Jun 2007 16:42:14 GMT</pubDate></item><item><title><![CDATA[Reply to BitBlt ? on Sun, 10 Jun 2007 16:58:05 GMT]]></title><description><![CDATA[<p>Weil in dein Memory-DC &quot;hdcBoard&quot; nur eine 1x1 große Monochrom-Bitmap selektiert ist.<br />
Du musst nach CreateCompatibleDC() noch eine Bitmap erzeugen (CreateCompatibleBitmap()) und rein-selektieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302606</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302606</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Sun, 10 Jun 2007 16:58:05 GMT</pubDate></item><item><title><![CDATA[Reply to BitBlt ? on Sun, 10 Jun 2007 17:25:02 GMT]]></title><description><![CDATA[<p>geeky schrieb:</p>
<blockquote>
<p>Weil in dein Memory-DC &quot;hdcBoard&quot; nur eine 1x1 große Monochrom-Bitmap selektiert ist.<br />
Du musst nach CreateCompatibleDC() noch eine Bitmap erzeugen (CreateCompatibleBitmap()) und rein-selektieren.</p>
</blockquote>
<p>hm danke, kannste mir kurz zeigen wie ich das genau machen soll ?</p>
<p>wenn ich jetzt folgendes mache:</p>
<pre><code class="language-cpp">void paintBlocks()
{
	HDC tHDC;
	for(int i = 0; i &lt; BOARDW; i++)
	{
		for(int j = 0; j &lt; BOARDH; j++)
		{
			if(myField[i][j] &gt; 0)
			{
				stone tmp = myStones.at(myField[i][j]-1);
				tHDC = getBitmapHDC(tmp.bitmap);

				BitBlt(hdcBoard, i*16,j*16,16,16,tHDC,0,0,SRCCOPY);

			}

		}
	}
}
</code></pre>
<pre><code class="language-cpp">case WM_PAINT :
				GetWindowRect(hDlg, &amp;winCoords);
			      paintBlocks();
				  hdc = BeginPaint (hDlg, &amp;ps) ;
				  if(hdcBoard)
				  {

					  BitBlt (hdc, boardCoords.left-winCoords.left, boardCoords.top-winCoords.top-16, boardCoords.right-boardCoords.left, boardCoords.bottom-boardCoords.top, hdcBoard, 0, 0, SRCCOPY) ;	 
				  }
				  EndPaint (hDlg, &amp;ps);
               return 0 ;
</code></pre>
<p>dann bekommt ich nur n schwarzes bild <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<pre><code class="language-cpp">case WM_INITDIALOG: 

		hdcBoard = CreateCompatibleDC(GetDC(0));
		tBitmap = CreateCompatibleBitmap(hdcBoard,boardCoords.right-boardCoords.left,boardCoords.bottom-boardCoords.top);
		SelectObject(hdcBoard,(HBITMAP)tBitmap);

        return TRUE;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1302622</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302622</guid><dc:creator><![CDATA[pixartist]]></dc:creator><pubDate>Sun, 10 Jun 2007 17:25:02 GMT</pubDate></item><item><title><![CDATA[Reply to BitBlt ? on Sun, 10 Jun 2007 22:05:35 GMT]]></title><description><![CDATA[<p>Hast du schon versucht alle Inits und Aufrufe hintereinander und nicht in den unterschiedlichen WMs auszuführen...?<br />
Vlt werden die zwischendurchverändert...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302820</guid><dc:creator><![CDATA[Kuldren]]></dc:creator><pubDate>Sun, 10 Jun 2007 22:05:35 GMT</pubDate></item><item><title><![CDATA[Reply to BitBlt ? on Mon, 11 Jun 2007 05:38:41 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">ase WM_INITDIALOG:

        hdcBoard = CreateCompatibleDC(GetDC(0));
        tBitmap = CreateCompatibleBitmap(GetDC(0),boardCoords.right-boardCoords.left,boardCoords.bottom-boardCoords.top);
        SelectObject(hdcBoard,(HBITMAP)tBitmap);

        return TRUE;
</code></pre>
<p>Nimm bei CreateCompatibleBitmap() nicht hdcBoard!<br />
Bei CreateCompatibleDC() ist in hdcBoard standardmässig eine 1x1 Monochrom-Bitmap rein-selektiert. Wenn du dann CreateCompatibleBitmap() aufrufst mit hdcBoard als HDC-Parameter wird die Bitmap die du zurück bekommst auch Monochrom, bei GetDC(0) kriegt sie dieselbe Farbtiefe wie der Desktop.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302860</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Mon, 11 Jun 2007 05:38:41 GMT</pubDate></item><item><title><![CDATA[Reply to BitBlt ? on Mon, 11 Jun 2007 06:03:32 GMT]]></title><description><![CDATA[<p>wenn ich</p>
<pre><code class="language-cpp">tBitmap = CreateCompatibleBitmap(GetDC(0),boardCoords.right-boardCoords.left,boardCoords.bottom-boardCoords.top);
</code></pre>
<p>mache gehts aber auch nicht...<br />
und in GetDC(0) ist ja der gesamte bildschirminhalt drin <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
hmm</p>
<p>wenn ich statt</p>
<pre><code class="language-cpp">BitBlt(hdcBoard, i*16,j*16,16,16,tHDC,0,0,SRCAND);
</code></pre>
<pre><code class="language-cpp">BitBlt(hdcBoard, i*16,j*16,16,16,tHDC,0,0,SRCCOPY);
</code></pre>
<p>mache, dann gehts oO</p>
<p>edit: aber das ganzw wird, wie ich grade sehe UNTER die controls von meinem fenster gezeichnet oO<br />
wie kann ich über die controls zeichnen?<br />
UND<br />
wie kann ich mehrere bilder nacheinander in ein DC blitten(an verschiedene positionen, so das sie alle sichtbar sind)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302863</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302863</guid><dc:creator><![CDATA[pixartist]]></dc:creator><pubDate>Mon, 11 Jun 2007 06:03:32 GMT</pubDate></item><item><title><![CDATA[Reply to BitBlt ? on Mon, 11 Jun 2007 11:14:17 GMT]]></title><description><![CDATA[<p>pixartist schrieb:</p>
<blockquote>
<p>wenn ich</p>
<pre><code class="language-cpp">tBitmap = CreateCompatibleBitmap(GetDC(0),boardCoords.right-boardCoords.left,boardCoords.bottom-boardCoords.top);
</code></pre>
<p>mache gehts aber auch nicht...<br />
und in GetDC(0) ist ja der gesamte bildschirminhalt drin <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
hmm</p>
</blockquote>
<p>Du musst die Variable natürlich initialisieren und korrekt deklariern (mglw. static).</p>
<p>pixartist schrieb:</p>
<blockquote>
<p>wenn ich statt</p>
<pre><code class="language-cpp">BitBlt(hdcBoard, i*16,j*16,16,16,tHDC,0,0,SRCAND);
</code></pre>
<pre><code class="language-cpp">BitBlt(hdcBoard, i*16,j*16,16,16,tHDC,0,0,SRCCOPY);
</code></pre>
<p>mache, dann gehts oO</p>
</blockquote>
<p>Vllt. mal die MSDN zu den ROP-Codes lesen...</p>
<p>pixartist schrieb:</p>
<blockquote>
<p>edit: aber das ganzw wird, wie ich grade sehe UNTER die controls von meinem fenster gezeichnet oO<br />
wie kann ich über die controls zeichnen?</p>
</blockquote>
<p>Da musst Du die Controls subclassen, da Du unter deren WM_PAINT zeichen musst. Andernfalls würde der Button Dein gezeichnetes Meisterwerk wieder übermalen.</p>
<p>pixartist schrieb:</p>
<blockquote>
<p>wie kann ich mehrere bilder nacheinander in ein DC blitten(an verschiedene positionen, so das sie alle sichtbar sind)?</p>
</blockquote>
<p>Mit BitBlt und entsprchenden unterschiedlichen Positionsangaben. Ggfs. auch via Back-Buffering (siehe google, FAQ, falls unbekannt).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303039</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Mon, 11 Jun 2007 11:14:17 GMT</pubDate></item><item><title><![CDATA[Reply to BitBlt ? on Mon, 11 Jun 2007 11:41:23 GMT]]></title><description><![CDATA[<p>CodeFinder schrieb:</p>
<blockquote>
<p>pixartist schrieb:</p>
<blockquote>
<p>wie kann ich mehrere bilder nacheinander in ein DC blitten(an verschiedene positionen, so das sie alle sichtbar sind)?</p>
</blockquote>
<p>Mit BitBlt und entsprchenden unterschiedlichen Positionsangaben. Ggfs. auch via Back-Buffering (siehe google, FAQ, falls unbekannt).</p>
</blockquote>
<p>hmm hab ich mir eig. auch gedacht, kannste mir dann aber erklären, warum das hier:</p>
<pre><code class="language-cpp">HDC tHDC;
	stone tmp;
		for(int i = 0; i &lt; BOARDW; i++)
		{
			for(int j = 0; j &lt; BOARDH; j++)
			{
				if(myField[i][j] &gt; 0)
				{
					tmp = myStones.at(myField[i][j]-1);
					tHDC = getBitmapHDC(tmp.bitmap);
					BitBlt(hdcBoard, i*16,j*16,16,16,tHDC,0,0,SRCCOPY);

				}

			}
		}
</code></pre>
<p>immur nur den ersten(!) block blittet?</p>
<p>dh. wenn ich folgendes mache:</p>
<pre><code class="language-cpp">myField[0][0] = 1;
	myField[0][1] = 1;
</code></pre>
<p>dann wird nur der auf 0,0 gezeichnet, wenn ich aber die erste zeile auskommentiere, wird der auf 0,1 gezeichnet usw</p>
<p>edit: ok das muss an einem anderen teil meines codes liegen <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=":/"
      alt="😕"
    /></p>
<p>hab mich mit subclassing noch nicht beschäftigt..hättest da mal nen link / code ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303048</guid><dc:creator><![CDATA[pixartist]]></dc:creator><pubDate>Mon, 11 Jun 2007 11:41:23 GMT</pubDate></item><item><title><![CDATA[Reply to BitBlt ? on Mon, 11 Jun 2007 14:34:31 GMT]]></title><description><![CDATA[<p>pixartist schrieb:</p>
<blockquote>
<p>edit: ok das muss an einem anderen teil meines codes liegen <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=":/"
      alt="😕"
    /></p>
<p>hab mich mit subclassing noch nicht beschäftigt..hättest da mal nen link / code ?</p>
</blockquote>
<p>Klar <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="😉"
    /> ... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> <a href="http://winapi.net/index.php?inhalt=s27" rel="nofollow">http://winapi.net/index.php?inhalt=s27</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303215</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Mon, 11 Jun 2007 14:34:31 GMT</pubDate></item></channel></rss>