<?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[Skallierende Edit mit Skrollbalken]]></title><description><![CDATA[<p>Moin, nochmal.<br />
Also, ich habe hier ein Hauptfenster mit einer<br />
Edit in der client area. Das mit dem Autoscroll<br />
(vertikal und horizontal) habe ich soweit schon<br />
selbst herausgefunden.</p>
<p>Nun will ich aber eine vertikale und eine horizontale Scrollbar in<br />
mein Edit Control reinbringen. Außerdem soll sich das Edit Control<br />
der Breite und Höhe des Fensters anpassen.</p>
<p>Wird das Fenster gestreckt, wird es auch das Edit Control.<br />
Windows erstellt ja soweit eine Nachricht zum Abholen mit GetMessage(),<br />
wenn das Fenster gesreckt wird. Dann lässt sich bestimt irgendwie<br />
die Breite des Fensters ermitteln und dieser Wert dem Edit<br />
Control als seinen Breitenwert setzen.</p>
<p>Ich weiß leider aber nur, wie man mit CreateWindowEx ein Control<br />
setzt mit Angaben, wie es sein soll. Aber nicht, wie man seine<br />
&quot;Eigenschaften&quot; nachträglich ändern kann, womit so eine<br />
Skallierung möglich wäre.</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;

LPCSTR MainClassName = &quot;Texteditor&quot;;

// Zum Empfangen und Auswerten der messages
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
	// Generelle Fensterstruktur registrieren
	WNDCLASSEX wc;
	wc.cbSize = sizeof(WNDCLASSEX);
	wc.style = 0;
	wc.lpfnWndProc = WndProc;
	wc.cbClsExtra = 0;
	wc.cbWndExtra = 0;
	wc.hInstance = hInstance;
	wc.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(0));
	wc.hCursor = LoadCursor(NULL, IDC_ARROW);
	wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
	wc.lpszMenuName = MAKEINTRESOURCE(1);
	wc.lpszClassName = MainClassName;
	wc.hIconSm = (HICON)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(0), IMAGE_ICON, 16, 16, 0);

	if(!RegisterClassEx(&amp;wc))
	{
		MessageBox(NULL, &quot;Konnte das Hauptfenster nicht registrieren!&quot;, &quot;Fehler!&quot;, MB_ICONEXCLAMATION | MB_OK);
		return 0;
	}

	// Fenster erstellen
	HWND hWnd = CreateWindowEx(
		WS_EX_CLIENTEDGE,
		MainClassName,
		&quot;Texteditor&quot;,
		WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, CW_USEDEFAULT, 400, 300,
		NULL,
		NULL,
		hInstance,
		NULL
	);

	// Textbox ins Fenster setzen
	HWND hCheck1 = CreateWindowEx(
		NULL,
		&quot;EDIT&quot;,
		&quot;Gib was ein&quot;,
		WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL,
		0, 0, 400, 300,
		hWnd,
		NULL,
		NULL,
		NULL
	);

	// Fenster anzeigen
	ShowWindow(hWnd, iCmdShow);

	// Auf Messages reagieren
	MSG wmsg;
	while( GetMessage(&amp;wmsg, NULL, 0, 0) )
	{
		switch (wmsg.message)
		{
			case WM_RBUTTONDOWN:
				MessageBox(NULL, &quot;Da ist nichts, was sich durch Rechtsklick öffnet!&quot;, &quot;Entschuldige, aber...&quot;, MB_OK);
			break;
			default:
				TranslateMessage(&amp;wmsg);
				DispatchMessage(&amp;wmsg);
		}
	}

	return wmsg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
	char string[255];

	switch (iMsg)
	{
		case WM_CLOSE:
			DestroyWindow(hWnd);
		break;
		case WM_DESTROY:
			PostQuitMessage(0);
			return 0;
		case WM_COMMAND:
			switch(LOWORD(wParam))
			{
				case 11:
					LoadString(GetModuleHandle(NULL), 21, string, sizeof(string));
					MessageBox(hWnd, string, &quot;Öffnen&quot;, MB_ICONINFORMATION);
				break;
				case 12:
					LoadString(GetModuleHandle(NULL), 22, string, sizeof(string));
					MessageBox(hWnd, string, &quot;Speichern&quot;, MB_ICONINFORMATION);
				break;
				case 13:
					DestroyWindow(hWnd);
				break;
			}
		break;
	}

	// An Windows weitergeben und dessen Antwort als Rückgabewert zurück
	return DefWindowProc(hWnd, iMsg, wParam, lParam);
}
</code></pre>
<p>Jetzt frage ich euch, wie das geht.<br />
Danke dann.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/197765/skallierende-edit-mit-skrollbalken</link><generator>RSS for Node</generator><lastBuildDate>Fri, 01 May 2026 13:54:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/197765.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 14 Nov 2007 15:36:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Skallierende Edit mit Skrollbalken on Thu, 19 Feb 2009 09:54:55 GMT]]></title><description><![CDATA[<p>Moin, nochmal.<br />
Also, ich habe hier ein Hauptfenster mit einer<br />
Edit in der client area. Das mit dem Autoscroll<br />
(vertikal und horizontal) habe ich soweit schon<br />
selbst herausgefunden.</p>
<p>Nun will ich aber eine vertikale und eine horizontale Scrollbar in<br />
mein Edit Control reinbringen. Außerdem soll sich das Edit Control<br />
der Breite und Höhe des Fensters anpassen.</p>
<p>Wird das Fenster gestreckt, wird es auch das Edit Control.<br />
Windows erstellt ja soweit eine Nachricht zum Abholen mit GetMessage(),<br />
wenn das Fenster gesreckt wird. Dann lässt sich bestimt irgendwie<br />
die Breite des Fensters ermitteln und dieser Wert dem Edit<br />
Control als seinen Breitenwert setzen.</p>
<p>Ich weiß leider aber nur, wie man mit CreateWindowEx ein Control<br />
setzt mit Angaben, wie es sein soll. Aber nicht, wie man seine<br />
&quot;Eigenschaften&quot; nachträglich ändern kann, womit so eine<br />
Skallierung möglich wäre.</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;

LPCSTR MainClassName = &quot;Texteditor&quot;;

// Zum Empfangen und Auswerten der messages
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
	// Generelle Fensterstruktur registrieren
	WNDCLASSEX wc;
	wc.cbSize = sizeof(WNDCLASSEX);
	wc.style = 0;
	wc.lpfnWndProc = WndProc;
	wc.cbClsExtra = 0;
	wc.cbWndExtra = 0;
	wc.hInstance = hInstance;
	wc.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(0));
	wc.hCursor = LoadCursor(NULL, IDC_ARROW);
	wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
	wc.lpszMenuName = MAKEINTRESOURCE(1);
	wc.lpszClassName = MainClassName;
	wc.hIconSm = (HICON)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(0), IMAGE_ICON, 16, 16, 0);

	if(!RegisterClassEx(&amp;wc))
	{
		MessageBox(NULL, &quot;Konnte das Hauptfenster nicht registrieren!&quot;, &quot;Fehler!&quot;, MB_ICONEXCLAMATION | MB_OK);
		return 0;
	}

	// Fenster erstellen
	HWND hWnd = CreateWindowEx(
		WS_EX_CLIENTEDGE,
		MainClassName,
		&quot;Texteditor&quot;,
		WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, CW_USEDEFAULT, 400, 300,
		NULL,
		NULL,
		hInstance,
		NULL
	);

	// Textbox ins Fenster setzen
	HWND hCheck1 = CreateWindowEx(
		NULL,
		&quot;EDIT&quot;,
		&quot;Gib was ein&quot;,
		WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL,
		0, 0, 400, 300,
		hWnd,
		NULL,
		NULL,
		NULL
	);

	// Fenster anzeigen
	ShowWindow(hWnd, iCmdShow);

	// Auf Messages reagieren
	MSG wmsg;
	while( GetMessage(&amp;wmsg, NULL, 0, 0) )
	{
		switch (wmsg.message)
		{
			case WM_RBUTTONDOWN:
				MessageBox(NULL, &quot;Da ist nichts, was sich durch Rechtsklick öffnet!&quot;, &quot;Entschuldige, aber...&quot;, MB_OK);
			break;
			default:
				TranslateMessage(&amp;wmsg);
				DispatchMessage(&amp;wmsg);
		}
	}

	return wmsg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
	char string[255];

	switch (iMsg)
	{
		case WM_CLOSE:
			DestroyWindow(hWnd);
		break;
		case WM_DESTROY:
			PostQuitMessage(0);
			return 0;
		case WM_COMMAND:
			switch(LOWORD(wParam))
			{
				case 11:
					LoadString(GetModuleHandle(NULL), 21, string, sizeof(string));
					MessageBox(hWnd, string, &quot;Öffnen&quot;, MB_ICONINFORMATION);
				break;
				case 12:
					LoadString(GetModuleHandle(NULL), 22, string, sizeof(string));
					MessageBox(hWnd, string, &quot;Speichern&quot;, MB_ICONINFORMATION);
				break;
				case 13:
					DestroyWindow(hWnd);
				break;
			}
		break;
	}

	// An Windows weitergeben und dessen Antwort als Rückgabewert zurück
	return DefWindowProc(hWnd, iMsg, wParam, lParam);
}
</code></pre>
<p>Jetzt frage ich euch, wie das geht.<br />
Danke dann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1403177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403177</guid><dc:creator><![CDATA[sjBlack]]></dc:creator><pubDate>Thu, 19 Feb 2009 09:54:55 GMT</pubDate></item><item><title><![CDATA[Reply to Skallierende Edit mit Skrollbalken on Wed, 14 Nov 2007 19:00:45 GMT]]></title><description><![CDATA[<p>ganz einfach<br />
du faengst die nachricht &quot;WM_SIZE&quot; und in dieser hast du dann die neuen groessen X und Y als parameter, dann brauchst du nur dein edit nehmen unt mit MoveWindow neu skalieren<br />
feddich is<br />
fuer dauerhafte scroll elemente musste halt ma die edit styles durch schaun<br />
(parameter nachtraeglich aendern geht mit SetWindowLong wenn ich mich nicht irre)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1403305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403305</guid><dc:creator><![CDATA[EXDW]]></dc:creator><pubDate>Wed, 14 Nov 2007 19:00:45 GMT</pubDate></item><item><title><![CDATA[Reply to Skallierende Edit mit Skrollbalken on Wed, 14 Nov 2007 20:55:00 GMT]]></title><description><![CDATA[<p>thx. Nur gibt es keine style flags für scrollbars für das EDIT control,<br />
so wie ich bereits in der msdn rumrecharchiert habe.</p>
<p>// Edit #1000</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;

LPCSTR MainClassName = &quot;Texteditor&quot;;

// Zum Empfangen und Auswerten der messages
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
	// Generelle Fensterstruktur registrieren
	WNDCLASSEX wc;
	wc.cbSize = sizeof(WNDCLASSEX);
	wc.style = 0;
	wc.lpfnWndProc = WndProc;
	wc.cbClsExtra = 0;
	wc.cbWndExtra = 0;
	wc.hInstance = hInstance;
	wc.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(0));
	wc.hCursor = LoadCursor(NULL, IDC_ARROW);
	wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
	wc.lpszMenuName = MAKEINTRESOURCE(1);
	wc.lpszClassName = MainClassName;
	wc.hIconSm = (HICON)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(0), IMAGE_ICON, 16, 16, 0);

	if(!RegisterClassEx(&amp;wc))
	{
		MessageBox(NULL, &quot;Konnte das Hauptfenster nicht registrieren!&quot;, &quot;Fehler!&quot;, MB_ICONEXCLAMATION | MB_OK);
		return 0;
	}

	// Fenster erstellen
	HWND hWnd = CreateWindowEx(
		WS_EX_CLIENTEDGE,
		MainClassName,
		&quot;Texteditor&quot;,
		WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, CW_USEDEFAULT, 400, 300,
		NULL,
		NULL,
		hInstance,
		NULL
	);

	// Textbox ins Fenster setzen
	HWND hwndEdit = CreateWindowEx(
		NULL,
		&quot;EDIT&quot;,
		&quot;Gib was ein&quot;,
		WS_CHILD | WS_BORDER | WS_VISIBLE | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL,
		0, 0, 400, 300,
		hWnd,
		NULL,
		NULL,
		NULL
	);

	// Fenster anzeigen
	ShowWindow(hWnd, iCmdShow);

	// Auf Messages reagieren
	MSG wmsg;
	while( GetMessage(&amp;wmsg, NULL, 0, 0) )
	{
		switch (wmsg.message)
		{
			/* Vergleichbar: Private Sub Form_Resize */
			case WM_SIZE:
				// EDIT Control skallieren
				SetWindowPos(      
					hwndEdit, hWnd,
					0, 0, wmsg.wParam, wmsg.lParam,
					NULL
				);
			break;
			default:
				TranslateMessage(&amp;wmsg);
				DispatchMessage(&amp;wmsg);
		}
	}

	return wmsg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
	char string[255];

	switch (iMsg)
	{
		case WM_CLOSE:
			DestroyWindow(hWnd);
		break;
		case WM_DESTROY:
			PostQuitMessage(0);
			return 0;
		case WM_COMMAND:
			switch(LOWORD(wParam))
			{
				case 11:
					LoadString(GetModuleHandle(NULL), 21, string, sizeof(string));
					MessageBox(hWnd, string, &quot;Öffnen&quot;, MB_ICONINFORMATION);
				break;
				case 12:
					LoadString(GetModuleHandle(NULL), 22, string, sizeof(string));
					MessageBox(hWnd, string, &quot;Speichern&quot;, MB_ICONINFORMATION);
				break;
				case 13:
					DestroyWindow(hWnd);
				break;
			}
		break;
	}

	// An Windows weitergeben und dessen Antwort als Rückgabewert zurück
	return DefWindowProc(hWnd, iMsg, wParam, lParam);
}
</code></pre>
<p>Üüüberhaupt keine Skallierung <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1403343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403343</guid><dc:creator><![CDATA[sjBlack]]></dc:creator><pubDate>Wed, 14 Nov 2007 20:55:00 GMT</pubDate></item><item><title><![CDATA[Reply to Skallierende Edit mit Skrollbalken on Thu, 15 Nov 2007 10:09:26 GMT]]></title><description><![CDATA[<p>Sicher gibt es diese. Lass die ES_AUTO... Flags weg, und setze bei Bedarf WS_HSCROLL und WS_VSCROLL!</p>
<p>Ansonsten heißt Skalieren, dass Du WM_SIZE als nachtricht behandelts und das Fenster anpasst. Das wurde Dir aber schon gesagt!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1403505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403505</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 15 Nov 2007 10:09:26 GMT</pubDate></item><item><title><![CDATA[Reply to Skallierende Edit mit Skrollbalken on Thu, 15 Nov 2007 12:37:23 GMT]]></title><description><![CDATA[<p>Martin Richter schrieb:</p>
<blockquote>
<p>Ansonsten heißt Skalieren, dass Du WM_SIZE als nachtricht behandelts und das Fenster anpasst. Das wurde Dir aber schon gesagt!</p>
</blockquote>
<p>Das hab ich doch gemacht. Das EDIT Control wächst nicht mit.</p>
<pre><code class="language-cpp">0, 0, wmsg.wParam, wmsg.lParam,
</code></pre>
<p>Die neue Breite und Höhe ist ja scheinbar nicht wParam und lParam.<br />
Und innerhalb der Fensterprozedur ist das handle zum EDIT Control<br />
ja nicht mehr sichtbar.</p>
<p>Überhaupt tritt diese Case nicht ein!<br />
Wie fresse ich mich in der Fensterprozedur dann zum control durch?</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;

LPCSTR MainClassName = &quot;Texteditor&quot;;

// Zum Empfangen und Auswerten der messages
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
	// Generelle Fensterstruktur registrieren
	WNDCLASSEX wc;
	wc.cbSize = sizeof(WNDCLASSEX);
	wc.style = 0;
	wc.lpfnWndProc = WndProc;
	wc.cbClsExtra = 0;
	wc.cbWndExtra = 0;
	wc.hInstance = hInstance;
	wc.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(0));
	wc.hCursor = LoadCursor(NULL, IDC_ARROW);
	wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
	wc.lpszMenuName = MAKEINTRESOURCE(1);
	wc.lpszClassName = MainClassName;
	wc.hIconSm = (HICON)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(0), IMAGE_ICON, 16, 16, 0);

	if(!RegisterClassEx(&amp;wc))
	{
		MessageBox(NULL, &quot;Konnte das Hauptfenster nicht registrieren!&quot;, &quot;Fehler!&quot;, MB_ICONEXCLAMATION | MB_OK);
		return 0;
	}

	// Fenster erstellen
	HWND hWnd = CreateWindowEx(
		WS_EX_CLIENTEDGE,
		MainClassName,
		&quot;Texteditor&quot;,
		WS_OVERLAPPEDWINDOW | WS_VSCROLL | WS_HSCROLL,
		CW_USEDEFAULT, CW_USEDEFAULT, 400, 300,
		NULL,
		NULL,
		hInstance,
		NULL
	);

	// Textbox ins Fenster setzen
	HWND hwndEdit = CreateWindowEx(
		NULL,
		&quot;EDIT&quot;,
		&quot;Gib was ein&quot;,
		WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL,
		3, 3, 400, 300,
		hWnd,
		NULL,
		NULL,
		NULL
	);

	// Fenster anzeigen
	ShowWindow(hWnd, iCmdShow);

	// Auf Messages reagieren
	MSG wmsg;
	while( GetMessage(&amp;wmsg, NULL, 0, 0) )
	{
		TranslateMessage(&amp;wmsg);
		DispatchMessage(&amp;wmsg);
	}

	return wmsg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
	char string[255];

	switch (iMsg)
	{
		case WM_SIZE:
			MessageBox(NULL, &quot;soweit drin&quot;, &quot;hallo&quot;, MB_OK);

			// EDIT Control skallieren
			// WIE?
		break;
		case WM_CLOSE:
			DestroyWindow(hWnd);
		break;
		case WM_DESTROY:
			PostQuitMessage(0);
			return 0;
		case WM_COMMAND:
			switch(LOWORD(wParam))
			{
				case 11:
					LoadString(GetModuleHandle(NULL), 21, string, sizeof(string));
					MessageBox(hWnd, string, &quot;Öffnen&quot;, MB_ICONINFORMATION);
				break;
				case 12:
					LoadString(GetModuleHandle(NULL), 22, string, sizeof(string));
					MessageBox(hWnd, string, &quot;Speichern&quot;, MB_ICONINFORMATION);
				break;
				case 13:
					DestroyWindow(hWnd);
				break;
			}
		break;
	}

	// An Windows weitergeben und dessen Antwort als Rückgabewert zurück
	return DefWindowProc(hWnd, iMsg, wParam, lParam);
}
</code></pre>
<p>Ersetze ich Zeieln 79 bis 82 mit</p>
<pre><code class="language-cpp">HWND hEdit = GetWindow(hWnd, GW_OWNER);

			SetWindowPos(      
				hEdit, hWnd,
				0, 0, wParan, wParam,
				NULL
			);
</code></pre>
<p>krieg ich den compile error</p>
<pre><code>55 C:\Dokumente und Einstellungen\sjBlack\Desktop\filebrowser\main.cpp [Warning] passing NULL used for non-pointer converting 1 of `HWND__* CreateWindowExA(DWORD, const CHAR*, const CHAR*, DWORD, int, int, int, int, HWND__*, HMENU__*, HINSTANCE__*, void*)'
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1403596</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403596</guid><dc:creator><![CDATA[sjBlack]]></dc:creator><pubDate>Thu, 15 Nov 2007 12:37:23 GMT</pubDate></item><item><title><![CDATA[Reply to Skallierende Edit mit Skrollbalken on Thu, 15 Nov 2007 12:32:57 GMT]]></title><description><![CDATA[<p>Und wo passt Du die Größe des Edit Controls an. Oder wo rufst Du MoveWndow oder SetWindowPos auf?<br />
Breite und Höhe werden in den WM_SIZE wParam/lParam Werten mit gegeben. Du kannst auch GetCLientrect aufrufen um die Koordinaten zu bekoommen.</p>
<p>Diese Nachricht kommt! Garantiert und immer!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1403601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403601</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 15 Nov 2007 12:32:57 GMT</pubDate></item><item><title><![CDATA[Reply to Skallierende Edit mit Skrollbalken on Thu, 15 Nov 2007 12:55:22 GMT]]></title><description><![CDATA[<p>Habe meinen vorigen post erweitert.<br />
Ich bekomme einen compile error am Arsch des sources,<br />
wenn ich code unter case WM_SIZE setze.</p>
<p>Mit GetWindow versuche ich, ein handle zum EDIT Control<br />
innerhalb des Hauptfensters zu bekommen.</p>
<p>Also hier der ganze neue code</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;

LPCSTR MainClassName = &quot;Texteditor&quot;;

// Zum Empfangen und Auswerten der messages
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
	// Generelle Fensterstruktur registrieren
	WNDCLASSEX wc;
	wc.cbSize = sizeof(WNDCLASSEX);
	wc.style = 0;
	wc.lpfnWndProc = WndProc;
	wc.cbClsExtra = 0;
	wc.cbWndExtra = 0;
	wc.hInstance = hInstance;
	wc.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(0));
	wc.hCursor = LoadCursor(NULL, IDC_ARROW);
	wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
	wc.lpszMenuName = MAKEINTRESOURCE(1);
	wc.lpszClassName = MainClassName;
	wc.hIconSm = (HICON)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(0), IMAGE_ICON, 16, 16, 0);

	if(!RegisterClassEx(&amp;wc))
	{
		MessageBox(NULL, &quot;Konnte das Hauptfenster nicht registrieren!&quot;, &quot;Fehler!&quot;, MB_ICONEXCLAMATION | MB_OK);
		return 0;
	}

	// Fenster erstellen
	HWND hWnd = CreateWindowEx(
		WS_EX_CLIENTEDGE,
		MainClassName,
		&quot;Texteditor&quot;,
		WS_OVERLAPPEDWINDOW | WS_VSCROLL | WS_HSCROLL,
		CW_USEDEFAULT, CW_USEDEFAULT, 400, 300,
		NULL,
		NULL,
		hInstance,
		NULL
	);

	// Textbox ins Fenster setzen
	HWND hwndEdit = CreateWindowEx(
		NULL,
		&quot;EDIT&quot;,
		&quot;Gib was ein&quot;,
		WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL,
		3, 3, 400, 300,
		hWnd,
		NULL,
		NULL,
		NULL
	);

	// Fenster anzeigen
	ShowWindow(hWnd, iCmdShow);

	// Auf Messages reagieren
	MSG wmsg;
	while( GetMessage(&amp;wmsg, NULL, 0, 0) )
	{
		TranslateMessage(&amp;wmsg);
		DispatchMessage(&amp;wmsg);
	}

	return wmsg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
	char string[255];

	switch (iMsg)
	{
		case WM_SIZE:
			HWND hEdit = GetWindow(hWnd, GW_CHILD);

			SetWindowPos(      
				hEdit, hWnd,
				0, 0, wParam, wParam,
				NULL
			); 
		break;
		case WM_CLOSE:
			DestroyWindow(hWnd);
		break;
		case WM_DESTROY:
			PostQuitMessage(0);
			return 0;
		case WM_COMMAND:
			switch(LOWORD(wParam))
			{
				case 11:
					LoadString(GetModuleHandle(NULL), 21, string, sizeof(string));
					MessageBox(hWnd, string, &quot;Öffnen&quot;, MB_ICONINFORMATION);
				break;
				case 12:
					LoadString(GetModuleHandle(NULL), 22, string, sizeof(string));
					MessageBox(hWnd, string, &quot;Speichern&quot;, MB_ICONINFORMATION);
				break;
				case 13:
					DestroyWindow(hWnd);
				break;
			}
		break;
	}

	// An Windows weitergeben und dessen Antwort als Rückgabewert zurück
	return DefWindowProc(hWnd, iMsg, wParam, lParam);
}
</code></pre>
<p>Ohne den code unter case WS_SIZE compiliert es ohne Fehlermeldungen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1403611</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403611</guid><dc:creator><![CDATA[sjBlack]]></dc:creator><pubDate>Thu, 15 Nov 2007 12:55:22 GMT</pubDate></item></channel></rss>