<?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[Probleme&#x2F;Fragen zu WM_PAINT und BeginPaint()]]></title><description><![CDATA[<p>Hallo...<br />
ich hoffe mal, dass ich das richtige Forum für meine Fragen erwischt hab...<br />
Bin noch blutiger Anfänger bei WinAPI-Geschichten, versuche z.Zt. das anhand eines Anfängerbuches zu lernen und hab dabei ein paar (kleine) Verständnisprobleme:</p>
<p>1. Mein &quot;Hauptproblem&quot;: Ich hab ne Funktion programmiert, mit der bei Mausklick (WM_LBUTTONCLK) ein Text mit TextOut() an der angeklickten Stelle ausgegeben wird. Wenn ich die Größe des Fensters ändere, ist der Text wieder weg. Was muss ich tun, damit er da bleibt? Brauch jetzt keinen Code dazu, den bastel ich mir lieber selbst, sondern eher ein paar grobe Hinweise...</p>
<p>2. Was genau ist WM_Paint? Also wer übergibt wann und warum diese Nachricht an meine Nachrichtenschleife? Und wozu ist das gut?</p>
<p>3. Wozu braucht man BeginPaint() ? Meine Rectangle-Rechtecke werden auch so gezeichnet..? Und warum steht in dem Buch, dass man BeginPaint() nur bei WM_Paint nutzen sollte?</p>
<p>Das Buch ist teilweise etwas zu oberflächlich und auch beim googlen bin ich gescheitert (schlechte Englischkenntnisse <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="😉"
    /> ) Deshalb versuch ichs hier - wär nett, wenn mir jemand weiterhelfen könnte...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/146206/probleme-fragen-zu-wm_paint-und-beginpaint</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 18:27:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/146206.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 05 May 2006 09:56:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme&#x2F;Fragen zu WM_PAINT und BeginPaint() on Fri, 05 May 2006 09:56:32 GMT]]></title><description><![CDATA[<p>Hallo...<br />
ich hoffe mal, dass ich das richtige Forum für meine Fragen erwischt hab...<br />
Bin noch blutiger Anfänger bei WinAPI-Geschichten, versuche z.Zt. das anhand eines Anfängerbuches zu lernen und hab dabei ein paar (kleine) Verständnisprobleme:</p>
<p>1. Mein &quot;Hauptproblem&quot;: Ich hab ne Funktion programmiert, mit der bei Mausklick (WM_LBUTTONCLK) ein Text mit TextOut() an der angeklickten Stelle ausgegeben wird. Wenn ich die Größe des Fensters ändere, ist der Text wieder weg. Was muss ich tun, damit er da bleibt? Brauch jetzt keinen Code dazu, den bastel ich mir lieber selbst, sondern eher ein paar grobe Hinweise...</p>
<p>2. Was genau ist WM_Paint? Also wer übergibt wann und warum diese Nachricht an meine Nachrichtenschleife? Und wozu ist das gut?</p>
<p>3. Wozu braucht man BeginPaint() ? Meine Rectangle-Rechtecke werden auch so gezeichnet..? Und warum steht in dem Buch, dass man BeginPaint() nur bei WM_Paint nutzen sollte?</p>
<p>Das Buch ist teilweise etwas zu oberflächlich und auch beim googlen bin ich gescheitert (schlechte Englischkenntnisse <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="😉"
    /> ) Deshalb versuch ichs hier - wär nett, wenn mir jemand weiterhelfen könnte...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1051373</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1051373</guid><dc:creator><![CDATA[schaf77]]></dc:creator><pubDate>Fri, 05 May 2006 09:56:32 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme&#x2F;Fragen zu WM_PAINT und BeginPaint() on Fri, 05 May 2006 10:11:20 GMT]]></title><description><![CDATA[<p>Mit WM_PAINT teilt das System Deiner Anwendung mit, dass ein Fensterbereich neu gezeichnet werden muss. Mit BeginPaint erhältst Du einen passenden Device-Context, in dem nur der neuzuzeichnende Bereich beschrieben werden kann (Stichwort &quot;Region&quot; - so wird z. B. vermieden, dass nicht veränderte Bereiche neu gezeichnet werden (führt u. U. zu &quot;Flimmern&quot;).</p>
<p>Um Deinen Text dauerhaft ins Fenster zu bekommen, speicherst Du ihn in eine Variable, teilst dem System mittels InvalidateRect() mit, dass sich der Fensterinhalt ändern soll und zeichnest dann in der WM_PAINT-Message den Inhalt der Variablen ins Fenster.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1051392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1051392</guid><dc:creator><![CDATA[mgs_]]></dc:creator><pubDate>Fri, 05 May 2006 10:11:20 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme&#x2F;Fragen zu WM_PAINT und BeginPaint() on Fri, 05 May 2006 12:38:03 GMT]]></title><description><![CDATA[<p>WM_PAINT ist die Nachricht, mit der das Betriebssystem dem Programm mitteilt, daß das Fenster neu gezeichnet wird. Das passiert immer, wenn sich an dem Fenster etwas geändert hat (Größe, Überlappung durch andere Fenster).<br />
In der Standardbearbeitung wird dann nur der Fensterinhalt mit der Hintergrundfarbe ausgefüllt. Deswegen verschwindet Dein Text.</p>
<p>Alle Zeichenoperationen, die bei einer Fensteränderung erhalten bleiben sollen, müssen bei der WM-PAINT bearbeitet werden. Zeichnen kann man auch anderswo, aber solche Änderungen gehen verloren.</p>
<p>Du mußt nach WM_LBUTTONCLK die Koordinaten des Mauszeigers (in LOWORD/HIWORD(wParam) in Variablen ablegen, den Text ebenfalls. Beides kannst Du dann bei WM_PAINT ausgeben.</p>
<p>Hier noch ein paar schöne Tutorials:<br />
<a href="http://www.win-api.de/" rel="nofollow">http://www.win-api.de/</a><br />
<a href="http://pronix.linuxdelta.de/C/win32/index.shtml" rel="nofollow">http://pronix.linuxdelta.de/C/win32/index.shtml</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1051499</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1051499</guid><dc:creator><![CDATA[Elektronix]]></dc:creator><pubDate>Fri, 05 May 2006 12:38:03 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme&#x2F;Fragen zu WM_PAINT und BeginPaint() on Sat, 06 May 2006 16:07:55 GMT]]></title><description><![CDATA[<p>Danke Euch beiden für die Antworten und die Links <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="🙂"
    /> Den Sinn von WM_PAINT hab ich jetzt erstmal kapiert - und das Speichern... naja, da üb ich noch ;), aber Prinzip ist erstmal klar</p>
<p>Eine Nachfrage hab ich aber noch: ich hol mir mein HDC mit GetDC() und kann damit auch zeichnen - zumindest ging es bei meinen bisherigen - einfachen - Übungen. Hat BeginPaint demgegenüber irgendeinen Vorteil oder ist das einfach nur Geschmacksache, wie man's macht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1052130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1052130</guid><dc:creator><![CDATA[schaf77]]></dc:creator><pubDate>Sat, 06 May 2006 16:07:55 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme&#x2F;Fragen zu WM_PAINT und BeginPaint() on Mon, 08 May 2006 06:51:43 GMT]]></title><description><![CDATA[<p>Naja, wie schon gesagt: BeginPaint ist die Antwort auf die WM_PAINT-Nachricht. BeginPaint wird daher eigentlich nur unter WM_PAINT verwendet. Dafür bleiben Deine Fensterinhalte eben stehen.<br />
BeginPaint() liefert automatisch einen HDC zurück. Das erspart einen Zwischenschritt. Deshalb schreibt man bei der Funktion:</p>
<pre><code class="language-cpp">HDC hDC;
PAINTSTRUCT ps;
//(...)

hDC = BeginPaint(hWnd, &amp;ps);//Damit wird der DeviceContext dem Fenster zugewiesen.

//Die Struktur ps (Typ PAINTSTRUCT)liefert Daten für die Ablage der Fensterinhalte.
{
//Hier Deine Ausgabefunktionen
}
EndPaint(hWnd, &amp;ps);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1053114</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1053114</guid><dc:creator><![CDATA[Elektronix]]></dc:creator><pubDate>Mon, 08 May 2006 06:51:43 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme&#x2F;Fragen zu WM_PAINT und BeginPaint() on Mon, 08 May 2006 09:36:00 GMT]]></title><description><![CDATA[<p>Elektronix schrieb:</p>
<blockquote>
<p>Alle Zeichenoperationen, die bei einer Fensteränderung erhalten bleiben sollen, müssen bei der WM-PAINT bearbeitet werden. Zeichnen kann man auch anderswo, aber solche Änderungen gehen verloren.</p>
</blockquote>
<p>Sinnvoller wäre es immer in ein Bitmap im speicher zu malen und dies bei Bedarf neu auf den Canvas zu blitten. Wenn mal viel zeichnet ist diese Vorgehensweise um einiges schneller als immer alles neu zu zeichnen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1053219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1053219</guid><dc:creator><![CDATA[Gast Luckie]]></dc:creator><pubDate>Mon, 08 May 2006 09:36:00 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme&#x2F;Fragen zu WM_PAINT und BeginPaint() on Mon, 08 May 2006 11:04:16 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/15778">@Gast</a> Luckie</p>
<p>Mag sein. Aber 1. ist &quot;Schaf77&quot; Neueinsteiger- wie sich aus der Eingangsfrage ersehen läßt- und diese Methode für Anfänger wohl noch etwas hoch, 2. wissen weder er noch ich, was &quot;auf den Canvas zu blitten&quot; bedeutet und wie man das macht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> :p</p>
<p>Wenn Du ein Tutorial dazu kennst, wär's natürlich klasse. <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/1053273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1053273</guid><dc:creator><![CDATA[Elektronix]]></dc:creator><pubDate>Mon, 08 May 2006 11:04:16 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme&#x2F;Fragen zu WM_PAINT und BeginPaint() on Tue, 09 May 2006 14:17:22 GMT]]></title><description><![CDATA[<p>Puh, da bin ich ja echt beruhigt, dass ich das Canvasgeblittere nicht verstehen muss <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>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/11581">@Elektronix</a>:<br />
Da du so schön erklären kannst (danke nochmal), hab ich noch ne klitzekleine Frage zu den Nachrichten: wie bekomm ich denn da eine UND-Verknüpfung hin? Also konkret: ich kenne WM_LBUTTONCLK und WM_MOUSEMOVE( <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> ), aber welche Nachricht ist &quot;Bewegen bei gedrückter Maustaste&quot;?? Da ja jede Nachricht einzeln kommt (vermute ich mal) kann ich das ja schlecht mit &amp;&amp; machen, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1054181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1054181</guid><dc:creator><![CDATA[schaf77]]></dc:creator><pubDate>Tue, 09 May 2006 14:17:22 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme&#x2F;Fragen zu WM_PAINT und BeginPaint() on Tue, 09 May 2006 14:29:22 GMT]]></title><description><![CDATA[<p>schaf77 schrieb:</p>
<blockquote>
<p>Puh, da bin ich ja echt beruhigt, dass ich das Canvasgeblittere nicht verstehen muss <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>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/11581">@Elektronix</a>:<br />
Da du so schön erklären kannst (danke nochmal)...,</p>
</blockquote>
<p>Danke für die Blumen.. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<p>Zu Deiner Frage. Bei WM_MOUSEMOVE wird in wParam der Status der Tasten gespeichert. Siehe hier:</p>
<p><a href="http://www.win-api.de/tutorials.php?tutid=11" rel="nofollow">http://www.win-api.de/tutorials.php?tutid=11</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1054196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1054196</guid><dc:creator><![CDATA[Elektronix]]></dc:creator><pubDate>Tue, 09 May 2006 14:29:22 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme&#x2F;Fragen zu WM_PAINT und BeginPaint() on Tue, 09 May 2006 16:21:58 GMT]]></title><description><![CDATA[<p>Aaah <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /> da werd ich wohl doch erstmal ordentlich die Tutorials durcharbeiten.<br />
Thx... bis zur nächsten Frage <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/1054282</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1054282</guid><dc:creator><![CDATA[schaf77]]></dc:creator><pubDate>Tue, 09 May 2006 16:21:58 GMT</pubDate></item></channel></rss>