<?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[Nachrichten in Thread abfangen]]></title><description><![CDATA[<p>Ich würde die Nachrichten gerne mit Hilfe eines Threads abfangen. Ich habe das auch einmal ausprobiert, doch es stockt.</p>
<p>Wieso funktioniert das mit dem Thread nicht?</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;stdio.h&gt;

DWORD WINAPI MessageThread(LPVOID);
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

MSG mMsg;
HWND hHandle;
WNDCLASS wWndclass;

void main(void)
{
	wWndclass.style         = CS_HREDRAW|CS_VREDRAW;
	wWndclass.lpfnWndPro    = WndProc;
	wWndclass.cbClsExtra    = 0;
	wWndclass.cbWndExtra    = 0;
	wWndclass.hInstance     = 0;
	wWndclass.hCursor       = LoadCursor(NULL,IDC_ARROW);
	wWndclass.hIcon         = LoadIcon(NULL,IDI_APPLICATION);
	wWndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
	wWndclass.lpszClassName = TEXT(&quot;Fensterklasse&quot;);
	wWndclass.lpszMenuName  = NULL;
	RegisterClass(&amp;wWndclass);

	hHandle=CreateWindow(TEXT(&quot;Fensterklasse&quot;),
				         TEXT(&quot;Fenstertitel&quot;),
				         WS_OVERLAPPEDWINDOW,
				         0,
				         0,
				         200,
				         200,
				         NULL,
				         NULL,
				         0,
				         0
                         );

	ShowWindow(hHandle,SW_SHOW);
	UpdateWindow(hHandle);

	CreateThread(NULL,0,MessageThread,(LPVOID)0,0,NULL);

	printf(&quot;Druecken Sie die Enter-Taste um das Programm zu beenden!&quot;);
	getchar();
}

DWORD WINAPI MessageThread(LPVOID data)
{
	while(GetMessage(&amp;mMsg,NULL,0,0))
	{
		Sleep(25);
		TranslateMessage(&amp;mMsg);
		DispatchMessage(&amp;mMsg);
	}

	return (0);
}

LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
	switch(message)
	{
		case WM_DESTROY:
		{
			PostQuitMessage(0);
			return 0;
		}
	}

	return DefWindowProc(hWnd,message,wParam,lParam);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/202043/nachrichten-in-thread-abfangen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Apr 2026 22:36:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/202043.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 07 Jan 2008 00:27:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Nachrichten in Thread abfangen on Mon, 07 Jan 2008 00:27:49 GMT]]></title><description><![CDATA[<p>Ich würde die Nachrichten gerne mit Hilfe eines Threads abfangen. Ich habe das auch einmal ausprobiert, doch es stockt.</p>
<p>Wieso funktioniert das mit dem Thread nicht?</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;stdio.h&gt;

DWORD WINAPI MessageThread(LPVOID);
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

MSG mMsg;
HWND hHandle;
WNDCLASS wWndclass;

void main(void)
{
	wWndclass.style         = CS_HREDRAW|CS_VREDRAW;
	wWndclass.lpfnWndPro    = WndProc;
	wWndclass.cbClsExtra    = 0;
	wWndclass.cbWndExtra    = 0;
	wWndclass.hInstance     = 0;
	wWndclass.hCursor       = LoadCursor(NULL,IDC_ARROW);
	wWndclass.hIcon         = LoadIcon(NULL,IDI_APPLICATION);
	wWndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
	wWndclass.lpszClassName = TEXT(&quot;Fensterklasse&quot;);
	wWndclass.lpszMenuName  = NULL;
	RegisterClass(&amp;wWndclass);

	hHandle=CreateWindow(TEXT(&quot;Fensterklasse&quot;),
				         TEXT(&quot;Fenstertitel&quot;),
				         WS_OVERLAPPEDWINDOW,
				         0,
				         0,
				         200,
				         200,
				         NULL,
				         NULL,
				         0,
				         0
                         );

	ShowWindow(hHandle,SW_SHOW);
	UpdateWindow(hHandle);

	CreateThread(NULL,0,MessageThread,(LPVOID)0,0,NULL);

	printf(&quot;Druecken Sie die Enter-Taste um das Programm zu beenden!&quot;);
	getchar();
}

DWORD WINAPI MessageThread(LPVOID data)
{
	while(GetMessage(&amp;mMsg,NULL,0,0))
	{
		Sleep(25);
		TranslateMessage(&amp;mMsg);
		DispatchMessage(&amp;mMsg);
	}

	return (0);
}

LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
	switch(message)
	{
		case WM_DESTROY:
		{
			PostQuitMessage(0);
			return 0;
		}
	}

	return DefWindowProc(hWnd,message,wParam,lParam);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1432172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1432172</guid><dc:creator><![CDATA[Wiudä-Siech]]></dc:creator><pubDate>Mon, 07 Jan 2008 00:27:49 GMT</pubDate></item><item><title><![CDATA[Reply to Nachrichten in Thread abfangen on Mon, 07 Jan 2008 01:09:01 GMT]]></title><description><![CDATA[<p>In der Zeile muss natürlich noch ein 'c' hin, das ist aber nicht das Problem, leider.</p>
<p>wWndclass.lpfnWndPro<strong>c</strong> = WndProc;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1432174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1432174</guid><dc:creator><![CDATA[Wiudä-Siech]]></dc:creator><pubDate>Mon, 07 Jan 2008 01:09:01 GMT</pubDate></item><item><title><![CDATA[Reply to Nachrichten in Thread abfangen on Mon, 07 Jan 2008 06:20:58 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">CreateThread(NULL,0,MessageThread,(LPVOID)0,0,NULL);
</code></pre>
<p>Startet den Thread ohne Parameter....</p>
<pre><code class="language-cpp">DWORD WINAPI MessageThread(LPVOID data)
</code></pre>
<p>Erwartet ein Parameter</p>
<p>C++ sollte man können wenn man es verwendet -.-</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1432192</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1432192</guid><dc:creator><![CDATA[Zuhälter]]></dc:creator><pubDate>Mon, 07 Jan 2008 06:20:58 GMT</pubDate></item><item><title><![CDATA[Reply to Nachrichten in Thread abfangen on Mon, 07 Jan 2008 11:56:49 GMT]]></title><description><![CDATA[<p>Ich arbeite im Thread aber auch nicht mit diesem Parameter, also ist es doch gleichgültig wenn er irgend einen Wert hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1432318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1432318</guid><dc:creator><![CDATA[Wiudä-Siech]]></dc:creator><pubDate>Mon, 07 Jan 2008 11:56:49 GMT</pubDate></item><item><title><![CDATA[Reply to Nachrichten in Thread abfangen on Mon, 07 Jan 2008 12:19:40 GMT]]></title><description><![CDATA[<p>Der Thread ansich funktioniert ja auch.</p>
<p>Das Problem ist das diese Schlaufe in dem Thread irgendwie nicht funktioniert:</p>
<pre><code class="language-cpp">while(GetMessage(&amp;mMsg,NULL,0,0))
{
     Sleep(25);
     TranslateMessage(&amp;mMsg);
     DispatchMessage(&amp;mMsg);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1432340</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1432340</guid><dc:creator><![CDATA[Wiudä-Siech]]></dc:creator><pubDate>Mon, 07 Jan 2008 12:19:40 GMT</pubDate></item><item><title><![CDATA[Reply to Nachrichten in Thread abfangen on Mon, 07 Jan 2008 12:35:32 GMT]]></title><description><![CDATA[<p>Mit Parameter funktioniert's genauso wenig:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt; 
#include &lt;stdio.h&gt; 

DWORD WINAPI MessageThread(LPVOID); 
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

MSG mMsg;
HWND hHandle; 
WNDCLASS wWndclass;

void main(void) 
{ 
    wWndclass.style         = CS_HREDRAW|CS_VREDRAW; 
    wWndclass.lpfnWndProc   = WndProc; 
    wWndclass.cbClsExtra    = 0; 
    wWndclass.cbWndExtra    = 0; 
    wWndclass.hInstance     = 0; 
    wWndclass.hCursor       = LoadCursor(NULL,IDC_ARROW); 
    wWndclass.hIcon         = LoadIcon(NULL,IDI_APPLICATION); 
    wWndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); 
    wWndclass.lpszClassName = TEXT(&quot;Fensterklasse&quot;); 
    wWndclass.lpszMenuName  = NULL; 
    RegisterClass(&amp;wWndclass); 

    hHandle=CreateWindow(TEXT(&quot;Fensterklasse&quot;), 
                         TEXT(&quot;Fenstertitel&quot;), 
                         WS_OVERLAPPEDWINDOW, 
                         0, 
                         0, 
                         200, 
                         200, 
                         NULL, 
                         NULL, 
                         0, 
                         0 
                         ); 

    ShowWindow(hHandle,SW_SHOW); 
    UpdateWindow(hHandle);

    CreateThread(NULL,0,MessageThread,(LPVOID)&amp;mMsg,0,NULL); 

    printf(&quot;Druecken Sie die Enter-Taste um das Programm zu beenden!&quot;); 
    getchar(); 
}

DWORD WINAPI MessageThread(LPVOID data) 
{
	while(!GetMessage(((MSG *)data),NULL,0,0))
	{
		Sleep(25);
		TranslateMessage(((MSG *)data));
		DispatchMessage(((MSG *)data));
	}
	return (0);
}

LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam) 
{ 
    switch(message) 
    { 
        case WM_DESTROY: 
        { 
            PostQuitMessage(0); 
            return 0; 
        } 
    } 

    return DefWindowProc(hWnd,message,wParam,lParam); 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1432353</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1432353</guid><dc:creator><![CDATA[Wiudä-Siech]]></dc:creator><pubDate>Mon, 07 Jan 2008 12:35:32 GMT</pubDate></item><item><title><![CDATA[Reply to Nachrichten in Thread abfangen on Mon, 07 Jan 2008 13:57:45 GMT]]></title><description><![CDATA[<p>BTW: Was soll bitte der Sleep in der Message Loop?<br />
Wenn eine Nachricht anliegt, dann ist es doch in Denem ureigenem Interesse, dass diese sofort ohne Verzögerung abgearbeitet wird... oder?<br />
Diese Verzögerung bringt nichts! GetMessage führt selbst einen &quot;Sleep&quot; aus, wen keine Nachrichten da sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1432422</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1432422</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Mon, 07 Jan 2008 13:57:45 GMT</pubDate></item></channel></rss>