<?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[hMainWnd refresht nicht, wieso? &amp;gt;:(]]></title><description><![CDATA[<p>hi leute!</p>
<p>ich habe aus so ein tutorial-beispiel aus dem netz etwas modifiziert.<br />
sinn soll sein, einfach einen text anzuzeigen, und diesen mit KEY_UP und KEY_DOWN zu scrollen. bin noch nicht sehr weit, da ich beim austesten feststelle, dass das fenster sich nie aktualisiert.<br />
wie bekomme ich das fenster dazu, sich z.b. alle 0,2 sekunden zu aktualisieren?</p>
<p>habe einen teststring &quot;toplinestr&quot;, der den wert von &quot;int topline&quot; enthält.<br />
int topline wird jedesmal geändert, wenn der UP key oder der DOWN key gedrückt werden. habe das (mit msgbox) getestet, funktioniert.<br />
aber der text wird nie refreshed <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="😞"
    /><br />
wie bekomme ich es also dazu, sich zu aktualisieren und somit<br />
&quot;case WM_PAINT&quot; in &quot;LRESULT CALLBACK TestWndProc&quot; ausgeführt wird???</p>
<p>vielen dank im voraus.</p>
<p>grüsse,</p>
<p>---loki</p>
<pre><code>#define STRICT
#define WIN32_LEAN_AND_MEAN

#include &lt;stdio.h&gt;
#include &lt;windows.h&gt;
#include &lt;windowsx.h&gt;

int topline;
char toplinestr[255];

// NOTE: 32 lines are shown

// char screenText[] = &quot;hallo&quot;;

int WINAPI WinMain(HINSTANCE	hInstance,		// Instanzhandle der Anwendung
				   HINSTANCE	hPrevInstance,	// Handle des 'Vorgängers'
				   LPSTR		lpstrCmdLine,	// String mit Kommandozeilenparametern
				   int			iCmdShow);		// Anzeigestatus des Hauptfensters

LRESULT CALLBACK TestWndProc(HWND	hWnd,		// Handle des Fensters, für welches die Nachricht
												// bestimmt ist
							 UINT	iMessage,	// Code der Nachricht
							 WPARAM	wParam,		// erster Zusatzparameter der Nachricht
							 LPARAM	lParam);	// zweiter Zusatzparameter der Nachricht

int WINAPI WinMain(HINSTANCE	hInstance,
				   HINSTANCE	hPrevInstance,
				   LPSTR		lpstrCmdLine,
				   int			iCmdShow)
{
	WNDCLASS			WndClass;	// Datenstruktur zur Definition der Fensterklasse
	HWND				hMainWnd;	// Handle des Hauptfensters
	MSG					Message;	// Datenstruktur zur Aufnahme einer Nachricht

	// erster Schritt: Festlegen der Eigenschaften der Klasse des hauptfensters
	WndClass.lpszClassName=&quot;TestWndClass&quot;;						// Name der Fensterklasse
	WndClass.lpfnWndProc=TestWndProc;							// Zeiger auf die Fensterprozedur
	WndClass.hInstance=hInstance;								// Instanzhandle der Anwendung
	WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);				// Standardicon laden
	WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);				// Kreuzförmigen Cursor laden
	WndClass.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);	// Schwarz als Hintergrundfarbe 
	WndClass.cbClsExtra=0;										// keinen Speicher für die Klasse reservieren
	WndClass.cbWndExtra=0;										// keinen Speicher für neue Fenster reservieren
	WndClass.style=CS_OWNDC | CS_HREDRAW | CS_VREDRAW;						// Neuzeichnen bei Änderung der Höhe oder der Breite des Fensters
	WndClass.lpszMenuName=NULL;

	// zweiter Schritt: Fensterklasse des Hauptfensters anmelden
	if(!RegisterClass(&amp;WndClass))
	{
		// FEHLER: Fensterklasse wurde nicht angemeldet
		MessageBox(NULL,&quot;Die Fensterklasse des Hauptfensters wurde nicht angemeldet&quot;,
				   &quot;Fehler&quot;,MB_ICONSTOP|MB_OK);
		return 0;
	}

	// dritter Schritt: Hauptfenster öffnen
	hMainWnd=CreateWindow(&quot;TestWndClass&quot;,
						  &quot;window title&quot;,
						  WS_BORDER,
						  CW_USEDEFAULT,
						  CW_USEDEFAULT,
						  CW_USEDEFAULT,
						  CW_USEDEFAULT,
						  NULL,
						  NULL,
						  hInstance,
						  NULL);

	if(hMainWnd==NULL)
	{
		// FEHLER: Hauptfenster wurde nicht geöffnet
		MessageBox(NULL,&quot;Hauptfenster wurde nicht geöffnet&quot;,
				   &quot;Fehler&quot;,MB_ICONSTOP|MB_OK);
		return 0;
	}

	// Hauptfenster anzeigen und zum ersten Mal aktualisieren
	ShowWindow(hMainWnd,iCmdShow);
