<?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[Probleme mit InvalidateRect]]></title><description><![CDATA[<p>Hallo Leute!</p>
<p>Schreib grad an meinem ersten WinAPI-Programm, funktioniert bisher auch ganz gut, hab da nur ein Problem: Ich hab so ne Art zweigeteilten Bildschirm - links Menü, rechts Ausgabebereich. Im Ausgabebereich soll sich was bewegen, dazu ruf ich immer InvalidateRect für den Ausgabebereich auf:</p>
<pre><code>RECT rect = {230,0,700,500};
InvalidateRect(hWnd, &amp;rect, false);
</code></pre>
<p>Aber aus irgendeinem Grund flackert das Menü lustig mit... Kann mir jemand erklären, was ich falsch gemacht habe? Oder wie ich es anders lösen könnte (Double-Buffering find ich hier etwas übertrieben, im Ausgabebereich fällt das flackern im Prinzip überhaupt nicht auf, da hier keine gefüllten Flächen auftauchen)</p>
<p>Bye, Ghan</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/101692/probleme-mit-invalidaterect</link><generator>RSS for Node</generator><lastBuildDate>Fri, 01 May 2026 08:48:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/101692.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 18 Feb 2005 14:48:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme mit InvalidateRect on Fri, 18 Feb 2005 14:48:24 GMT]]></title><description><![CDATA[<p>Hallo Leute!</p>
<p>Schreib grad an meinem ersten WinAPI-Programm, funktioniert bisher auch ganz gut, hab da nur ein Problem: Ich hab so ne Art zweigeteilten Bildschirm - links Menü, rechts Ausgabebereich. Im Ausgabebereich soll sich was bewegen, dazu ruf ich immer InvalidateRect für den Ausgabebereich auf:</p>
<pre><code>RECT rect = {230,0,700,500};
InvalidateRect(hWnd, &amp;rect, false);
</code></pre>
<p>Aber aus irgendeinem Grund flackert das Menü lustig mit... Kann mir jemand erklären, was ich falsch gemacht habe? Oder wie ich es anders lösen könnte (Double-Buffering find ich hier etwas übertrieben, im Ausgabebereich fällt das flackern im Prinzip überhaupt nicht auf, da hier keine gefüllten Flächen auftauchen)</p>
<p>Bye, Ghan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/726559</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/726559</guid><dc:creator><![CDATA[Ghan]]></dc:creator><pubDate>Fri, 18 Feb 2005 14:48:24 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit InvalidateRect on Sat, 19 Feb 2005 10:57:31 GMT]]></title><description><![CDATA[<p>Hm, ich kann dir zwar jetzt so aus dem FF nicht sagen warum, aber ich kann dir eine andere Variante Vorschlagen:</p>
<pre><code class="language-cpp">RedrawWindow(hWnd,&amp;rect,NULL, RDW_ERASE | RDW_INVALIDATE)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/727037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/727037</guid><dc:creator><![CDATA[MiC++ha]]></dc:creator><pubDate>Sat, 19 Feb 2005 10:57:31 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit InvalidateRect on Sun, 20 Feb 2005 08:58:15 GMT]]></title><description><![CDATA[<p>Du musst natuerlich den WM_PAINT-Handler so schreiben, dass er Deine Update-Region beruecksichtigt. Wie das geht, siehe BeginPaint() Dokumentation, und die Links, die dort sind. Notfalls musst Du eine eigene Clip-Region setzen. Aber i.d.R. reicht auch GetUpdateRgn() und GetRegionRects().</p>
]]></description><link>https://www.c-plusplus.net/forum/post/727719</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/727719</guid><dc:creator><![CDATA[Power Off]]></dc:creator><pubDate>Sun, 20 Feb 2005 08:58:15 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit InvalidateRect on Sun, 20 Feb 2005 09:46:18 GMT]]></title><description><![CDATA[<p>Jo, danke, werde das dann mal versuchen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/727753</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/727753</guid><dc:creator><![CDATA[Ghan]]></dc:creator><pubDate>Sun, 20 Feb 2005 09:46:18 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit InvalidateRect on Sun, 20 Feb 2005 15:51:51 GMT]]></title><description><![CDATA[<p>lad doch mal den ganz projekt irgendwo hoch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/728068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/728068</guid><dc:creator><![CDATA[runterlader]]></dc:creator><pubDate>Sun, 20 Feb 2005 15:51:51 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit InvalidateRect on Sun, 20 Feb 2005 16:49:43 GMT]]></title><description><![CDATA[<p>Power Off schrieb:</p>
<blockquote>
<p>Du musst natuerlich den WM_PAINT-Handler so schreiben, dass er Deine Update-Region beruecksichtigt.</p>
</blockquote>
<p>Quatsch, dafür ist doch Clipping da, damit du das nicht berücksichtigen musst, sondern das sowieso nur das neugezeichnet wird, was sich im Clippingbereich befindet.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/8658">@Ghan</a>: Ich würds mir auch mal anschauen, solltest du dein Projekt irgendwo hochladen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/728136</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/728136</guid><dc:creator><![CDATA[D*niel *chumann]]></dc:creator><pubDate>Sun, 20 Feb 2005 16:49:43 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit InvalidateRect on Sun, 20 Feb 2005 16:55:39 GMT]]></title><description><![CDATA[<p>Sind das Menü und der Arbeitsbereich ein und dasselbe Fenster?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/728142</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/728142</guid><dc:creator><![CDATA[???????]]></dc:creator><pubDate>Sun, 20 Feb 2005 16:55:39 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit InvalidateRect on Sun, 20 Feb 2005 23:59:11 GMT]]></title><description><![CDATA[<p>??????? schrieb:</p>
<blockquote>
<p>Sind das Menü und der Arbeitsbereich ein und dasselbe Fenster?</p>
</blockquote>
<p>Normalerweise ist das sichtbare Fenster unterteilt in Non-Client-Area und in Client-Area. Das Client-Area verfuegt ueber eigene Clip-Region, die das Ueberschreiben des Non-Client-Area verhindert.</p>
<p>Verarbeitet ein Programm WM_NCxxx Messages (Non-Client-Area-Messages), kann es durchaus dafuer sorgen, dass auch das Non-Client-Area beschreibbar wird.</p>
<p>In so einem Fall muss man natuerlich achtgeben, wohin man zeichnet.</p>
<p>So oder so, GetUpdateRgn() und GetRegionRects() helfen dabei, die Update-Region naeher einzugrenzen, und das Zeichnen dahingehend zu beschraenken, was nicht nur das WM_PAINT Handling deutlich beschleunigt.</p>
<p>Zeichnet man in WM_PAINT immer alles neu, wird das Programm unter Umstaenden sehr langsam und blockiert unnoetig die Oberflaeche. (Sieht man deutlich, wenn man ein anderes Fenster mit der Maus ueber das betreffende Fenster zieht und schnell hin- und her-bewegt)</p>
<p>Das Beruecksichtigen der Clip-Region beim normalen Clipping-Prozess ist keineswegs schnell. Deswegen kann sich manuelles Einschraenken auf die tatsaechliche Update-Region durchaus lohnen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/728439</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/728439</guid><dc:creator><![CDATA[Power Off]]></dc:creator><pubDate>Sun, 20 Feb 2005 23:59:11 GMT</pubDate></item></channel></rss>