<?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_CTLCOLOR Message]]></title><description><![CDATA[<p>Hallo<br />
ich habe in meinem Programm einen Dialog in dem der Gerätezustand eines Messgerätes angezeigt wird.<br />
Wird vom Gerät ein Fehler erkannt sendet es eine Meldung über RS232 und im Dialog wird der Hintergrund eines Statischen Textfeldes Rot dargestellt.<br />
Da sich der Zustand des Gerätes während der Laufzeit des Programmes ändern kann, und somit der Hintergrund auch neu gesetzt werden muss, möchte ich ein WM_CTLCOLOR Message senden, um die OnCtlColor-Methode erneut aufzurufen.</p>
<pre><code class="language-cpp">this-&gt;SendMessage(WM_CTLCOLOR, NULL, NULL);
</code></pre>
<p>wenn ich nun diese Nachricht an meinen Dialog sende, bekomme ich ein Unbehandelte Ausnahme mit Zugriffs-Verletzung.</p>
<pre><code class="language-cpp">case AfxSig_CTLCOLOR:
		{
			// special case for OnCtlColor to avoid too many temporary objects
			ASSERT(message == WM_CTLCOLOR);
			AFX_CTLCOLOR* pCtl = reinterpret_cast&lt;AFX_CTLCOLOR*&gt;(lParam);
			CDC dcTemp; 
			dcTemp.m_hDC = pCtl-&gt;hDC;
			CWnd wndTemp; 
			wndTemp.m_hWnd = pCtl-&gt;hWnd;
			UINT nCtlType = pCtl-&gt;nCtlType;
			// if not coming from a permanent window, use stack temporary
			CWnd* pWnd = CWnd::FromHandlePermanent(wndTemp.m_hWnd);
</code></pre>
<p>Der Befehlszeiger zeigt auf dcTemp.m_hDC = pCtl-&gt;hDC;</p>
<p>Weiß jemand was ich falsch mache? Oder kennt jemand eine andere Lösung?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/185123/wm_ctlcolor-message</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 22:28:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/185123.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 22 Jun 2007 07:06:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to WM_CTLCOLOR Message on Fri, 22 Jun 2007 07:06:00 GMT]]></title><description><![CDATA[<p>Hallo<br />
ich habe in meinem Programm einen Dialog in dem der Gerätezustand eines Messgerätes angezeigt wird.<br />
Wird vom Gerät ein Fehler erkannt sendet es eine Meldung über RS232 und im Dialog wird der Hintergrund eines Statischen Textfeldes Rot dargestellt.<br />
Da sich der Zustand des Gerätes während der Laufzeit des Programmes ändern kann, und somit der Hintergrund auch neu gesetzt werden muss, möchte ich ein WM_CTLCOLOR Message senden, um die OnCtlColor-Methode erneut aufzurufen.</p>
<pre><code class="language-cpp">this-&gt;SendMessage(WM_CTLCOLOR, NULL, NULL);
</code></pre>
<p>wenn ich nun diese Nachricht an meinen Dialog sende, bekomme ich ein Unbehandelte Ausnahme mit Zugriffs-Verletzung.</p>
<pre><code class="language-cpp">case AfxSig_CTLCOLOR:
		{
			// special case for OnCtlColor to avoid too many temporary objects
			ASSERT(message == WM_CTLCOLOR);
			AFX_CTLCOLOR* pCtl = reinterpret_cast&lt;AFX_CTLCOLOR*&gt;(lParam);
			CDC dcTemp; 
			dcTemp.m_hDC = pCtl-&gt;hDC;
			CWnd wndTemp; 
			wndTemp.m_hWnd = pCtl-&gt;hWnd;
			UINT nCtlType = pCtl-&gt;nCtlType;
			// if not coming from a permanent window, use stack temporary
			CWnd* pWnd = CWnd::FromHandlePermanent(wndTemp.m_hWnd);
</code></pre>
<p>Der Befehlszeiger zeigt auf dcTemp.m_hDC = pCtl-&gt;hDC;</p>
<p>Weiß jemand was ich falsch mache? Oder kennt jemand eine andere Lösung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311175</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Fri, 22 Jun 2007 07:06:00 GMT</pubDate></item><item><title><![CDATA[Reply to WM_CTLCOLOR Message on Fri, 22 Jun 2007 08:00:07 GMT]]></title><description><![CDATA[<p>Lös besser nur ein Neuzeichnen aus. Invalidate müsste das sein. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311204</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Fri, 22 Jun 2007 08:00:07 GMT</pubDate></item><item><title><![CDATA[Reply to WM_CTLCOLOR Message on Fri, 22 Jun 2007 08:22:09 GMT]]></title><description><![CDATA[<p>Okay, werde das mal ausprobieren. Hoffe mal das mein Dialog dann nicht anfängt zu flackern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311221</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311221</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Fri, 22 Jun 2007 08:22:09 GMT</pubDate></item><item><title><![CDATA[Reply to WM_CTLCOLOR Message on Fri, 22 Jun 2007 08:39:17 GMT]]></title><description><![CDATA[<p>maRKus23 schrieb:</p>
<blockquote>
<p>Okay, werde das mal ausprobieren. Hoffe mal das mein Dialog dann nicht anfängt zu flackern.</p>
</blockquote>
<p>Dann mach das Invalidate nur auf das Control und nur dann, wenn sich was geändert hat. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311229</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Fri, 22 Jun 2007 08:39:17 GMT</pubDate></item><item><title><![CDATA[Reply to WM_CTLCOLOR Message on Fri, 22 Jun 2007 10:16:56 GMT]]></title><description><![CDATA[<p>So hat super funktioniert, danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311323</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311323</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Fri, 22 Jun 2007 10:16:56 GMT</pubDate></item></channel></rss>