//	ShowCursor(0);
	UpdateWindow(hMainWnd);

	// vierter Schritt: Eintritt in die Nachrichtenverarbeitung
	while(GetMessage(&amp;Message,NULL,0,0))
	{
		// Nachricht übersetzen (nur wichtig Nachrichten, welche die Tastatur betreffen)
		TranslateMessage(&amp;Message);

		// Nachricht weiterleiten
		DispatchMessage(&amp;Message);

		TestWndProc(HWND hMainWnd, UINT WM_PAINT, WPARAM 0, LPARAM 0)

	}

	// Ende der Anwendung
	return Message.wParam;
}

// --------------------------------------------------------------------------------------------

LRESULT CALLBACK TestWndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
{
	HDC				hDC;
	PAINTSTRUCT		PaintStruct;
	RECT			Rect;
	UINT			iReturn;

	// alle 'interessanten' Nachrichten abfangen und verarbeiten
	switch(iMessage)
	{
		case WM_CREATE:
			// ein Fenster soll geöffnet werden

			return 0;

		case WM_CLOSE:
			// ein Fenster soll geschlossen werden
			PostQuitMessage(0);

			return 0;

		case WM_DESTROY:
			// Das Hauptfenster wird geschlossen

			// Anwendung beenden
			PostQuitMessage(0);
			return 0;

		case WM_KEYDOWN:

			{

			switch(wParam)
			{

			// Exit app on space or escape keypress
			case VK_ESCAPE:
				{
					PostQuitMessage(0);
					return 0;			
				}
				break;

			case VK_UP:
				{
					topline--;
					wsprintf(toplinestr, &quot;%d&quot;, topline);
//					MessageBox(NULL, toplinestr,   &quot;WM_KEYDOWN info&quot;, MB_ICONINFORMATION|MB_OK);
					break;
				}

			case VK_DOWN:
				{
					topline++;
					wsprintf(toplinestr, &quot;%d&quot;, topline);
//					MessageBox(NULL, toplinestr,   &quot;WM_KEYDOWN info&quot;, MB_ICONINFORMATION|MB_OK);
					break;
				}

			return 0;
			}

		}

		case WM_PAINT:
			// der Fensterinhalt muß neu gezeichnet werden

			// Gerätekontext beschaffen
			hDC=BeginPaint(hWnd,&amp;PaintStruct);

			// Abmessungen des Fensters bestimmen
			GetClientRect(hWnd,&amp;Rect);

			// green text
			SetTextColor(hDC,RGB(3,226,159));

			// schwarzer Hintergrund
			SetBkColor(hDC,RGB(0,0,0));

			// Text zeichnen
			DrawText(hDC, toplinestr,-1,&amp;Rect, 0);

			// Gerätekontext freigeben
			EndPaint(hWnd,&amp;PaintStruct);

			return 0;
	}

	// alle bis jetzt noch nicht verarbeiteten Nachrichten standardmäßig verarbeiten
	return DefWindowProc(hWnd,iMessage,wParam,lParam);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/79672/hmainwnd-refresht-nicht-wieso-gt</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 01:14:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/79672.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 13 Jul 2004 14:44:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to hMainWnd refresht nicht, wieso? &amp;gt;:( on Tue, 13 Jul 2004 14:44:01 GMT]]></title><description><![CDATA[<p>hi leute!</p>
<p>ich habe aus so ein tutorial-beispiel aus dem netz etwas modifiziert.<br />
sinn soll sein, einfach einen text anzuzeigen, und diesen mit KEY_UP und KEY_DOWN zu scrollen. bin noch nicht sehr weit, da ich beim austesten feststelle, dass das fenster sich nie aktualisiert.<br />
wie bekomme ich das fenster dazu, sich z.b. alle 0,2 sekunden zu aktualisieren?</p>
<p>habe einen teststring &quot;toplinestr&quot;, der den wert von &quot;int topline&quot; enthält.<br />
int topline wird jedesmal geändert, wenn der UP key oder der DOWN key gedrückt werden. habe das (mit msgbox) getestet, funktioniert.<br />
aber der text wird nie refreshed <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="😞"
    /><br />
wie bekomme ich es also dazu, sich zu aktualisieren und somit<br />
&quot;case WM_PAINT&quot; in &quot;LRESULT CALLBACK TestWndProc&quot; ausgeführt wird???</p>
<p>vielen dank im voraus.</p>
<p>grüsse,</p>
<p>---loki</p>
<pre><code>#define STRICT
#define WIN32_LEAN_AND_MEAN

#include &lt;stdio.h&gt;
#include &lt;windows.h&gt;
#include &lt;windowsx.h&gt;

int topline;
char toplinestr[255];

// NOTE: 32 lines are shown

// char screenText[] = &quot;hallo&quot;;

int WINAPI WinMain(HINSTANCE	hInstance,		// Instanzhandle der Anwendung
				   HINSTANCE	hPrevInstance,	// Handle des 'Vorgängers'
				   LPSTR		lpstrCmdLine,	// String mit Kommandozeilenparametern
				   int			iCmdShow);		// Anzeigestatus des Hauptfensters

LRESULT CALLBACK TestWndProc(HWND	hWnd,		// Handle des Fensters, für welches die Nachricht
												// bestimmt ist
							 UINT	iMessage,	// Code der Nachricht
							 WPARAM	wParam,		// erster Zusatzparameter der Nachricht
							 LPARAM	lParam);	// zweiter Zusatzparameter der Nachricht

int WINAPI WinMain(HINSTANCE	hInstance,
				   HINSTANCE	hPrevInstance,
				   LPSTR		lpstrCmdLine,
				   int			iCmdShow)
{
	WNDCLASS			WndClass;	// Datenstruktur zur Definition der Fensterklasse
	HWND				hMainWnd;	// Handle des Hauptfensters
	MSG					Message;	// Datenstruktur zur Aufnahme einer Nachricht

	// erster Schritt: Festlegen der Eigenschaften der Klasse des hauptfensters
	WndClass.lpszClassName=&quot;TestWndClass&quot;;						// Name der Fensterklasse
	WndClass.lpfnWndProc=TestWndProc;							// Zeiger auf die Fensterprozedur
	WndClass.hInstance=hInstance;								// Instanzhandle der Anwendung
	WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);				// Standardicon laden
	WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);				// Kreuzförmigen Cursor laden
	WndClass.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);	// Schwarz als Hintergrundfarbe 
	WndClass.cbClsExtra=0;										// keinen Speicher für die Klasse reservieren
	WndClass.cbWndExtra=0;										// keinen Speicher für neue Fenster reservieren
	WndClass.style=CS_OWNDC | CS_HREDRAW | CS_VREDRAW;						// Neuzeichnen bei Änderung der Höhe oder der Breite des Fensters
	WndClass.lpszMenuName=NULL;

	// zweiter Schritt: Fensterklasse des Hauptfensters anmelden
	if(!RegisterClass(&amp;WndClass))
	{
		// FEHLER: Fensterklasse wurde nicht angemeldet
		MessageBox(NULL,&quot;Die Fensterklasse des Hauptfensters wurde nicht angemeldet&quot;,
				   &quot;Fehler&quot;,MB_ICONSTOP|MB_OK);
		return 0;
	}

	// dritter Schritt: Hauptfenster öffnen
	hMainWnd=CreateWindow(&quot;TestWndClass&quot;,
						  &quot;window title&quot;,
						  WS_BORDER,
						  CW_USEDEFAULT,
						  CW_USEDEFAULT,
						  CW_USEDEFAULT,
						  CW_USEDEFAULT,
						  NULL,
						  NULL,
						  hInstance,
						  NULL);

	if(hMainWnd==NULL)
	{
		// FEHLER: Hauptfenster wurde nicht geöffnet
		MessageBox(NULL,&quot;Hauptfenster wurde nicht geöffnet&quot;,
				   &quot;Fehler&quot;,MB_ICONSTOP|MB_OK);
		return 0;
	}

	// Hauptfenster anzeigen und zum ersten Mal aktualisieren
	ShowWindow(hMainWnd,iCmdShow);
