<?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[Elemente in Dialog unterschied einfärben]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe ein kleines Problem. Ich möchte mehrere Steuerelemente in verschiedenen Farben darstellen<br />
oder den Text einfärben. Nachdem aber die erste if-Schleife mit einer Return-Anweisung kommt,<br />
kehrt die Funktion zurück (ist ja klar) wird aber nicht noch einmal gestartet. Somit bleiben<br />
alle nachfolgenden Anweisungen unausgeführt.</p>
<p>Habe ich einen Denkfehler? Eigentlich wird die Funktion OnCtlColor doch für jedes<br />
Steuerelement aufgerufen, oder nicht?...sehr komisch.</p>
<pre><code class="language-cpp">HBRUSH CFarbeDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
  {
    // Brush für den Dialog Hintergrund anlegen
    HBRUSH hBGBrush = CreateSolidBrush(RGB(128, 184, 223));
    // Brush für den Hintergrund des Eingabefeld festlegen
    HBRUSH hBGEdit = CreateSolidBrush(RGB(0, 0, 0));

    if(pWnd-&gt;GetDlgCtrlID() == IDC_TEXT)
    {
      // Hintergrund für Text auf weiss setzen
      pDC-&gt;SetBkColor(RGB(255, 255, 255));
      // Textfarbe ändern
      pDC-&gt;SetTextColor(RGB(255, 0, 0));
    }

    if(pWnd-&gt;GetDlgCtrlID() == IDC_EDIT1)
    {
      // Hintergrund für Text transparent setzen
      pDC-&gt;SetBkMode(TRANSPARENT);
      // Textfarbe ändern
      pDC-&gt;SetTextColor(RGB(0, 255, 0));
      // Brush für Hintergrund des Eingabefelds zurückgeben
      return hBGEdit;
    }

    if(pWnd-&gt;GetDlgCtrlID() == IDC_LIST1)
    {
      pDC-&gt;SetBkMode(TRANSPARENT);
      pDC-&gt;SetTextColor(RGB(0, 0, 255));
    }

    // Brush für Dialog Hintergrund zurückgeben
    return hBGBrush;
  }
</code></pre>
<p>schönen Dank,<br />
Krommi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/175615/elemente-in-dialog-unterschied-einfärben</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Apr 2026 18:19:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/175615.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 12 Mar 2007 14:52:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Elemente in Dialog unterschied einfärben on Mon, 12 Mar 2007 14:52:47 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe ein kleines Problem. Ich möchte mehrere Steuerelemente in verschiedenen Farben darstellen<br />
oder den Text einfärben. Nachdem aber die erste if-Schleife mit einer Return-Anweisung kommt,<br />
kehrt die Funktion zurück (ist ja klar) wird aber nicht noch einmal gestartet. Somit bleiben<br />
alle nachfolgenden Anweisungen unausgeführt.</p>
<p>Habe ich einen Denkfehler? Eigentlich wird die Funktion OnCtlColor doch für jedes<br />
Steuerelement aufgerufen, oder nicht?...sehr komisch.</p>
<pre><code class="language-cpp">HBRUSH CFarbeDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
  {
    // Brush für den Dialog Hintergrund anlegen
    HBRUSH hBGBrush = CreateSolidBrush(RGB(128, 184, 223));
    // Brush für den Hintergrund des Eingabefeld festlegen
    HBRUSH hBGEdit = CreateSolidBrush(RGB(0, 0, 0));

    if(pWnd-&gt;GetDlgCtrlID() == IDC_TEXT)
    {
      // Hintergrund für Text auf weiss setzen
      pDC-&gt;SetBkColor(RGB(255, 255, 255));
      // Textfarbe ändern
      pDC-&gt;SetTextColor(RGB(255, 0, 0));
    }

    if(pWnd-&gt;GetDlgCtrlID() == IDC_EDIT1)
    {
      // Hintergrund für Text transparent setzen
      pDC-&gt;SetBkMode(TRANSPARENT);
      // Textfarbe ändern
      pDC-&gt;SetTextColor(RGB(0, 255, 0));
      // Brush für Hintergrund des Eingabefelds zurückgeben
      return hBGEdit;
    }

    if(pWnd-&gt;GetDlgCtrlID() == IDC_LIST1)
    {
      pDC-&gt;SetBkMode(TRANSPARENT);
      pDC-&gt;SetTextColor(RGB(0, 0, 255));
    }

    // Brush für Dialog Hintergrund zurückgeben
    return hBGBrush;
  }
</code></pre>
<p>schönen Dank,<br />
Krommi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1244058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1244058</guid><dc:creator><![CDATA[Krommi]]></dc:creator><pubDate>Mon, 12 Mar 2007 14:52:47 GMT</pubDate></item><item><title><![CDATA[Reply to Elemente in Dialog unterschied einfärben on Mon, 12 Mar 2007 17:46:37 GMT]]></title><description><![CDATA[<p>Ich sehe nichts was Deiner Beschreibung gleich kommt!<br />
Bist Du sicher, dass alle die IDC's unterschiedlich und korrekt sind?</p>
<p>Das einzige Problem was ich sehe ist, dass Du permanent neue Brushes erzeugst und diese natürlich niemals entsorgt werden. Auf kurz oder lang führt dies zu einem katastophalen Ressourcen Leak!</p>
<p>Die Brushes nur einmal in der Diaog Klasse erzeugen und speichern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1244212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1244212</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Mon, 12 Mar 2007 17:46:37 GMT</pubDate></item></channel></rss>