<?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[Zwei Fragen zum Zeichnen]]></title><description><![CDATA[<p>Vor kurzem habe ich mal mit WinApi Programmierung angefangen. Um das zu testen habe ich einfach ein Programm geschrieben, das ein Rechteck zeichnet. Dazu zwei Fragen:<br />
Kann ich die Farbe des Rechtecks ändern, also Rahmen und Füllfarbe?<br />
Wie kann ich mehrere Rechtecke zeichnen? Bei WM_LBUTTONDOWN wird die Mausposition in zwei globalen Variablen gespeichert und bei WM_LBUTTONUP mit den Variablen und der aktuellen Position das Rechteck geszeichnet. Das funktioniert aber nur einmal. Der Debugger bleibt jedes mal bei Rectangle() stehen, aber es wird halt nur beim ersten mal gezeichnet.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/160909/zwei-fragen-zum-zeichnen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Jul 2026 17:42:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/160909.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 01 Oct 2006 08:37:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zwei Fragen zum Zeichnen on Sun, 01 Oct 2006 08:37:44 GMT]]></title><description><![CDATA[<p>Vor kurzem habe ich mal mit WinApi Programmierung angefangen. Um das zu testen habe ich einfach ein Programm geschrieben, das ein Rechteck zeichnet. Dazu zwei Fragen:<br />
Kann ich die Farbe des Rechtecks ändern, also Rahmen und Füllfarbe?<br />
Wie kann ich mehrere Rechtecke zeichnen? Bei WM_LBUTTONDOWN wird die Mausposition in zwei globalen Variablen gespeichert und bei WM_LBUTTONUP mit den Variablen und der aktuellen Position das Rechteck geszeichnet. Das funktioniert aber nur einmal. Der Debugger bleibt jedes mal bei Rectangle() stehen, aber es wird halt nur beim ersten mal gezeichnet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1147289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1147289</guid><dc:creator><![CDATA[Dussel]]></dc:creator><pubDate>Sun, 01 Oct 2006 08:37:44 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Fragen zum Zeichnen on Sun, 01 Oct 2006 14:20:12 GMT]]></title><description><![CDATA[<p>Hi Dussel,</p>
<p>Dussel schrieb:</p>
<blockquote>
<p>Kann ich die Farbe des Rechtecks ändern, also Rahmen und Füllfarbe?</p>
</blockquote>
<p>Klar, das geht.</p>
<p>Dussel schrieb:</p>
<blockquote>
<p>Wie kann ich mehrere Rechtecke zeichnen?</p>
</blockquote>
<p>Wo ist das Problem ? (Ich weiß ja nicht wie dein bisheriger Ansatz aussieht <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>Dussel schrieb:</p>
<blockquote>
<p>Bei WM_LBUTTONDOWN wird die Mausposition in zwei globalen Variablen gespeichert und bei WM_LBUTTONUP mit den Variablen und der aktuellen Position das Rechteck geszeichnet. Das funktioniert aber nur einmal. Der Debugger bleibt jedes mal bei Rectangle() stehen, aber es wird halt nur beim ersten mal gezeichnet.</p>
</blockquote>
<p>Zeig mal den Code...Was sagt dir denn der Debugger, ... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> Access-Violation ?</p>
<p>PS: Globale Varialben sollte man nach Möglichkeite vermeiden <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="💡"
    /> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1147416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1147416</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Sun, 01 Oct 2006 14:20:12 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Fragen zum Zeichnen on Sun, 01 Oct 2006 15:20:12 GMT]]></title><description><![CDATA[<p>Ok, war ungenau:<br />
Zu den globalen Variablen: Habe gerade im Buch das Schlüsselwort static gefunden.<br />
Quelltext habe ich gerade nicht hier sieht aber in der callback (der Nachrichtenfunktion) so aus:</p>
<pre><code>PAINTSTRUCT ps;
HDC hDC;
switch(message){
case WM_LBUTTONDOWN:
x=LOWORD(lParam);
y=HIWORD(lParam);
retun 0;
case WM_LBUTTONUP:
hDC=beginPaint(hWnd,&amp;ps);
Rectangle(hDC,x,y,LOWORD(lParam),HIWORD(lParam));
EndPaint(hWnd,&amp;ps);
return 0;
}
</code></pre>
<p>Bin jetzt mit LOWORD und HIWORD nicht sicher, kann umgekehrt sein und statt lParam auch wParam.<br />
Der Debugger gibt keinen Fehler aus, ich wollte nur wissen, ob beim zweiten Mal die Funktion Rectangle noch aufgerufen wird, weil der dann halt nichts mehr zeichnet. Ich glaube man müsste das Fenster irgendwie aktualisieren.<br />
Dann noch: Wie ändert man denn die Farben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1147454</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1147454</guid><dc:creator><![CDATA[Dussel]]></dc:creator><pubDate>Sun, 01 Oct 2006 15:20:12 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Fragen zum Zeichnen on Sun, 01 Oct 2006 18:00:13 GMT]]></title><description><![CDATA[<p>Also man sollte BeginPaint/EndPaint sowieso NUR unter WM_PAINT aufrufen <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/1147540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1147540</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Sun, 01 Oct 2006 18:00:13 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Fragen zum Zeichnen on Mon, 02 Oct 2006 09:33:24 GMT]]></title><description><![CDATA[<p>Also:</p>
<pre><code>static int xa,xe,ya,ye;
switch(message){
case WM_LBUTTONDOWN:
xa=LOWORD(lParam);
ya=HIWORD(lParam);
return 0;
case WM_LBUTTONUP:
xe=LOWROD(lParam);
ye=HIWORD(lParam);
return 0;
case WM_PAINT:
hDC=BeginPaint(hWnd,&amp;ps);
Rectangle(hWnd,xa,ya,xe,ye);
EndPaint(hWnd,&amp;ps);
return 0;
}
</code></pre>
<p>oder wie? Wird dann das fenster aktualisiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1147804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1147804</guid><dc:creator><![CDATA[Dussel]]></dc:creator><pubDate>Mon, 02 Oct 2006 09:33:24 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Fragen zum Zeichnen on Mon, 02 Oct 2006 09:47:14 GMT]]></title><description><![CDATA[<p>Dussel schrieb:</p>
<blockquote>
<p>Wird dann das fenster aktualisiert?</p>
</blockquote>
<p>Via InvalidateRect.</p>
<p>Aber wenn Du während der Mausbewegung was Zeichnen willst, ist es eine der wenigen Ausnahmen, wo man mal direkt zeichen sollte... Dann sollte man GetDC verwenden.<br />
Siehe:<br />
<a href="http://www.codeproject.com/gdi/paint_beginner.asp" rel="nofollow">http://www.codeproject.com/gdi/paint_beginner.asp</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1147817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1147817</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Mon, 02 Oct 2006 09:47:14 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Fragen zum Zeichnen on Mon, 02 Oct 2006 09:51:11 GMT]]></title><description><![CDATA[<p>Ok, danke, werde mal rumprobieren</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1147820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1147820</guid><dc:creator><![CDATA[Dussel]]></dc:creator><pubDate>Mon, 02 Oct 2006 09:51:11 GMT</pubDate></item></channel></rss>