<?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[Farbwahltool: Komische Fehler bei 30 sek Maus-Drag]]></title><description><![CDATA[<p>Hi,<br />
ich bin dabei mir ein kleines Farbwahltool zu schreiben.</p>
<p>(Hintergrund)<br />
Im großen und ganzen sieht das aus wie das von Corel PhotoPaint 10 (ein Feld für den Farbton und ein zweites Feld für Helligkeit und Sättigung -&gt; HSV-Format)<br />
Der Unterschied zu Corel liegt darin, das mein Tool kleiner ist (startet schneller usw.) und zweitens die Farbwerte direkt in Hex-Werten ausgibt.<br />
Außerdem möchte ich noch eine Alphafunktion und eventuell diverse DirectX Farbformate einbauen...</p>
<p>(Details)<br />
Das ganze Tool ist komplett mit der WinAPI geschrieben, ich benutze also kein MFC oder so. Compiler: VC++ 6.0<br />
Eine Mausbewegung über den Farbwahlfeldern fange ich mit WM_LBUTTONDOWN / WM_MOUSEMOVE ab. Wenn dort (wParam &amp; MK_LBUTTON)==true wird die Cursorposition in eine Farbe umgerechnet und alle dadurch veränderten Farbwahlfelder neugezeichnet.</p>
<p>(Problem)<br />
Eigentlich läuft das alles schon nur habe ich folgenden Bug:<br />
Wenn ich ca. 30 Sekunden lang mit gedrückter Maustaste über dem Farbwahlfeld herumkreise treten plötzlich komische Fehler auf:<br />
1. das Feld welches die gewählte Farbe zeigt wird plötzlich grau (Fensterhintergrundfarbe)<br />
2. Die Schrift im Arbeitsplatz (Explorer) ändert sich plötzlich in die Standartschrift<br />
(die Schrift die man hat wenn man z.B. einen Button mit CreateWindowEx erzeugt und kein WM_SETFONT sendet)<br />
3. diverse Icons verschwinden (z.B. die Kopieren/Einfügen-Schaltflächen im Arbeitsplatz)</p>
<p>(bisherige Lösungsversuche)<br />
Ich hatte zunächst den Verdacht das irgendwie zuviele WM_PAINT-Nachrichten erzeugt werden und dadurch Windows irgendwie lahmgelegt wird. (die Farbfelder werden ja bei einer Mausbewegung andauernt neugezeichnet)<br />
Also hab ich vor jedem RedrawWindow(...) einfach eine Varibale == true gesetzt und bei jedem neuzeichnen (in der WndProc) wieder ==false<br />
Das brachte leider keine Wirkung.</p>
<p>Habt ihr sonst noch Ideen?</p>
<p>THX,<br />
Coolcat</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/72722/farbwahltool-komische-fehler-bei-30-sek-maus-drag</link><generator>RSS for Node</generator><lastBuildDate>Fri, 10 Apr 2026 07:36:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/72722.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 01 May 2004 16:04:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Farbwahltool: Komische Fehler bei 30 sek Maus-Drag on Sat, 01 May 2004 16:04:28 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich bin dabei mir ein kleines Farbwahltool zu schreiben.</p>
<p>(Hintergrund)<br />
Im großen und ganzen sieht das aus wie das von Corel PhotoPaint 10 (ein Feld für den Farbton und ein zweites Feld für Helligkeit und Sättigung -&gt; HSV-Format)<br />
Der Unterschied zu Corel liegt darin, das mein Tool kleiner ist (startet schneller usw.) und zweitens die Farbwerte direkt in Hex-Werten ausgibt.<br />
Außerdem möchte ich noch eine Alphafunktion und eventuell diverse DirectX Farbformate einbauen...</p>
<p>(Details)<br />
Das ganze Tool ist komplett mit der WinAPI geschrieben, ich benutze also kein MFC oder so. Compiler: VC++ 6.0<br />
Eine Mausbewegung über den Farbwahlfeldern fange ich mit WM_LBUTTONDOWN / WM_MOUSEMOVE ab. Wenn dort (wParam &amp; MK_LBUTTON)==true wird die Cursorposition in eine Farbe umgerechnet und alle dadurch veränderten Farbwahlfelder neugezeichnet.</p>
<p>(Problem)<br />
Eigentlich läuft das alles schon nur habe ich folgenden Bug:<br />
Wenn ich ca. 30 Sekunden lang mit gedrückter Maustaste über dem Farbwahlfeld herumkreise treten plötzlich komische Fehler auf:<br />
1. das Feld welches die gewählte Farbe zeigt wird plötzlich grau (Fensterhintergrundfarbe)<br />
2. Die Schrift im Arbeitsplatz (Explorer) ändert sich plötzlich in die Standartschrift<br />
(die Schrift die man hat wenn man z.B. einen Button mit CreateWindowEx erzeugt und kein WM_SETFONT sendet)<br />
3. diverse Icons verschwinden (z.B. die Kopieren/Einfügen-Schaltflächen im Arbeitsplatz)</p>
<p>(bisherige Lösungsversuche)<br />
Ich hatte zunächst den Verdacht das irgendwie zuviele WM_PAINT-Nachrichten erzeugt werden und dadurch Windows irgendwie lahmgelegt wird. (die Farbfelder werden ja bei einer Mausbewegung andauernt neugezeichnet)<br />
Also hab ich vor jedem RedrawWindow(...) einfach eine Varibale == true gesetzt und bei jedem neuzeichnen (in der WndProc) wieder ==false<br />
Das brachte leider keine Wirkung.</p>
<p>Habt ihr sonst noch Ideen?</p>
<p>THX,<br />
Coolcat</p>
]]></description><link>https://www.c-plusplus.net/forum/post/512420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/512420</guid><dc:creator><![CDATA[Coolcat]]></dc:creator><pubDate>Sat, 01 May 2004 16:04:28 GMT</pubDate></item><item><title><![CDATA[Reply to Farbwahltool: Komische Fehler bei 30 sek Maus-Drag on Sat, 01 May 2004 16:52:05 GMT]]></title><description><![CDATA[<p>Hört sich für micht so an, als ob du irgendwelche GDI-Objekte nicht richtig freigibst (siehst du im Task-Manager (wenn du die entsprechende Spalte einblendest) an einer ständig steigenden Zahl an GDI-Objekten deines Prozesses.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/512448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/512448</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Sat, 01 May 2004 16:52:05 GMT</pubDate></item><item><title><![CDATA[Reply to Farbwahltool: Komische Fehler bei 30 sek Maus-Drag on Sat, 01 May 2004 18:59:57 GMT]]></title><description><![CDATA[<p>Nun, ja ich habe Win98SE, da ist der Taskmanager noch ziemlich primitiv.<br />
Allerdings kann man sich mit einem Zusatztool die GDI-Ressourcen anzeigen lassen.<br />
Diese sinken tatsächlich bis auf Null und dann kommen die Fehler.</p>
<p>Ich habe jetzt die letzten beiden Stunden damit verbracht na Speicherlecks zu suchen, allerdings ohne Erfolg.</p>
<p>Könnte es daran liegen das ich die Farbwahlfelder zuerst in ein HBitmap zeichne (per SetPixelV) und erst dann mit BitBlt auf den Bildschrim zeichne?<br />
Die HBitmaps sind global und werden am Anfang erzeugt und erst am Ende wieder freigegeben. Der zugehörige HDC war zunächst auch global, aber ich hab das jetzt so geändert, das er jedes mal wenn gezeichnet wird neu erzeugt wird (mit CreateCompatibleDC). Nach dem zeichnen wird er dann brav mit DeleteDC gelöscht.<br />
Naja, das hat auch nix gebracht.</p>
<p>Zumindest weiß ich jetzt in welche Richtung ich suchen muss....aber wenn euch sonst noch etwas hilfreiches einfällt...</p>
<p>Coolcat</p>
]]></description><link>https://www.c-plusplus.net/forum/post/512503</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/512503</guid><dc:creator><![CDATA[Coolcat]]></dc:creator><pubDate>Sat, 01 May 2004 18:59:57 GMT</pubDate></item><item><title><![CDATA[Reply to Farbwahltool: Komische Fehler bei 30 sek Maus-Drag on Sat, 01 May 2004 19:08:06 GMT]]></title><description><![CDATA[<p>Bedenke auch, daß Du alles, was Du in einen DC hineinselektierst, auch wieder herausholen mußt!</p>
<pre><code class="language-cpp">HGDIOBJ hOld = SelectObject(hdc, hXYZ);
.
.
.
SelectObject(hdc, hOld);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/512508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/512508</guid><dc:creator><![CDATA[-King-]]></dc:creator><pubDate>Sat, 01 May 2004 19:08:06 GMT</pubDate></item><item><title><![CDATA[Reply to Farbwahltool: Komische Fehler bei 30 sek Maus-Drag on Sat, 01 May 2004 19:19:22 GMT]]></title><description><![CDATA[<p>Oh, das könnte es sein... ich dachte wenn ich den HDC lösche brauch ich das nicht...</p>
<p>Coolcat</p>
]]></description><link>https://www.c-plusplus.net/forum/post/512517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/512517</guid><dc:creator><![CDATA[Coolcat]]></dc:creator><pubDate>Sat, 01 May 2004 19:19:22 GMT</pubDate></item><item><title><![CDATA[Reply to Farbwahltool: Komische Fehler bei 30 sek Maus-Drag on Sat, 01 May 2004 19:23:18 GMT]]></title><description><![CDATA[<p>-King- schrieb:</p>
<blockquote>
<p>Bedenke auch, daß Du alles, was Du in einen DC hineinselektierst, auch wieder herausholen mußt!</p>
<pre><code class="language-cpp">HGDIOBJ hOld = SelectObject(hdc, hXYZ);
.
.
.
SelectObject(hdc, hOld);
</code></pre>
</blockquote>
<p><strong>Warum</strong> ist das überhaupt nötig? Gibt es vielleicht irgendwo in der MSDN eine Erklärung dafür?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/512520</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/512520</guid><dc:creator><![CDATA[krendil]]></dc:creator><pubDate>Sat, 01 May 2004 19:23:18 GMT</pubDate></item><item><title><![CDATA[Reply to Farbwahltool: Komische Fehler bei 30 sek Maus-Drag on Sat, 01 May 2004 19:45:02 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1320">@King</a>: Nee, das war es leider auch nicht...trotzdem danke!</p>
<p>@krendil: keine Ahnung.</p>
<p>Sonst noch Ideen?</p>
<p>Coolcat</p>
]]></description><link>https://www.c-plusplus.net/forum/post/512533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/512533</guid><dc:creator><![CDATA[Coolcat]]></dc:creator><pubDate>Sat, 01 May 2004 19:45:02 GMT</pubDate></item><item><title><![CDATA[Reply to Farbwahltool: Komische Fehler bei 30 sek Maus-Drag on Sat, 01 May 2004 19:56:07 GMT]]></title><description><![CDATA[<p>krendil schrieb:</p>
<blockquote>
<p><strong>Warum</strong> ist das überhaupt nötig? Gibt es vielleicht irgendwo in der MSDN eine Erklärung dafür?</p>
</blockquote>
<p>GDI-Objekte besitzen einen internen Zähler, der erhöht wird, wenn sie in einen DC eigesetzt werden. Wenn ein Objekt löscht, wird zunächst der Zähler um eins erniedrigt. Da der Zähler nicht gegen 0 geht, wenn das Objekt noch irgendwo eingesetzt ist, wird nichts gelöscht.</p>
<p>Dieser Umstand ist in der Tat total lasch dokumentiert.</p>
<p>Coolcat schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1320">@King</a>: Nee, das war es leider auch nicht</p>
</blockquote>
<p>Wenn Du das vorher nicht hattest, ist das auf jeden Fall ein Teil der Lösung. Mach die Änderung nicht wieder Rückgängig!</p>
<p>Coolcat schrieb:</p>
<blockquote>
<p>Sonst noch Ideen?</p>
</blockquote>
<p>Ideen braucht es aber keine mehr: Entweder gibst Du nach Gebrauch nicht alles wieder frei oder Du selektierst nicht alles ordentlich zurück oder beides. Punkt.</p>
<p>Noch genauer könnte man etwas sagen, wenn Du einen Auszug Deines Quells zeigen würdest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/512542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/512542</guid><dc:creator><![CDATA[-King-]]></dc:creator><pubDate>Sat, 01 May 2004 19:56:07 GMT</pubDate></item><item><title><![CDATA[Reply to Farbwahltool: Komische Fehler bei 30 sek Maus-Drag on Sat, 01 May 2004 21:13:50 GMT]]></title><description><![CDATA[<p>Naja ich denke mal ihr werdet euch nicht durch meinen kompletten Quellcode (ca. 1000 Zeilen) wühlen....daher die Kurzform:</p>
<p>Das hier wird bei Maus-Drag andauernt aufgerufen:</p>
<p>WndProc des Farbwahlfeldes:</p>
<pre><code class="language-cpp">case WM_LBUTTONDOWN:	
case WM_MOUSEMOVE:
{
   if (wParam &amp; MK_LBUTTON)
   {

       //.....

       hDC = GetDC(hColorSV); //hColorSV ist das Farbwahlfeld
       if (!hDC) return 0;
       HDC hDCCursorSV = CreateCompatibleDC(hDC);
       HGDIOBJ hGdiObj = SelectObject(hDCCursorSV, hCursorSV); 
                            // hCursorSV ist ein HBITMAP das den Cursor enthält

       // alten Cursor löschen
       BitBlt(hDC, xCurPos-4, yCurPos-4, 9, 9, hDCCursorSV, 0, 0, SRCINVERT);
       // neuen Cursor zeichnen
       xCurPos = xCur; // xCur ist die Mausposition
       yCurPos = yCur; // xCurPos ist eine globale Variable 
       BitBlt(hDC, xCurPos-4, yCurPos-4, 9, 9, hDCCursorSV, 0, 0, SRCINVERT);

       SelectObject(hDCCursorSV, hGdiObj);

       DeleteDC(hDCCursorSV);
       ReleaseDC(hColorSV, hDC);

       //....

       // Farbansichtsfeld neuzeichnen
       RedrawWindow(hViewColor, NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
       // siehe WM_PAINT unten!

       //....

       return 0;
   }
}
</code></pre>
<p>WndProc des Farbanzeigefeldes:</p>
<pre><code class="language-cpp">case WM_PAINT:
{
    PAINTSTRUCT ps;
    hDC = BeginPaint(hViewColor, &amp;ps); // hViewColor ist das Anzeigefeld
    if (!hDC) return 0;  
    RECT rect;
    rect.top    = ps.rcPaint.top;
    rect.right  = ps.rcPaint.right;
    rect.left   = ps.rcPaint.left;
    rect.bottom = ps.rcPaint.bottom;		

    // Draw 5 Unit Border
    HGDIOBJ hOldBrush = SelectObject(hDC,    CreateSolidBrush(GetSysColor(COLOR_BTNFACE)));
    HGDIOBJ hOldPen = SelectObject(hDC, CreatePen(PS_NULL, 0, 0));

    if (rect.left   &lt; 5  ) 
    { 
        Rectangle(hDC, 0, 0, 6, 47);
        rect.left   = 5  ; 
    }
    if (rect.top    &lt; 5  ) 
    { 
        Rectangle(hDC, 5, 0, 82, 6);
        rect.top    = 5  ; 
    }
    if (rect.right  &gt; 82 ) 
    { 
        Rectangle(hDC, 81, 0, 87, 47);
        rect.right  = 82; 
    }
    if (rect.bottom &gt; 42 ) 
    { 
        Rectangle(hDC, 5, 41, 82, 47);
        rect.bottom = 42 ; 
    }	

    // Draw Rect with choosen Color
    SelectObject(hDC, CreateSolidBrush(dwColorHSV));
    Rectangle(hDC, rect.left, rect.top, rect.right, rect.bottom); 

    // Restore old settings
    SelectObject(hDC, hOldPen);
    SelectObject(hDC, hOldBrush);

    EndPaint(hViewColor, &amp;ps);
    return 0;
}
</code></pre>
<p>Also ich sehe da jetzt so keine Fehler?!</p>
<p>Coolcat</p>
<p>P.S.: @Kommentare: Ja ich weiß, Deutsch-Englisch-Mix soll man nicht machen...die deutschen Kommentare hab ich nur hier fürs Forum schnell eingefügt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/512589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/512589</guid><dc:creator><![CDATA[Coolcat]]></dc:creator><pubDate>Sat, 01 May 2004 21:13:50 GMT</pubDate></item><item><title><![CDATA[Reply to Farbwahltool: Komische Fehler bei 30 sek Maus-Drag on Sat, 01 May 2004 21:24:52 GMT]]></title><description><![CDATA[<p>Coolcat schrieb:</p>
<blockquote>
<p>Naja ich denke mal ihr werdet euch nicht durch meinen kompletten Quellcode (ca. 1000 Zeilen) wühlen....daher die Kurzform:</p>
</blockquote>
<p>Sicher nicht, deswegen schrieb ich auch <strong>Auszug</strong>. <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>
<p>Coolcat schrieb:</p>
<blockquote>
<pre><code class="language-cpp">// Draw Rect with choosen Color
    SelectObject(hDC, CreateSolidBrush(dwColorHSV));
    Rectangle(hDC, rect.left, rect.top, rect.right, rect.bottom);
</code></pre>
</blockquote>
<p>Was passiert mit dem Brush, den Du da mit CreateSolidBrush erzeugst? Wie, wann und wo wird der freigegeben? Wo wird der zuvor erzeugte Pen gelöscht? Wo wird der zuvor erzeugte Brush (mit COLOR_BTNFACE) gelöscht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/512597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/512597</guid><dc:creator><![CDATA[-King-]]></dc:creator><pubDate>Sat, 01 May 2004 21:24:52 GMT</pubDate></item><item><title><![CDATA[Reply to Farbwahltool: Komische Fehler bei 30 sek Maus-Drag on Sat, 01 May 2004 21:29:51 GMT]]></title><description><![CDATA[<p>Ach, die muss ich auch wieder löschen? (ok logisch ist das schon... <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="😉"
    /> )<br />
Sorry bin eben API-Anfänger...<br />
...mal gucken ob es das ist...</p>
<p>Coolcat</p>
]]></description><link>https://www.c-plusplus.net/forum/post/512602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/512602</guid><dc:creator><![CDATA[Coolcat]]></dc:creator><pubDate>Sat, 01 May 2004 21:29:51 GMT</pubDate></item><item><title><![CDATA[Reply to Farbwahltool: Komische Fehler bei 30 sek Maus-Drag on Sat, 01 May 2004 21:32:11 GMT]]></title><description><![CDATA[<p>Coolcat schrieb:</p>
<blockquote>
<p>Ach, die muss ich auch wieder löschen?</p>
</blockquote>
<p>Wenn Du sie nicht mehr beötigst: Ja! Aber das hat Dir flenders bereits vor unzähligen Beiträgen gesagt.</p>
<p>BTW: Der zweite in den DC eingesetzte Brush holt den Ersten wieder aus dem DC heraus. Bedenke das!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/512604</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/512604</guid><dc:creator><![CDATA[-King-]]></dc:creator><pubDate>Sat, 01 May 2004 21:32:11 GMT</pubDate></item><item><title><![CDATA[Reply to Farbwahltool: Komische Fehler bei 30 sek Maus-Drag on Sat, 01 May 2004 21:55:55 GMT]]></title><description><![CDATA[<p>Ich hab die Brushes und Pens jetzt anschließend wieder mit DeleteObject gelöscht, aber das ist es auch nicht.</p>
<blockquote>
<p>Ja! Aber das hat Dir flenders bereits vor unzähligen Beiträgen gesagt.</p>
</blockquote>
<p>Hm, ich hatte einen HBrush nicht als GDI-Objekt angesehen...</p>
<blockquote>
<p>BTW: Der zweite in den DC eingesetzte Brush holt den Ersten wieder aus dem DC heraus. Bedenke das!</p>
</blockquote>
<p>Logisch, ich kann ja immer nur mit einer Farbe malen.</p>
<pre><code class="language-cpp">HGDIOBJ hGdiObj = SelectObject(hDC, hBrush1);
SelectObject(hDC, hBrush2);
SelectObject(hDC, hGdiObj);
</code></pre>
<p>Aber so hab ich doch den alten Brush der vorher drin war wieder eingesetzt, oder?</p>
<p>Coolcat</p>
]]></description><link>https://www.c-plusplus.net/forum/post/512615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/512615</guid><dc:creator><![CDATA[Coolcat]]></dc:creator><pubDate>Sat, 01 May 2004 21:55:55 GMT</pubDate></item><item><title><![CDATA[Reply to Farbwahltool: Komische Fehler bei 30 sek Maus-Drag on Sat, 01 May 2004 22:19:41 GMT]]></title><description><![CDATA[<p>Coolcat schrieb:</p>
<blockquote>
<p>Ich hab die Brushes und Pens jetzt anschließend wieder mit DeleteObject gelöscht, aber das ist es auch nicht.</p>
</blockquote>
<p>Mit Sicherheit nicht alle, und deswegen geht es auch noch immer nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/512629</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/512629</guid><dc:creator><![CDATA[-King-]]></dc:creator><pubDate>Sat, 01 May 2004 22:19:41 GMT</pubDate></item><item><title><![CDATA[Reply to Farbwahltool: Komische Fehler bei 30 sek Maus-Drag on Tue, 04 May 2004 18:36:20 GMT]]></title><description><![CDATA[<p>...ich habe endlich diesen verdammten Fehler gefunden....</p>
<p>also es lag an folgendem <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> :</p>
<p>1. Folgendes ist falsch:</p>
<pre><code class="language-cpp">HGDIOBJ hOldGdiObj = SelectObject(hDC, hBrush);
//mit Brush arbeiten...
SelectObject(hDC, hOldGdiObj);
</code></pre>
<p>Es muss so heißen:</p>
<pre><code class="language-cpp">HBRUSH hOldBrush = (HBRUSH)SelectObject(hDC, hBrush);
//mit Brush arbeiten...
SelectObject(hDC, hOldBrush);
</code></pre>
<p>2. Man darf kein GDI-Objekt löschen während es selektiert ist. Ich hatte einen Brush immer zuerst gelöscht und dann erst den alten wieder selektiert.<br />
Kann mir jemand sagen warum?</p>
<p>THX @ All <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Coolcat</p>
]]></description><link>https://www.c-plusplus.net/forum/post/514351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/514351</guid><dc:creator><![CDATA[Coolcat]]></dc:creator><pubDate>Tue, 04 May 2004 18:36:20 GMT</pubDate></item><item><title><![CDATA[Reply to Farbwahltool: Komische Fehler bei 30 sek Maus-Drag on Tue, 04 May 2004 19:45:37 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Coolcat schrieb:</p>
<blockquote>
<p>2. Man darf kein GDI-Objekt löschen während es selektiert ist. Ich hatte einen Brush immer zuerst gelöscht und dann erst den alten wieder selektiert.<br />
Kann mir jemand sagen warum?</p>
</blockquote>
<p>das ist eigentlich alles eine Frage des genauen Lesens der Beschreibungen in der MSDN zu den jeweiligen Funktionen. Für DeleteObject findet sich dazu die wichtige Bemerkung:</p>
<p>MSDN schrieb:</p>
<blockquote>
<p>**Do not delete a drawing object (pen or brush) while it is still selected into a device context.<br />
**</p>
</blockquote>
<p>das ist das ganze Geheimnis, einfach befolgen, was dort steht, und man hat keine (na gut, weniger <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="🙂"
    /> ) Probleme</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/514420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/514420</guid><dc:creator><![CDATA[Probe-Nutzer]]></dc:creator><pubDate>Tue, 04 May 2004 19:45:37 GMT</pubDate></item><item><title><![CDATA[Reply to Farbwahltool: Komische Fehler bei 30 sek Maus-Drag on Tue, 04 May 2004 21:05:38 GMT]]></title><description><![CDATA[<p>Hm, muss ich wohl überlesen haben....</p>
<p>Coolcat</p>
]]></description><link>https://www.c-plusplus.net/forum/post/514461</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/514461</guid><dc:creator><![CDATA[Coolcat]]></dc:creator><pubDate>Tue, 04 May 2004 21:05:38 GMT</pubDate></item></channel></rss>