<?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[Dialogfarben zur Laufzeit ändern Problem]]></title><description><![CDATA[<p>Moin,</p>
<p>ich hab' aus Langeweile ein kleines Programm zu schreiben begonnen,<br />
das keinen zweck hat, nur seine Farbe zur Laufzeit verändern könnte wenn's funzte...</p>
<pre><code class="language-cpp">void CRGBDlg::OnChangeColors() 
{
	UpdateData();

/*
m_R,m_G und m_B sind die Membervariablen von 3 Editfeldern, in denen die R-,G-,und B-Werte für die Hintergrundfarbe einzugeben sind.

zuerst hab' ich für m_R,m_G und m_B im Klassenassistent eine Längenprüfung
eingerichtet, 0 min. und 255 max., das wollte nicht so recht, also mach ichs manuell:
/*	
		if(m_R &gt; 255) 
		{
			m_R = 255;
		}

		if(m_G &gt; 255)
		{
			m_G = 255;
		}

		if(m_B &gt; 255)
		{
			m_B = 255;
		}

	UpdateData(FALSE); 
        m_BGColorBrush.CreateSolidBrush(RGB(m_R,m_G,m_B)); //ein CBrush Objekt
} 

HBRUSH CRGBDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	pDC-&gt;SetBkMode(TRANSPARENT); //auch editfeld-farbe ändern

	return m_BGColorBrush;
}
</code></pre>
<p>So. Das hab' ich zusammengepfriemelt, aber die Anwendung verändert bei aufruf von OnChangeColors() nicht ihre eigene Farbe, sondern produziert (nur im Debugmodus, nicht im Release) einen &quot;Debug assertion failed&quot; Error. Manchmal verändert sich auch die Farbe des Editfelds, in dem man die letzte Zahl eingetragen hat, aber der Dialog bleibt im Öden Windows-Grau... <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>
<p>Hoffe auf Hilfe<br />
das_brot</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/72716/dialogfarben-zur-laufzeit-ändern-problem</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Apr 2026 18:15:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/72716.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 01 May 2004 14:17:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dialogfarben zur Laufzeit ändern Problem on Sat, 01 May 2004 14:17:19 GMT]]></title><description><![CDATA[<p>Moin,</p>
<p>ich hab' aus Langeweile ein kleines Programm zu schreiben begonnen,<br />
das keinen zweck hat, nur seine Farbe zur Laufzeit verändern könnte wenn's funzte...</p>
<pre><code class="language-cpp">void CRGBDlg::OnChangeColors() 
{
	UpdateData();

/*
m_R,m_G und m_B sind die Membervariablen von 3 Editfeldern, in denen die R-,G-,und B-Werte für die Hintergrundfarbe einzugeben sind.

zuerst hab' ich für m_R,m_G und m_B im Klassenassistent eine Längenprüfung
eingerichtet, 0 min. und 255 max., das wollte nicht so recht, also mach ichs manuell:
/*	
		if(m_R &gt; 255) 
		{
			m_R = 255;
		}

		if(m_G &gt; 255)
		{
			m_G = 255;
		}

		if(m_B &gt; 255)
		{
			m_B = 255;
		}

	UpdateData(FALSE); 
        m_BGColorBrush.CreateSolidBrush(RGB(m_R,m_G,m_B)); //ein CBrush Objekt
} 

HBRUSH CRGBDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	pDC-&gt;SetBkMode(TRANSPARENT); //auch editfeld-farbe ändern

	return m_BGColorBrush;
}
</code></pre>
<p>So. Das hab' ich zusammengepfriemelt, aber die Anwendung verändert bei aufruf von OnChangeColors() nicht ihre eigene Farbe, sondern produziert (nur im Debugmodus, nicht im Release) einen &quot;Debug assertion failed&quot; Error. Manchmal verändert sich auch die Farbe des Editfelds, in dem man die letzte Zahl eingetragen hat, aber der Dialog bleibt im Öden Windows-Grau... <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>
<p>Hoffe auf Hilfe<br />
das_brot</p>
]]></description><link>https://www.c-plusplus.net/forum/post/512378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/512378</guid><dc:creator><![CDATA[das_brot]]></dc:creator><pubDate>Sat, 01 May 2004 14:17:19 GMT</pubDate></item><item><title><![CDATA[Reply to Dialogfarben zur Laufzeit ändern Problem on Sun, 02 May 2004 09:26:48 GMT]]></title><description><![CDATA[<p>die funktion mußte nen bischen anders machen:</p>
<pre><code class="language-cpp">COLORREF cBkColor = RGB(255, 255, 255);
	COLORREF cTextColor = RGB(0, 0, 0);
</code></pre>
<pre><code class="language-cpp">HBRUSH CDeinDialogDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

	static CBrush s_brush(cBkColor);

	pDC-&gt;SetBkColor(cBkColor);   
	pDC-&gt;SetTextColor(cTextColor);      

	s_brush.DeleteObject(); 
	s_brush.CreateSolidBrush(cBkColor); 

	return s_brush; 
}
</code></pre>
<p>dann müsste es klappen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/512713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/512713</guid><dc:creator><![CDATA[Red Skall]]></dc:creator><pubDate>Sun, 02 May 2004 09:26:48 GMT</pubDate></item><item><title><![CDATA[Reply to Dialogfarben zur Laufzeit ändern Problem on Sun, 02 May 2004 10:05:29 GMT]]></title><description><![CDATA[<p>Danke für die Hilfe,<br />
hab' die Sache wohl von der falschen Seite her angepackt...</p>
<p>MfG<br />
das_brot</p>
]]></description><link>https://www.c-plusplus.net/forum/post/512743</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/512743</guid><dc:creator><![CDATA[das_brot]]></dc:creator><pubDate>Sun, 02 May 2004 10:05:29 GMT</pubDate></item></channel></rss>