//	ShowCursor(0);
	UpdateWindow(hMainWnd);

	// vierter Schritt: Eintritt in die Nachrichtenverarbeitung
	while(GetMessage(&amp;Message,NULL,0,0))
	{
		// Nachricht übersetzen (nur wichtig Nachrichten, welche die Tastatur betreffen)
		TranslateMessage(&amp;Message);

		// Nachricht weiterleiten
		DispatchMessage(&amp;Message);

		TestWndProc(HWND hMainWnd, UINT WM_PAINT, WPARAM 0, LPARAM 0)

	}

	// Ende der Anwendung
	return Message.wParam;
}

// --------------------------------------------------------------------------------------------

LRESULT CALLBACK TestWndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
{
	HDC				hDC;
	PAINTSTRUCT		PaintStruct;
	RECT			Rect;
	UINT			iReturn;

	// alle 'interessanten' Nachrichten abfangen und verarbeiten
	switch(iMessage)
	{
		case WM_CREATE:
			// ein Fenster soll geöffnet werden

			return 0;

		case WM_CLOSE:
			// ein Fenster soll geschlossen werden
			PostQuitMessage(0);

			return 0;

		case WM_DESTROY:
			// Das Hauptfenster wird geschlossen

			// Anwendung beenden
			PostQuitMessage(0);
			return 0;

		case WM_KEYDOWN:

			{

			switch(wParam)
			{

			// Exit app on space or escape keypress
			case VK_ESCAPE:
				{
					PostQuitMessage(0);
					return 0;			
				}
				break;

			case VK_UP:
				{
					topline--;
					wsprintf(toplinestr, &quot;%d&quot;, topline);
//					MessageBox(NULL, toplinestr,   &quot;WM_KEYDOWN info&quot;, MB_ICONINFORMATION|MB_OK);
					break;
				}

			case VK_DOWN:
				{
					topline++;
					wsprintf(toplinestr, &quot;%d&quot;, topline);
//					MessageBox(NULL, toplinestr,   &quot;WM_KEYDOWN info&quot;, MB_ICONINFORMATION|MB_OK);
					break;
				}

			return 0;
			}

		}

		case WM_PAINT:
			// der Fensterinhalt muß neu gezeichnet werden

			// Gerätekontext beschaffen
			hDC=BeginPaint(hWnd,&amp;PaintStruct);

			// Abmessungen des Fensters bestimmen
			GetClientRect(hWnd,&amp;Rect);

			// green text
			SetTextColor(hDC,RGB(3,226,159));

			// schwarzer Hintergrund
			SetBkColor(hDC,RGB(0,0,0));

			// Text zeichnen
			DrawText(hDC, toplinestr,-1,&amp;Rect, 0);

			// Gerätekontext freigeben
			EndPaint(hWnd,&amp;PaintStruct);

			return 0;
	}

	// alle bis jetzt noch nicht verarbeiteten Nachrichten standardmäßig verarbeiten
	return DefWindowProc(hWnd,iMessage,wParam,lParam);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/559735</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/559735</guid><dc:creator><![CDATA[loki1985]]></dc:creator><pubDate>Tue, 13 Jul 2004 14:44:01 GMT</pubDate></item><item><title><![CDATA[Reply to hMainWnd refresht nicht, wieso? &amp;gt;:( on Tue, 13 Jul 2004 14:46:14 GMT]]></title><description><![CDATA[<p>sh*t, falsches forum. wollte eigentlich nach WinAPI. sorry <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/559737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/559737</guid><dc:creator><![CDATA[loki1985]]></dc:creator><pubDate>Tue, 13 Jul 2004 14:46:14 GMT</pubDate></item><item><title><![CDATA[Reply to hMainWnd refresht nicht, wieso? &amp;gt;:( on Tue, 13 Jul 2004 15:25:48 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile.php?mode=viewprofile&amp;u=547" rel="nofollow">Shade Of Mine</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=10" rel="nofollow">ANSI C</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=4" rel="nofollow">WinAPI</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39405" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/559765</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/559765</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Tue, 13 Jul 2004 15:25:48 GMT</pubDate></item><item><title><![CDATA[Reply to hMainWnd refresht nicht, wieso? &amp;gt;:( on Tue, 13 Jul 2004 15:26:44 GMT]]></title><description><![CDATA[<p>danke <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/559767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/559767</guid><dc:creator><![CDATA[loki1985]]></dc:creator><pubDate>Tue, 13 Jul 2004 15:26:44 GMT</pubDate></item><item><title><![CDATA[Reply to hMainWnd refresht nicht, wieso? &amp;gt;:( on Tue, 13 Jul 2004 15:31:32 GMT]]></title><description><![CDATA[<p>Mit <a href="http://msdn.microsoft.com/library/en-us/gdi/pantdraw_7ano.asp" rel="nofollow">InvalidateRect</a> geht das...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/559770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/559770</guid><dc:creator><![CDATA[Hepi]]></dc:creator><pubDate>Tue, 13 Jul 2004 15:31:32 GMT</pubDate></item><item><title><![CDATA[Reply to hMainWnd refresht nicht, wieso? &amp;gt;:( on Tue, 13 Jul 2004 15:56:17 GMT]]></title><description><![CDATA[<p>danke, werd ich mir mal anschauen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/559787</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/559787</guid><dc:creator><![CDATA[loki1985]]></dc:creator><pubDate>Tue, 13 Jul 2004 15:56:17 GMT</pubDate></item><item><title><![CDATA[Reply to hMainWnd refresht nicht, wieso? &amp;gt;:( on Wed, 14 Jul 2004 16:02:00 GMT]]></title><description><![CDATA[<p>thanx, hat damit perfekt geklappt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/560653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/560653</guid><dc:creator><![CDATA[loki1985]]></dc:creator><pubDate>Wed, 14 Jul 2004 16:02:00 GMT</pubDate></item></channel></rss>