<?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[WM_Paint unregelmässig]]></title><description><![CDATA[<p>hi forum,<br />
ich habe ein problem, welches ich nicht wirklich nachvollziehen kann.</p>
<p>ich fange die systemweiten windows messages ab und verarbeite dabei die<br />
WM_Paint message. nur leider erhalte ich nicht alle, welche eigentlich kommen<br />
müssten.</p>
<p>zum test habe ich in einer anderen, eigenen anwendung ein panel erstellt,<br />
welches über einen timer jede sekunde die farbe wechselt. dies müsste dann<br />
ja eigentlich sekündlich eine win-message senden, richtig?</p>
<p>zur ausgabe habe ich also den handle, die zahl der aktuellen sekunde und die<br />
grösse der updateRegion ausgegeben. so siehts aus:</p>
<pre><code>WM_PAINT    Handle: 7015456    Sekunde: 11   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 11   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 12   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 12   RgnSize: {Width=44, Height=118}
WM_PAINT    Handle: 7015456    Sekunde: 12   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 13   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 14   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 14   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 15   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 15   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 16   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 17   RgnSize: {Width=44, Height=118}
WM_PAINT    Handle: 7015456    Sekunde: 17   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 18   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 18   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 19   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 19   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 20   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 21   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 21   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 22   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 22   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 23   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 24   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 24   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 25   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 25   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 26   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 26   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 27   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 27   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 28   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 28   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 29   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 29   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 30   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 30   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 31   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 33   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 34   RgnSize: {Width=44, Height=118}
WM_PAINT    Handle: 7015456    Sekunde: 34   RgnSize: {Width=0, Height=0}
</code></pre>
<p>ihr seht also, in den sekunden 11 bis 34 werden nur 3 updates gesendet.<br />
und warum soviele 'leere' messages kommen ist mir auch nicht ganz klar.</p>
<p>kann mir jemand auf die sprünge helfen?</p>
<p>mfg nullpunkt</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/212023/wm_paint-unregelmässig</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 14:01:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/212023.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 30 Apr 2008 11:38:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to WM_Paint unregelmässig on Wed, 30 Apr 2008 11:38:01 GMT]]></title><description><![CDATA[<p>hi forum,<br />
ich habe ein problem, welches ich nicht wirklich nachvollziehen kann.</p>
<p>ich fange die systemweiten windows messages ab und verarbeite dabei die<br />
WM_Paint message. nur leider erhalte ich nicht alle, welche eigentlich kommen<br />
müssten.</p>
<p>zum test habe ich in einer anderen, eigenen anwendung ein panel erstellt,<br />
welches über einen timer jede sekunde die farbe wechselt. dies müsste dann<br />
ja eigentlich sekündlich eine win-message senden, richtig?</p>
<p>zur ausgabe habe ich also den handle, die zahl der aktuellen sekunde und die<br />
grösse der updateRegion ausgegeben. so siehts aus:</p>
<pre><code>WM_PAINT    Handle: 7015456    Sekunde: 11   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 11   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 12   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 12   RgnSize: {Width=44, Height=118}
WM_PAINT    Handle: 7015456    Sekunde: 12   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 13   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 14   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 14   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 15   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 15   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 16   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 17   RgnSize: {Width=44, Height=118}
WM_PAINT    Handle: 7015456    Sekunde: 17   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 18   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 18   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 19   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 19   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 20   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 21   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 21   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 22   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 22   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 23   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 24   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 24   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 25   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 25   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 26   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 26   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 27   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 27   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 28   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 28   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 29   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 29   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 30   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 30   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 31   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 33   RgnSize: {Width=0, Height=0}
WM_PAINT    Handle: 7015456    Sekunde: 34   RgnSize: {Width=44, Height=118}
WM_PAINT    Handle: 7015456    Sekunde: 34   RgnSize: {Width=0, Height=0}
</code></pre>
<p>ihr seht also, in den sekunden 11 bis 34 werden nur 3 updates gesendet.<br />
und warum soviele 'leere' messages kommen ist mir auch nicht ganz klar.</p>
<p>kann mir jemand auf die sprünge helfen?</p>
<p>mfg nullpunkt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1501127</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1501127</guid><dc:creator><![CDATA[nullpunkt]]></dc:creator><pubDate>Wed, 30 Apr 2008 11:38:01 GMT</pubDate></item><item><title><![CDATA[Reply to WM_Paint unregelmässig on Wed, 30 Apr 2008 11:59:21 GMT]]></title><description><![CDATA[<p>Heißt RgnSize: {Width=0, Height=0} nicht alles neu zeichnen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1501143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1501143</guid><dc:creator><![CDATA[Vertexwahn]]></dc:creator><pubDate>Wed, 30 Apr 2008 11:59:21 GMT</pubDate></item><item><title><![CDATA[Reply to WM_Paint unregelmässig on Wed, 30 Apr 2008 12:02:33 GMT]]></title><description><![CDATA[<p>hi,<br />
nein, ich zitiere 'If there is no update region, GetUpdateRect retrieves an empty rectangle (sets all coordinates to zero).'<br />
quelle: <a href="http://msdn.microsoft.com/en-us/library/ms534867(VS.85).aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms534867(VS.85).aspx</a></p>
<p>es sei denn ich verstehe irgendwas falsch?</p>
<p>mfg nullpunkt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1501149</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1501149</guid><dc:creator><![CDATA[nullpunkt]]></dc:creator><pubDate>Wed, 30 Apr 2008 12:02:33 GMT</pubDate></item><item><title><![CDATA[Reply to WM_Paint unregelmässig on Wed, 30 Apr 2008 12:44:48 GMT]]></title><description><![CDATA[<p>Und wie änderst Du sekündlich die Hintergrundfarbe?<br />
Ohne InvalidateRect gibt es kein WM_PAINT!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1501172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1501172</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 30 Apr 2008 12:44:48 GMT</pubDate></item><item><title><![CDATA[Reply to WM_Paint unregelmässig on Wed, 30 Apr 2008 12:52:59 GMT]]></title><description><![CDATA[<p>hi,<br />
ich ändere über einen timer nur die property backColor.<br />
ansonten tu ich nix.</p>
<p>aber die farbe ändert sich ja, also muss windows ja auch<br />
eine wm_paint erhalten/senden?</p>
<p>grundfsätzlich würde ich das ganze auch anders aufziehen.<br />
ziel ist einfach, dass ich das jeweilige rectangle erhalte, welches von windows<br />
neu gezeichnet wird.</p>
<p>und wenn sich die farbe des panels ändert, dann sollte das eigentlich auch<br />
funktionieren oder?</p>
<p>mfg nullpunkt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1501178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1501178</guid><dc:creator><![CDATA[nullpunkt]]></dc:creator><pubDate>Wed, 30 Apr 2008 12:52:59 GMT</pubDate></item><item><title><![CDATA[Reply to WM_Paint unregelmässig on Wed, 30 Apr 2008 13:43:38 GMT]]></title><description><![CDATA[<p>nullpunkt schrieb:</p>
<blockquote>
<p>ich ändere über einen timer nur die property backColor.<br />
ansonten tu ich nix.</p>
</blockquote>
<p>Welches Property bitte?<br />
Ich kenne kein Property Background Colorin der Windows API, außer Du hast es hier mit einem ActiveX Control zu tun!</p>
<p>nullpunkt schrieb:</p>
<blockquote>
<p>aber die farbe ändert sich ja, also muss windows ja auch<br />
eine wm_paint erhalten/senden?</p>
</blockquote>
<p>Nein! Soclh ein WM_APINT wird nicht gesendet sondern ausgelsöt, wenn ein InvalidateRect erfolgte!</p>
<p>Was hast Du denn da für ein Sample? Zeig mal mehr Code!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1501208</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1501208</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 30 Apr 2008 13:43:38 GMT</pubDate></item><item><title><![CDATA[Reply to WM_Paint unregelmässig on Wed, 30 Apr 2008 13:59:42 GMT]]></title><description><![CDATA[<p>hi,<br />
ich habe die frage nur in WinAPI gestellt, da eine frage betreffend<br />
wm_paint hierhin gehört. eventuell habe ich die sache zu wenig erklärt, sorry.</p>
<p>du hast mich gefragt wie ich die hintergrundfarbe ändere und ich habe dir<br />
gesagt, dass ich sekündlich (timer) die property 'backColor' meines panels<br />
ändere. ich sprach also von Panel.BackColor</p>
<p>code:<br />
das hooking muss ich wohl nicht posten, da mir (das sieht man am log) alle<br />
win-messages zugesandt werden.</p>
<p>die messages verarbeite ich dann schlussendlich so: (C#-Code)</p>
<pre><code>void GetMsg_GetMsg(IntPtr Handle, IntPtr Message, IntPtr wParam, IntPtr lParam)
{
    // Filter für WM_PAINT
    if (Message.ToInt32() == WM_PAINT)
    {
        // Update-Region über WIN32 holen
        Rectangle rect = new Rectangle();
        GetUpdateRect(Handle, ref rect, 0);

        if (rect.Size == new Size(0, 0))
        {
            // Kein Upgrade-Region empfangen !
        }
        else
        {
            // Weitere Aktionen mit dem erhaltenen Rectangle.
        }
    }
}
[DllImport(&quot;user32&quot;)]
public static extern int GetUpdateRect(IntPtr hwnd, ref Rectangle lpRect, int bErase);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1501222</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1501222</guid><dc:creator><![CDATA[nullpunkt]]></dc:creator><pubDate>Wed, 30 Apr 2008 13:59:42 GMT</pubDate></item><item><title><![CDATA[Reply to WM_Paint unregelmässig on Wed, 30 Apr 2008 16:24:18 GMT]]></title><description><![CDATA[<p>1. Ob ein .NET Form Library in dieser Art und Weise genauso arbeitet wie ein normales Fenster wage ich zu bezweifeln.<br />
2. Weißt Du ob ein Neuzeichnen durch das setzen der Backgroundfarbe auslöst?<br />
Weißt Du ob das .NET Control diese Aktion nicht evtl. bündelt? Oder ob diese Aktion evtl. direkt ohne ausführen von WM_PAINT auf dem DC ausgelöst wird?</p>
<p>Es steht .NET frei es anders zu machen... <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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1501318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1501318</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 30 Apr 2008 16:24:18 GMT</pubDate></item><item><title><![CDATA[Reply to WM_Paint unregelmässig on Wed, 30 Apr 2008 16:34:03 GMT]]></title><description><![CDATA[<p>Das was du vorhast macht man mit nem &quot;Mirror Driver&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1501327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1501327</guid><dc:creator><![CDATA[tenet]]></dc:creator><pubDate>Wed, 30 Apr 2008 16:34:03 GMT</pubDate></item><item><title><![CDATA[Reply to WM_Paint unregelmässig on Fri, 02 May 2008 19:33:11 GMT]]></title><description><![CDATA[<p>WM_PAINT wird durch InvalidateRect ausgelöst, aber verzögert, bis keine Messages mehr in der Queue stehen 8vereinfacht).</p>
<p>Wenn Du aber nur den Hintergrund änderst, wird evtl. nur eine WM_ERASEBKGND - Message ausgelöst, würde mich zwar verblüffen, aber möglich ist es.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1502288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502288</guid><dc:creator><![CDATA[peterchen]]></dc:creator><pubDate>Fri, 02 May 2008 19:33:11 GMT</pubDate></item><item><title><![CDATA[Reply to WM_Paint unregelmässig on Tue, 06 May 2008 14:15:19 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/35992">@Martin</a> Richter:<br />
1: das weiss ich auch nicht genau, jedoch sehe ich das ultravnc die sache auch so löst (zumindest in dieselbe richtung)<br />
2: nein, das weiss ich nicht. ich weiss aber, dass ich genau in dem moment (in meinem test alle sekunden) ein wm_paint erhalte, welches leider einfach leer ist. aber eintreffen tuts.<br />
3: nein, wissen tuh ich das wirklich nicht.</p>
<p>@tenet:<br />
darüber habe ich auch schon gelesen, jedoch meine ich, es sollte auch mit wie geplant lösbar sein (siehe andere beispiele)</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/4165">@peterchen</a>:<br />
hmm.. ich habe jetzt diverse andere versuche gemacht und stelle fest, dass ich in keinem fall eine WM_ERASEBKGND erhalte. könnte es sein, dass ich beim exportieren der hooks was flasch mache?</p>
<p>vielleicht könnte sich jemand die hooks mal anschauen, der damit vertraut ist?<br />
(ich erhalte sonst alles was ich brauche)</p>
<p>hooks:<br />
[url]<br />
<a href="http://www.marcobrunold.ch/share/he/GlobalCbtHook.zip" rel="nofollow">http://www.marcobrunold.ch/share/he/GlobalCbtHook.zip</a><br />
[/url]</p>
<p>author/quelle:<br />
<a href="http://www.xaipete.net/softdev/" rel="nofollow">http://www.xaipete.net/softdev/</a></p>
<p>ich sah jedoch keine einschränkung der messages.</p>
<p>mfg nullpunkt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1504252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1504252</guid><dc:creator><![CDATA[nullpunkt]]></dc:creator><pubDate>Tue, 06 May 2008 14:15:19 GMT</pubDate></item><item><title><![CDATA[Reply to WM_Paint unregelmässig on Fri, 22 Aug 2008 10:40:22 GMT]]></title><description><![CDATA[<p>hi,<br />
ich muss diesen alten thread leider nochmals pushen und bitte erneut um<br />
hilfe eines c-experten, welcher mir vielleicht die c-hooks anschauen könnte.</p>
<p>ich bin mittlerweile bereit für die lösung des problems zu bezahlen.</p>
<p>mfg nullpunkt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1569522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1569522</guid><dc:creator><![CDATA[nullpunkt]]></dc:creator><pubDate>Fri, 22 Aug 2008 10:40:22 GMT</pubDate></item></channel></rss>