<?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[Problem bei Zeichnen von Komponente]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich fange gerade an mit C++ und habe mich jetzt ein das erste Dialog-basierte Programm mit der WinAPI gewagt.</p>
<p>Soweit klappt alles ganz gut, einzig ein Problem habe ich:</p>
<p>Und zwar möchte ich ein Diagramm zeichnen. Um das zu erledigen habe ich einfach eine Label-Komponente auf dem Dialog platziert, in dessen Zeichen-Bereich ich zeichnen möchte.</p>
<p>Das klappt auch ganz gut, jedoch NUR wenn ich das direkt während der Nachrichtenbehandlung von WM_PAINT in der CALLBACK-Methode meines Dialoges mache.</p>
<p>Jedoch soll zunächst durch eine Benutzereingabe (Button - also WM_COMMAND) das Zeichnen ausgelöst werden.</p>
<p>Und genau da liegt das Problem. Egal was ich versuche, ich kann außerhalb von WM_PAINT nicht auf der Komponente zeichnen. Und auch wenn ich den Zeichen-Code innerhalb von WM_PAINT platziere und über eine globale Variable vom Typ Bool überprüfe, ob der Button bereits ausgelöst wurde, klappt es nicht.</p>
<p>Wie kann ich am Ende der Ereignisprozedur meines Buttons die Komponente bzw den ganzen Dialog dazu anregen, sich neu zu zeichnen??</p>
<p>Ich habe es schon mit UpdateWindow(..), SendMessage(hDlg, WM_PAINT,wParam, lParam) und vieles mehr versucht, klappt jedoch alles nicht.</p>
<p>Mein Zeichencode sieht etwa so aus:</p>
<pre><code class="language-cpp">PAINTSTRUCT ps;
HDC hdc = BeginPaint(hDlg,&amp;ps);

LineTo(hdc,100,100);

EndPaint(hDlg,&amp;ps);
</code></pre>
<p>hDlg ist dabei das Handle des Dialogs, bzw. ich habe es auch schon mit dem Handle der Komponente das ich über GetDialogItem(..) bekomme, versucht.</p>
<p>Vielen Dank für die Hilfe<br />
Mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/193478/problem-bei-zeichnen-von-komponente</link><generator>RSS for Node</generator><lastBuildDate>Tue, 30 Jun 2026 14:22:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/193478.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 26 Sep 2007 13:04:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem bei Zeichnen von Komponente on Wed, 26 Sep 2007 13:04:43 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich fange gerade an mit C++ und habe mich jetzt ein das erste Dialog-basierte Programm mit der WinAPI gewagt.</p>
<p>Soweit klappt alles ganz gut, einzig ein Problem habe ich:</p>
<p>Und zwar möchte ich ein Diagramm zeichnen. Um das zu erledigen habe ich einfach eine Label-Komponente auf dem Dialog platziert, in dessen Zeichen-Bereich ich zeichnen möchte.</p>
<p>Das klappt auch ganz gut, jedoch NUR wenn ich das direkt während der Nachrichtenbehandlung von WM_PAINT in der CALLBACK-Methode meines Dialoges mache.</p>
<p>Jedoch soll zunächst durch eine Benutzereingabe (Button - also WM_COMMAND) das Zeichnen ausgelöst werden.</p>
<p>Und genau da liegt das Problem. Egal was ich versuche, ich kann außerhalb von WM_PAINT nicht auf der Komponente zeichnen. Und auch wenn ich den Zeichen-Code innerhalb von WM_PAINT platziere und über eine globale Variable vom Typ Bool überprüfe, ob der Button bereits ausgelöst wurde, klappt es nicht.</p>
<p>Wie kann ich am Ende der Ereignisprozedur meines Buttons die Komponente bzw den ganzen Dialog dazu anregen, sich neu zu zeichnen??</p>
<p>Ich habe es schon mit UpdateWindow(..), SendMessage(hDlg, WM_PAINT,wParam, lParam) und vieles mehr versucht, klappt jedoch alles nicht.</p>
<p>Mein Zeichencode sieht etwa so aus:</p>
<pre><code class="language-cpp">PAINTSTRUCT ps;
HDC hdc = BeginPaint(hDlg,&amp;ps);

LineTo(hdc,100,100);

EndPaint(hDlg,&amp;ps);
</code></pre>
<p>hDlg ist dabei das Handle des Dialogs, bzw. ich habe es auch schon mit dem Handle der Komponente das ich über GetDialogItem(..) bekomme, versucht.</p>
<p>Vielen Dank für die Hilfe<br />
Mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1373110</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1373110</guid><dc:creator><![CDATA[SuPeRpLuS]]></dc:creator><pubDate>Wed, 26 Sep 2007 13:04:43 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Zeichnen von Komponente on Wed, 26 Sep 2007 13:10:26 GMT]]></title><description><![CDATA[<p>Du sollst auch nicht außerhalb von WM_PAINT zeichnen.<br />
Du kannst eine globale/statische Variable anlegen wie bool zeichnen = false;</p>
<p>Wenn man auf den Knopf drückt setzt Du die Variable auf true und rufst Invalidate (o.ä.) auf, dadurch wird neugezeichnet.</p>
<p>In WM_PAINT überprüfst Du die oben angelegte Varaible, falls true zeichnest Du ansonsten nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1373119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1373119</guid><dc:creator><![CDATA[Airdamn]]></dc:creator><pubDate>Wed, 26 Sep 2007 13:10:26 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Zeichnen von Komponente on Wed, 26 Sep 2007 13:34:00 GMT]]></title><description><![CDATA[<p>Danke schonmal für die Antwort.</p>
<p>Ich habe gerade mal nachgeforscht, es scheint mir das Invalidate() eine Funktion der MFC ist, oder?</p>
<p>Ich arbeite aber ohne die MFC, d.h. die Funktion steht mir nicht zur Verfügung.</p>
<p>Gibt es keine ähnliche Methode, die auch ein Neuzeichnen auslöst?</p>
<p>Wie gesagt, ich habe es schon mit SendMessage(.., WM_PAINT ..) oder UpdateWindow() versucht, klappt aber alles nicht.</p>
<p>Mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1373138</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1373138</guid><dc:creator><![CDATA[SuPeRpLuS]]></dc:creator><pubDate>Wed, 26 Sep 2007 13:34:00 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Zeichnen von Komponente on Wed, 26 Sep 2007 14:01:33 GMT]]></title><description><![CDATA[<p>Ok, hab gedacht in WinAPI heißt es auch Invalidate.<br />
Dann nimm <a href="http://msdn2.microsoft.com/en-us/library/ms534900.aspx" rel="nofollow">RedrawWindow</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1373160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1373160</guid><dc:creator><![CDATA[Airdamn]]></dc:creator><pubDate>Wed, 26 Sep 2007 14:01:33 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Zeichnen von Komponente on Wed, 26 Sep 2007 20:25:41 GMT]]></title><description><![CDATA[<p>Danke, das hat geklappt!</p>
<p>MFG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1373461</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1373461</guid><dc:creator><![CDATA[SuPeRpLuS]]></dc:creator><pubDate>Wed, 26 Sep 2007 20:25:41 GMT</pubDate></item></channel></rss>