<?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[Bildschirmlupe]]></title><description><![CDATA[<p>Moin!</p>
<p>Win XP HOME, Microsoft Visual Studio .net Ver. 2003</p>
<p>Ich baue gerade ein Mini-Mini-Tool: Eine Bildschirmlupe</p>
<p>Per Timer (InvalidateRect,UpdateWindow) aktualisiere ich mein Lupen Fenster.</p>
<p>Mein Paintfunkt. sieht zusammengefasst so aus:</p>
<pre><code>case WM_PAINT:

        [...]
	hdcDesk=GetDC(hDesktop);
        [...]
        hdc=BeginPaint(hwnd,&amp;ps);
	StretchBlt(hdc,[...],hdcDesk,[..],SRCCOPY);
	EndPaint(hwnd,&amp;ps);
	ReleaseDC(hwnd,hdcDesk);

	return 0;
</code></pre>
<p>So nun stand ich aber vor dem Problem, dass die Lupe das eigene Lupenfenster auch vergrößert, wenn man mit dem Cursor sich über diesen befindet. Daher kam ich auf die Idee, das Zwischenbild in ein extra HDC zu packen, die ensprechende Fläche des Fensters einzufärben und schließlich das Bild in mein Lupenfenster zu BLTen:</p>
<pre><code>case WM_PAINT:

        [...]
	hdcDesk=GetDC(hDesktop);
        hdcDesk2=CreateCompatibleDC(hdcDesk);
        BitBlt(hdcDesk2,[...],hdcDesk,[...],SRCCOPY);
        FillRect(hdcDesk2,[...]);
        [...]
        hdc=BeginPaint(hwnd,&amp;ps);
	StretchBlt(hdc,[...],hdcDesk2,[..],SRCCOPY);
	EndPaint(hwnd,&amp;ps);
	ReleaseDC(hwnd,hdcDesk);
	ReleaseDC(hwnd,hdcDesk2);
	return 0;
</code></pre>
<p>So jetzt wird das Fenster aber nicht mehr aktualisiert und das entsprechende Rechteck des Lupenfensters ist auch net eingefärbt. Was stimmt denn da nicht?</p>
<p>mfg killsmaker</p>
<p>PS: Sry, für die Verschiebung im Code_Tag</p>
<p>:xmas1: :xmas1: :xmas1: :xmas1: :xmas1: :xmas1: :xmas1:</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/168084/bildschirmlupe</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 14:11:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/168084.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 18 Dec 2006 14:38:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Bildschirmlupe on Mon, 18 Dec 2006 14:38:29 GMT]]></title><description><![CDATA[<p>Moin!</p>
<p>Win XP HOME, Microsoft Visual Studio .net Ver. 2003</p>
<p>Ich baue gerade ein Mini-Mini-Tool: Eine Bildschirmlupe</p>
<p>Per Timer (InvalidateRect,UpdateWindow) aktualisiere ich mein Lupen Fenster.</p>
<p>Mein Paintfunkt. sieht zusammengefasst so aus:</p>
<pre><code>case WM_PAINT:

        [...]
	hdcDesk=GetDC(hDesktop);
        [...]
        hdc=BeginPaint(hwnd,&amp;ps);
	StretchBlt(hdc,[...],hdcDesk,[..],SRCCOPY);
	EndPaint(hwnd,&amp;ps);
	ReleaseDC(hwnd,hdcDesk);

	return 0;
</code></pre>
<p>So nun stand ich aber vor dem Problem, dass die Lupe das eigene Lupenfenster auch vergrößert, wenn man mit dem Cursor sich über diesen befindet. Daher kam ich auf die Idee, das Zwischenbild in ein extra HDC zu packen, die ensprechende Fläche des Fensters einzufärben und schließlich das Bild in mein Lupenfenster zu BLTen:</p>
<pre><code>case WM_PAINT:

        [...]
	hdcDesk=GetDC(hDesktop);
        hdcDesk2=CreateCompatibleDC(hdcDesk);
        BitBlt(hdcDesk2,[...],hdcDesk,[...],SRCCOPY);
        FillRect(hdcDesk2,[...]);
        [...]
        hdc=BeginPaint(hwnd,&amp;ps);
	StretchBlt(hdc,[...],hdcDesk2,[..],SRCCOPY);
	EndPaint(hwnd,&amp;ps);
	ReleaseDC(hwnd,hdcDesk);
	ReleaseDC(hwnd,hdcDesk2);
	return 0;
</code></pre>
<p>So jetzt wird das Fenster aber nicht mehr aktualisiert und das entsprechende Rechteck des Lupenfensters ist auch net eingefärbt. Was stimmt denn da nicht?</p>
<p>mfg killsmaker</p>
<p>PS: Sry, für die Verschiebung im Code_Tag</p>
<p>:xmas1: :xmas1: :xmas1: :xmas1: :xmas1: :xmas1: :xmas1:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1194038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1194038</guid><dc:creator><![CDATA[KILLSMAKER]]></dc:creator><pubDate>Mon, 18 Dec 2006 14:38:29 GMT</pubDate></item><item><title><![CDATA[Reply to Bildschirmlupe on Mon, 18 Dec 2006 16:47:19 GMT]]></title><description><![CDATA[<p>Nach CreateCompatibleDC brauchst du noch einen Aufruf von CreateCompatibleBitmap. Das so erzeugte Bitmap musst du dann mit SelectObject in deinen DC selektieren (sonst ist er 1x1 Pixel groß und schwarz-weiß)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1194127</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1194127</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Mon, 18 Dec 2006 16:47:19 GMT</pubDate></item></channel></rss>