<?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[Fenster Logic]]></title><description><![CDATA[<p>Hai</p>
<p>Ich versteh´s nicht. Schaut euch mal bitte folgenden code an</p>
<pre><code class="language-cpp">case WM_GETMINMAXINFO: 
    ((LPMINMAXINFO)lParam)-&gt;ptMaxTrackSize.x=430; 
    ((LPMINMAXINFO)lParam)-&gt;ptMaxTrackSize.y=450; 
    break;
	case WM_MOVE:
		GetWindowPlacement(hwnd, &amp;wp);
                  if (wp.showCmd==SW_SHOWMAXIMIZED) {			
                     wp.rcNormalPosition.left=wp.ptMaxPosition.x;
		  wp.rcNormalPosition.top=wp.ptMaxPosition.y;
		  SetWindowPlacement(hwnd, &amp;wp);
		  UpdateWindow (hwnd) ;	}

	return 0;

	case WM_SIZE:		
			GetWindowPlacement(hwnd, &amp;wp);
			SetWindowPos (hwnd, NULL,wp.rcNormalPosition.left, wp.rcNormalPosition.top, 430 , 450, SW_SHOW ) ;

		    UpdateWindow (hwnd) ;			
			ShowWindow(hwnd,SW_SHOW);		
	return 0;
</code></pre>
<p>Also für mich heißt das: wenn das Fenster im maximierten zustand ist, soll er im Windoplacent bei move für die normale Position die MAX-Werte übernehmen, damit er bei click auf den &quot;verkleinern&quot; Button auf der momentanen Position verkleinert. Allerdings schaut die Praxis ganz anders aus. Hier springt das Fenster beim verkleinern auf die Position zurück wo das Fenster als letztes &quot;verkleinert&quot; war zurück und verkleinert dann. Wo ist denn hier bitte der Fehler ??</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/100306/fenster-logic</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Apr 2026 16:28:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/100306.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 06 Feb 2005 00:43:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fenster Logic on Sun, 06 Feb 2005 00:44:02 GMT]]></title><description><![CDATA[<p>Hai</p>
<p>Ich versteh´s nicht. Schaut euch mal bitte folgenden code an</p>
<pre><code class="language-cpp">case WM_GETMINMAXINFO: 
    ((LPMINMAXINFO)lParam)-&gt;ptMaxTrackSize.x=430; 
    ((LPMINMAXINFO)lParam)-&gt;ptMaxTrackSize.y=450; 
    break;
	case WM_MOVE:
		GetWindowPlacement(hwnd, &amp;wp);
                  if (wp.showCmd==SW_SHOWMAXIMIZED) {			
                     wp.rcNormalPosition.left=wp.ptMaxPosition.x;
		  wp.rcNormalPosition.top=wp.ptMaxPosition.y;
		  SetWindowPlacement(hwnd, &amp;wp);
		  UpdateWindow (hwnd) ;	}

	return 0;

	case WM_SIZE:		
			GetWindowPlacement(hwnd, &amp;wp);
			SetWindowPos (hwnd, NULL,wp.rcNormalPosition.left, wp.rcNormalPosition.top, 430 , 450, SW_SHOW ) ;

		    UpdateWindow (hwnd) ;			
			ShowWindow(hwnd,SW_SHOW);		
	return 0;
</code></pre>
<p>Also für mich heißt das: wenn das Fenster im maximierten zustand ist, soll er im Windoplacent bei move für die normale Position die MAX-Werte übernehmen, damit er bei click auf den &quot;verkleinern&quot; Button auf der momentanen Position verkleinert. Allerdings schaut die Praxis ganz anders aus. Hier springt das Fenster beim verkleinern auf die Position zurück wo das Fenster als letztes &quot;verkleinert&quot; war zurück und verkleinert dann. Wo ist denn hier bitte der Fehler ??</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/715623</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/715623</guid><dc:creator><![CDATA[mww]]></dc:creator><pubDate>Sun, 06 Feb 2005 00:44:02 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster Logic on Sun, 06 Feb 2005 08:01:32 GMT]]></title><description><![CDATA[<p>Also bei mir springt das Fenster immer auf 0 / 0, was ja wohl auch wp.ptMaxPosition.x / wp.ptMaxPosition.y entspricht <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 />
Mir ist nur noch nicht ganz klar, wass es wohin hüpfen soll <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>
]]></description><link>https://www.c-plusplus.net/forum/post/715658</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/715658</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Sun, 06 Feb 2005 08:01:32 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster Logic on Sun, 06 Feb 2005 09:34:14 GMT]]></title><description><![CDATA[<p>Erst mal Danke für das Interesse <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>Also wenn ich das Fenster im maximierten Zustand bewege, wird die MaxPosition in der normalen Position gespeichert, wieso sollte es dann auf 0,0 springen ? Es sollte laut code dann doch auf die Position springen, auf die ich es zuletzt bewegt habe !</p>
<p>P.S noch eine Frage: mit Enabelindow(hbutton,False) kann man ja buttons deaktivieren. Wie ist denn die ID vom Maximieren-Button ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/715696</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/715696</guid><dc:creator><![CDATA[mww]]></dc:creator><pubDate>Sun, 06 Feb 2005 09:34:14 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster Logic on Sun, 06 Feb 2005 13:56:26 GMT]]></title><description><![CDATA[<p>Du wird wohl aber ptMaxPosition nicht verändert - was du brauchst ist wohl eher das hier:</p>
<blockquote>
<p>The parameters are given in screen coordinates for overlapped and pop-up windows and in parent-client coordinates for child windows.</p>
<p>The following example demonstrates how to obtain the position from the lParam parameter.</p>
<pre><code class="language-cpp">xPos = (int)(short) LOWORD(lParam);   // horizontal position 
yPos = (int)(short) HIWORD(lParam);   // vertical position
</code></pre>
<p>You can also use the MAKEPOINTS macro to convert the lParam parameter to a POINTS structure.</p>
</blockquote>
<p>mww schrieb:</p>
<blockquote>
<p>P.S noch eine Frage: mit Enabelindow(hbutton,False) kann man ja buttons deaktivieren. Wie ist denn die ID vom Maximieren-Button ?</p>
</blockquote>
<p>Falls du es gleich von Anfang an deaktivieren willst, dann darfst einfach WS_MAXIMIZEBOX nicht als Window-Style mit angeben bzw. mit (...) &amp; ~WS_MAXIMIZEBOX explizit wieder entfernen <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/715912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/715912</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Sun, 06 Feb 2005 13:56:26 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster Logic on Sun, 06 Feb 2005 19:44:33 GMT]]></title><description><![CDATA[<p>Das funktioniert auch nicht!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/716185</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/716185</guid><dc:creator><![CDATA[mww]]></dc:creator><pubDate>Sun, 06 Feb 2005 19:44:33 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster Logic on Sun, 06 Feb 2005 21:37:58 GMT]]></title><description><![CDATA[<p>Dann hast du wohl etwas falsch gemacht <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 />
Wenn es beim Umschalten zwischen Max / normal nicht &quot;rumhüpfen&quot; soll, dann musst du natürlich sowohl ptMaxPosition, als auch rcNormalPosition entsprechend aktualisieren (und das auch nicht nur bei (wp.showCmd==SW_SHOWMAXIMIZED), denn du kannst ja das Fenster auch im nicht maximierten Modus verschieben (da musst du dann ptMaxPosition anpassen. Aber einfacher ist es, du lässt das Maximieren dann einfach erst gar nicht zu <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/716259</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/716259</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Sun, 06 Feb 2005 21:37:58 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster Logic on Sun, 06 Feb 2005 22:14:12 GMT]]></title><description><![CDATA[<p>Also ein letzter Versuch. Ich habe jetzt folgendes gemacht. So müßte es &quot;Idiotensicher&quot; sein. Aber es funzt auch hier nicht. Ich seh den Fehler nicht.</p>
<pre><code class="language-cpp">case WM_MOVE:
		cxScreen=LOWORD(lParam);
		cyScreen=HIWORD(lParam);
		GetWindowPlacement(hwnd, &amp;wp);

		wp.ptMaxPosition.x=cxScreen;
		wp.ptMaxPosition.y=cyScreen;
		wp.rcNormalPosition.left=cxScreen;
		wp.rcNormalPosition.top=cyScreen;
		SetWindowPlacement(hwnd,&amp;wp);

		return 0;

	case WM_SIZE:
		 cxs = LOWORD(lParam);
    cys = HIWORD(lParam); 

			SetWindowPos (hwnd, 0,cxScreen, cyScreen, 450 , 430,SW_SHOW ) ;

		ShowWindow(hwnd,SW_SHOW);
		UpdateWindow(hwnd);	

	return 0;
</code></pre>
<p>Danke an flenders <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/716279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/716279</guid><dc:creator><![CDATA[mww]]></dc:creator><pubDate>Sun, 06 Feb 2005 22:14:12 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster Logic on Sun, 06 Feb 2005 22:18:22 GMT]]></title><description><![CDATA[<p>1.) rcNormalPosition hat nicht nur left und top<br />
2.) sind cxScreen und cyScreen static?<br />
3.) Was genau ist jetzt überhaupt dein Ziel <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>
]]></description><link>https://www.c-plusplus.net/forum/post/716285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/716285</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Sun, 06 Feb 2005 22:18:22 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster Logic on Sun, 06 Feb 2005 22:35:57 GMT]]></title><description><![CDATA[<p>zu 2 Habe es mit static int und int probiert.<br />
zu 3 mein Ziel ist,daß wenn ich das Fenster im maximierten Zustand bewege und dann auf den &quot;verkleinern&quot;-Button(Button zwischen Minimieren und Maximieren) gehe, daß es dann auf der momentanen Position verkleinert. Bis jetzt springt es aber auf eine andere Position</p>
<p>Umgekehrt funzt es. Es maximiert auf der gleichen Position</p>
<p>Danke noch mal für den Support<br />
mww</p>
]]></description><link>https://www.c-plusplus.net/forum/post/716301</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/716301</guid><dc:creator><![CDATA[mww]]></dc:creator><pubDate>Sun, 06 Feb 2005 22:35:57 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster Logic on Mon, 07 Feb 2005 15:09:12 GMT]]></title><description><![CDATA[<p>Bei mir funktionier es so - hoffentlich hast du es auch so gemeint:</p>
<pre><code class="language-cpp">LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	static int cxScreen;
	static int cyScreen;

	switch (message)
	{
		case WM_GETMINMAXINFO:
		{
			((LPMINMAXINFO)lParam)-&gt;ptMaxPosition.x = cxScreen;
			((LPMINMAXINFO)lParam)-&gt;ptMaxPosition.y = cyScreen;
			((LPMINMAXINFO)lParam)-&gt;ptMaxTrackSize.x=430;
			((LPMINMAXINFO)lParam)-&gt;ptMaxTrackSize.y=450;

			return 0;
		}
		case WM_MOVE:
		{
			RECT rcWindow;
			GetWindowRect(hwnd,&amp;rcWindow);

			cxScreen = rcWindow.left;
			cyScreen = rcWindow.top;

			WINDOWPLACEMENT wp;
			wp.length = sizeof(WINDOWPLACEMENT);
			GetWindowPlacement(hwnd, &amp;wp);

			if(wp.showCmd==SW_SHOWMAXIMIZED)
			{
				wp.rcNormalPosition.right  = cxScreen + (wp.rcNormalPosition.right-wp.rcNormalPosition.left);
				wp.rcNormalPosition.bottom = cyScreen + (wp.rcNormalPosition.bottom-wp.rcNormalPosition.top);
				wp.rcNormalPosition.left   = cxScreen;
				wp.rcNormalPosition.top    = cyScreen;

				SetWindowPlacement(hwnd,&amp;wp);
			}

			return 0;
		}
		// [...]
	}
	return DefWindowProc (hwnd, message, wParam, lParam);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/716831</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/716831</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Mon, 07 Feb 2005 15:09:12 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster Logic on Mon, 07 Feb 2005 15:30:02 GMT]]></title><description><![CDATA[<p><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="😃"
    /> <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1644">@flenders</a><br />
100% ins Schwarze getroffen. Funktioniert perfekt</p>
<p>Ein riesen Dank<br />
mww<br />
P.S Mir ist nur eins aufgefallen, wenn das Fenster im maximierten Zusatnd minimiert wird, erscheint es beim klick auf die Taskleiste nicht mehr )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/716845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/716845</guid><dc:creator><![CDATA[mww]]></dc:creator><pubDate>Mon, 07 Feb 2005 15:30:02 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster Logic on Mon, 07 Feb 2005 15:56:05 GMT]]></title><description><![CDATA[<p>Damit sollte auch dieser Fehler behoben sein:</p>
<pre><code class="language-cpp">if(!IsIconic(hwnd))
			{
				RECT rcWindow;
				GetWindowRect(hwnd,&amp;rcWindow);
				cxScreen = rcWindow.left;
				cyScreen = rcWindow.top;
			}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/716884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/716884</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Mon, 07 Feb 2005 15:56:05 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster Logic on Mon, 07 Feb 2005 16:15:42 GMT]]></title><description><![CDATA[<p>Fast perfekt <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>Wohin kommt dein Code in WM_SIZE ?</p>
<p>Edit: Hab´s .Alles paletti</p>
]]></description><link>https://www.c-plusplus.net/forum/post/716901</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/716901</guid><dc:creator><![CDATA[mww]]></dc:creator><pubDate>Mon, 07 Feb 2005 16:15:42 GMT</pubDate></item></channel></rss>