<?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[Zoomen in WinApi]]></title><description><![CDATA[<p>Hi, ich hab volgendes problem bei einem Projet:</p>
<p>ich muss ein Fraktal mit C WinApi Programmieren und dann noch paar funktionen einbauen: z.B. Zoomen mit der Linken Maustaste und mit Rechten Maustaste in anfangszustand gelanden.</p>
<p>Ich hab den Fraktal gezeichnet leider weiß ich nicht wie ich eine funktion schreiben kann um es zu Zoomen.</p>
<p>könnte mir jemand dabei helfen oder einfach tipps oder links schiken.</p>
<p>danke an alle</p>
<p>mgf Mucha <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>
]]></description><link>https://www.c-plusplus.net/forum/topic/202562/zoomen-in-winapi</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Apr 2026 16:55:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/202562.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 12 Jan 2008 22:35:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zoomen in WinApi on Sat, 12 Jan 2008 22:35:52 GMT]]></title><description><![CDATA[<p>Hi, ich hab volgendes problem bei einem Projet:</p>
<p>ich muss ein Fraktal mit C WinApi Programmieren und dann noch paar funktionen einbauen: z.B. Zoomen mit der Linken Maustaste und mit Rechten Maustaste in anfangszustand gelanden.</p>
<p>Ich hab den Fraktal gezeichnet leider weiß ich nicht wie ich eine funktion schreiben kann um es zu Zoomen.</p>
<p>könnte mir jemand dabei helfen oder einfach tipps oder links schiken.</p>
<p>danke an alle</p>
<p>mgf Mucha <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1435685</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1435685</guid><dc:creator><![CDATA[mucha]]></dc:creator><pubDate>Sat, 12 Jan 2008 22:35:52 GMT</pubDate></item><item><title><![CDATA[Reply to Zoomen in WinApi on Sat, 12 Jan 2008 22:40:48 GMT]]></title><description><![CDATA[<p>da gibt es unzählige möglichkeiten. aber ohne einen ansatz wie du das fraktal<br />
denn tatsächlich zeichnest, ob du es in mehreren threads realisierst oder<br />
was sonst noch, ist es schwer zu helfen <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="🙂"
    /> am besten schnipsel posten, dann<br />
kann man auch einen konkreteren lösungsansatz bieten <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1435687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1435687</guid><dc:creator><![CDATA[sothis_]]></dc:creator><pubDate>Sat, 12 Jan 2008 22:40:48 GMT</pubDate></item><item><title><![CDATA[Reply to Zoomen in WinApi on Sat, 12 Jan 2008 23:33:05 GMT]]></title><description><![CDATA[<p>LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)<br />
{<br />
RECT rect;<br />
PAINTSTRUCT ps;<br />
POINT pos;</p>
<p>switch (message) /* handle the messages <em>/<br />
{<br />
case WM_DESTROY:<br />
PostQuitMessage (0); /</em> send a WM_QUIT to the message queue <em>/<br />
break;<br />
case WM_PAINT:<br />
GetClientRect(hwnd, &amp;rect);<br />
BeginPaint(hwnd, &amp;ps);<br />
draw(hwnd, rect);<br />
EndPaint(hwnd, &amp;ps);<br />
break;<br />
case WM_LBUTTONUP:<br />
GetCursorPos(&amp;pos); // Hier weiß ich nicht wie ich den Zoom<br />
// und die Maus-Position an WM_Paint übergebe<br />
break;<br />
default: /</em> for messages that we don't deal with */<br />
return DefWindowProc (hwnd, message, wParam, lParam);<br />
}</p>
<p>return 0;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1435691</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1435691</guid><dc:creator><![CDATA[mucha]]></dc:creator><pubDate>Sat, 12 Jan 2008 23:33:05 GMT</pubDate></item><item><title><![CDATA[Reply to Zoomen in WinApi on Sat, 12 Jan 2008 22:50:22 GMT]]></title><description><![CDATA[<p>void draw(HWND hwnd, RECT rect)<br />
{<br />
HDC hdc = GetDC(hwnd);<br />
int x,y,j,iterationen;<br />
double x0,y0;<br />
COLORREF col[256];</p>
<p>for(j = 0; j &lt; 256; j++)<br />
{<br />
col[j] = RGB(j+60,(int)(j*0.2)+32,(int)(j*0.8)+20);<br />
}<br />
col[255] = RGB(0,0,0);</p>
<p>for(y = 1; y &lt; rect.bottom; y++)<br />
{<br />
for(x = 1; x &lt; rect.right; x++)<br />
{<br />
x0 = ((double) (x<em>3) / (double) (rect.right-rect.left)) - 2;<br />
y0 = ((double) (y</em>2) / (double) (rect.bottom-rect.top)) - 1;</p>
<p>iterationen = fract(x0,y0);<br />
SetPixel(hdc, x, y, col[iterationen]);<br />
}<br />
}<br />
ReleaseDC(hwnd, hdc);<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1435692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1435692</guid><dc:creator><![CDATA[mucha]]></dc:creator><pubDate>Sat, 12 Jan 2008 22:50:22 GMT</pubDate></item><item><title><![CDATA[Reply to Zoomen in WinApi on Sat, 12 Jan 2008 22:49:52 GMT]]></title><description><![CDATA[<p>int fract(double x0, double y0)<br />
{<br />
double x,y,z,tmpx;<br />
int j = 0;</p>
<p>x = x0;<br />
y = y0;</p>
<p>while((x*x + y*y) &lt; 4 &amp;&amp; j &lt; 255)<br />
{<br />
tmpx = ((x*x)-(y*y))+x0;<br />
y = (2*x*y)+y0;<br />
x = tmpx;<br />
j++;<br />
}</p>
<p>return j;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1435693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1435693</guid><dc:creator><![CDATA[mucha]]></dc:creator><pubDate>Sat, 12 Jan 2008 22:49:52 GMT</pubDate></item><item><title><![CDATA[Reply to Zoomen in WinApi on Sat, 12 Jan 2008 23:21:50 GMT]]></title><description><![CDATA[<p>zomg, schipsel, nicht den ganzen quellcode XD. nunja, wie dem auch sei<br />
(es gibt übrigens code tags, die das lesen erleichtern :P) die einfachste,<br />
wenn auch nicht eleganteste lösung ist einen timer zu initialsieren mit:</p>
<pre><code class="language-cpp">SetTimer(hwnd, 1, 250, zoom);
</code></pre>
<p>250 wäre in dem fall der timeout in millisekunden. windows sendet jetzt<br />
alle 250 ms eine WM_TIMER message an dein programm. wie gehabt in der<br />
WndProc handeln:</p>
<pre><code class="language-cpp">case WM_TIMER:
{
	if (wParam == 1)
	{
		if (bZoom)
		{
			// globale variablen ändern
			// die das zeichenverhalten beeinflussen
			SendMessage(hwnd, WM_PAINT, 0, 0); // müsste glaube ich funktionieren :P
		}
	}
	return 0;
}
</code></pre>
<p>bZoom als bool oder integer oder was auch immer global deklarieren und bei<br />
linksklick umschalten:</p>
<pre><code class="language-cpp">case WM_LBUTTONUP:
	bZoom ^= bZoom;
</code></pre>
<p>soweit sogut. nun musst du noch deinen code so anpassen, damit ein oder<br />
mehrere globale variablen das zeichnen des fraktals entsprechend beinflussen.<br />
tip: mauskoordinaten ebenfalls in globalen variablen speichern <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="🙂"
    /><br />
ich hoffe dass hilft weiter <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>edit: oh, ich vergaß, das ist jetzt natürlich schon nahe einer animation <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /><br />
wenn du ein einmaligen zoom um einen bestimmten faktor haben wills, wie es wohl<br />
bei fraktal zeichen tools üblich ist, dann modifiziere einfach die ominösen<br />
globalen variablen nach dem du LBUTTONUP bekommen hast, und zeichne das fenster dann neu.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1435696</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1435696</guid><dc:creator><![CDATA[sothis_]]></dc:creator><pubDate>Sat, 12 Jan 2008 23:21:50 GMT</pubDate></item><item><title><![CDATA[Reply to Zoomen in WinApi on Sun, 13 Jan 2008 00:00:40 GMT]]></title><description><![CDATA[<p>wir dürfen in Projekt keine globale variablen benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1435703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1435703</guid><dc:creator><![CDATA[mucha]]></dc:creator><pubDate>Sun, 13 Jan 2008 00:00:40 GMT</pubDate></item><item><title><![CDATA[Reply to Zoomen in WinApi on Sun, 13 Jan 2008 09:42:34 GMT]]></title><description><![CDATA[<p><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="😮"
    /> was hat das denn für einen sinn?</p>
<p>dann sende dieses zeugs als parameter in der WM_PAINT message mit</p>
<pre><code class="language-cpp">SendMessage(hwnd, WM_PAINT, lparam, wparam)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1435755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1435755</guid><dc:creator><![CDATA[sothis_]]></dc:creator><pubDate>Sun, 13 Jan 2008 09:42:34 GMT</pubDate></item><item><title><![CDATA[Reply to Zoomen in WinApi on Sun, 13 Jan 2008 17:24:20 GMT]]></title><description><![CDATA[<p>sothis_ schrieb:</p>
<blockquote>
<p><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="😮"
    /> was hat das denn für einen sinn?</p>
<p>dann sende dieses zeugs als parameter in der WM_PAINT message mit</p>
<pre><code class="language-cpp">SendMessage(hwnd, WM_PAINT, lparam, wparam)
</code></pre>
</blockquote>
<p>Kannst ja mit ne Suchmaschine fütttern, das macht Sinn! Stichwort Übersichtlichkeit. WM_PAINT explizit zu Senden, ist mitunter eine Totsünde. Außerdem sind WPARAM und LPARAM bereits vorbelegt.</p>
<p>Warum verwendest Du nicht einfach statische lokale Variablen?</p>
<p>Hm, was willst Du damit bezwecken? :</p>
<pre><code class="language-cpp">bZoom ^= bZoom;
</code></pre>
<p>Da reicht doch:</p>
<pre><code class="language-cpp">bZoom = !bZoom;
</code></pre>
<p><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="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1436014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1436014</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Sun, 13 Jan 2008 17:24:20 GMT</pubDate></item><item><title><![CDATA[Reply to Zoomen in WinApi on Sun, 13 Jan 2008 17:43:18 GMT]]></title><description><![CDATA[<p>CodeFinder schrieb:</p>
<blockquote>
<p>sothis_ schrieb:</p>
<blockquote>
<p><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="😮"
    /> was hat das denn für einen sinn?</p>
<p>dann sende dieses zeugs als parameter in der WM_PAINT message mit</p>
<pre><code class="language-cpp">SendMessage(hwnd, WM_PAINT, lparam, wparam)
</code></pre>
</blockquote>
<p>Kannst ja mit ne Suchmaschine fütttern, das macht Sinn! Stichwort Übersichtlichkeit. WM_PAINT explizit zu Senden, ist mitunter eine Totsünde. Außerdem sind WPARAM und LPARAM bereits vorbelegt.</p>
</blockquote>
<p>übersichtlichkeit ist geschmackssache <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="🙂"
    /><br />
mir konnte bisher noch keiner überzeugend plausibel machen warum<br />
ich auf globale variablen verzichten sollte, somit sie mitunter<br />
auch machmal unerlässlich sind. wenn ich damit persönlich scheller<br />
und effizienter mein ziel erreiche, dann benutze ich sie <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="🙂"
    /><br />
zu WM_PAINT: kann sein, weiß ich nicht :D, war nur ein schneller<br />
gedanke der mir im kopf rumschwirrte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
<p>CodeFinder schrieb:</p>
<blockquote>
<p>Hm, was willst Du damit bezwecken? :</p>
<pre><code class="language-cpp">bZoom ^= bZoom;
</code></pre>
<p>Da reicht doch:</p>
<pre><code class="language-cpp">bZoom = !bZoom;
</code></pre>
<p><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="😕"
    /></p>
</blockquote>
<p>auch das ist geschmackssache. erfüllt den selben zweck <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>edit: doh! natürlich nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
<pre><code class="language-cpp">bZoom ^= 1;
</code></pre>
<p>wäre korrekt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1436023</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1436023</guid><dc:creator><![CDATA[sothis_]]></dc:creator><pubDate>Sun, 13 Jan 2008 17:43:18 GMT</pubDate></item></channel></rss>