<?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[Anwendung wird nicht beendet]]></title><description><![CDATA[<p>Ich habe folgende Anwendung geschrieben:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;d3dx9.h&gt;
#include &lt;mmsystem.h&gt;

LPDIRECT3D9 g_pD3D = 0;
LPDIRECT3DDEVICE9 g_pd3dDevice = 0;

HRESULT InitD3D(HWND hWnd)
{
	if(NULL == (g_pD3D = Direct3DCreate9(D3D_SDK_VERSION)))
		return E_FAIL;

	D3DPRESENT_PARAMETERS d3dpp;
	ZeroMemory(&amp;d3dpp, sizeof(d3dpp));
	d3dpp.Windowed = TRUE;
	d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
	d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;

	if( FAILED(g_pD3D-&gt;CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
									D3DCREATE_SOFTWARE_VERTEXPROCESSING,
									&amp;d3dpp, &amp;g_pd3dDevice)))
		return E_FAIL;
	return S_OK;
}

void Render()
{
	g_pd3dDevice-&gt;Clear(0,NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255,0,0), 1.0f, 0);

	if(SUCCEEDED(g_pd3dDevice-&gt;BeginScene()))
	{
		g_pd3dDevice-&gt;EndScene();
	}

	g_pd3dDevice-&gt;Present(NULL,NULL,NULL,NULL);
}

void CleanUp()
{
	if(g_pD3D != NULL)
		g_pD3D-&gt;Release();
	if(g_pd3dDevice != NULL)
		g_pd3dDevice-&gt;Release();
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) 
{ 
switch (message) 
{ 
case WM_PAINT: 
    Render();
	ValidateRect(hwnd, NULL);
    return 0; 

case WM_DESTROY: 
	CleanUp();
    PostQuitMessage (0); 
    return 0; 
} 

return DefWindowProc (hwnd, message, wParam, lParam); 
} 

int WINAPI WinMain (HINSTANCE hI, HINSTANCE hPrI, LPSTR szCmdLine, int iCmdShow) 
{ 
char szName[] = &quot;Mastermind&quot;; 
WNDCLASS wc; 

wc.style         = CS_HREDRAW | CS_VREDRAW;   // CS = &quot;class style&quot; 
wc.lpfnWndProc   = WndProc; 
wc.cbClsExtra    = 0; 
wc.cbWndExtra    = 0; 
wc.hInstance     = hI; 
wc.hIcon         = LoadIcon (NULL, IDI_WINLOGO); 
wc.hCursor       = LoadCursor (NULL, IDC_ARROW); 
wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH); 
wc.lpszMenuName  = NULL; 
wc.lpszClassName = szName; 

RegisterClass (&amp;wc); 

HWND hWnd = CreateWindow (szName, &quot;Mastermind&quot;, WS_OVERLAPPEDWINDOW,  
                          CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hI, NULL); 
if(SUCCEEDED(InitD3D(hWnd)))
{
ShowWindow   (hWnd, iCmdShow); 
UpdateWindow (hWnd); 
// Nachrichten-Schleife 
MSG msg;
	while(GetMessage(&amp;msg, hWnd, 0,0))
    { 
        TranslateMessage (&amp;msg); 
        DispatchMessage (&amp;msg); 
    } 
} 
UnregisterClass(szName, wc.hInstance);
return 0; 
}
</code></pre>
<p>Und ich habe auch alle libs eingebunden(nur um dummen Fragen vorzubeugen;denn ohne libs würde es ja garnicht laufen).</p>
<p>Beim klick auf das &quot;X&quot; zum schließen des Fensters wird jedoch wirklich nur das Fenster geschlossen nicht wie üblich das gesamte Programm beendet. Im Task Manager ist dann nämlich immernoch ein Eintrag für das Programm. Irgendwo muss ich einen Fehler gemacht haben aber ich finde ihn nicht. Kann mir jemand sagen was ich falsch gemacht habe?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/82636/anwendung-wird-nicht-beendet</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Apr 2026 16:07:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/82636.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 12 Aug 2004 19:05:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Anwendung wird nicht beendet on Thu, 12 Aug 2004 19:05:53 GMT]]></title><description><![CDATA[<p>Ich habe folgende Anwendung geschrieben:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;d3dx9.h&gt;
#include &lt;mmsystem.h&gt;

LPDIRECT3D9 g_pD3D = 0;
LPDIRECT3DDEVICE9 g_pd3dDevice = 0;

HRESULT InitD3D(HWND hWnd)
{
	if(NULL == (g_pD3D = Direct3DCreate9(D3D_SDK_VERSION)))
		return E_FAIL;

	D3DPRESENT_PARAMETERS d3dpp;
	ZeroMemory(&amp;d3dpp, sizeof(d3dpp));
	d3dpp.Windowed = TRUE;
	d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
	d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;

	if( FAILED(g_pD3D-&gt;CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
									D3DCREATE_SOFTWARE_VERTEXPROCESSING,
									&amp;d3dpp, &amp;g_pd3dDevice)))
		return E_FAIL;
	return S_OK;
}

void Render()
{
	g_pd3dDevice-&gt;Clear(0,NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255,0,0), 1.0f, 0);

	if(SUCCEEDED(g_pd3dDevice-&gt;BeginScene()))
	{
		g_pd3dDevice-&gt;EndScene();
	}

	g_pd3dDevice-&gt;Present(NULL,NULL,NULL,NULL);
}

void CleanUp()
{
	if(g_pD3D != NULL)
		g_pD3D-&gt;Release();
	if(g_pd3dDevice != NULL)
		g_pd3dDevice-&gt;Release();
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) 
{ 
switch (message) 
{ 
case WM_PAINT: 
    Render();
	ValidateRect(hwnd, NULL);
    return 0; 

case WM_DESTROY: 
	CleanUp();
    PostQuitMessage (0); 
    return 0; 
} 

return DefWindowProc (hwnd, message, wParam, lParam); 
} 

int WINAPI WinMain (HINSTANCE hI, HINSTANCE hPrI, LPSTR szCmdLine, int iCmdShow) 
{ 
char szName[] = &quot;Mastermind&quot;; 
WNDCLASS wc; 

wc.style         = CS_HREDRAW | CS_VREDRAW;   // CS = &quot;class style&quot; 
wc.lpfnWndProc   = WndProc; 
wc.cbClsExtra    = 0; 
wc.cbWndExtra    = 0; 
wc.hInstance     = hI; 
wc.hIcon         = LoadIcon (NULL, IDI_WINLOGO); 
wc.hCursor       = LoadCursor (NULL, IDC_ARROW); 
wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH); 
wc.lpszMenuName  = NULL; 
wc.lpszClassName = szName; 

RegisterClass (&amp;wc); 

HWND hWnd = CreateWindow (szName, &quot;Mastermind&quot;, WS_OVERLAPPEDWINDOW,  
                          CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hI, NULL); 
if(SUCCEEDED(InitD3D(hWnd)))
{
ShowWindow   (hWnd, iCmdShow); 
UpdateWindow (hWnd); 
// Nachrichten-Schleife 
MSG msg;
	while(GetMessage(&amp;msg, hWnd, 0,0))
    { 
        TranslateMessage (&amp;msg); 
        DispatchMessage (&amp;msg); 
    } 
} 
UnregisterClass(szName, wc.hInstance);
return 0; 
}
</code></pre>
<p>Und ich habe auch alle libs eingebunden(nur um dummen Fragen vorzubeugen;denn ohne libs würde es ja garnicht laufen).</p>
<p>Beim klick auf das &quot;X&quot; zum schließen des Fensters wird jedoch wirklich nur das Fenster geschlossen nicht wie üblich das gesamte Programm beendet. Im Task Manager ist dann nämlich immernoch ein Eintrag für das Programm. Irgendwo muss ich einen Fehler gemacht haben aber ich finde ihn nicht. Kann mir jemand sagen was ich falsch gemacht habe?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/581285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/581285</guid><dc:creator><![CDATA[The_incredible_Guest]]></dc:creator><pubDate>Thu, 12 Aug 2004 19:05:53 GMT</pubDate></item><item><title><![CDATA[Reply to Anwendung wird nicht beendet on Thu, 12 Aug 2004 19:26:47 GMT]]></title><description><![CDATA[<p>Ich nehme an, die Message-Loop läuft weiter, dann solltest du vielleicht</p>
<pre><code class="language-cpp">GetMessage(&amp;msg, hWnd, 0,0)
</code></pre>
<p>in</p>
<pre><code class="language-cpp">GetMessage(&amp;msg,0,0,0)
</code></pre>
<p>umändern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/581303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/581303</guid><dc:creator><![CDATA[Shlo]]></dc:creator><pubDate>Thu, 12 Aug 2004 19:26:47 GMT</pubDate></item><item><title><![CDATA[Reply to Anwendung wird nicht beendet on Fri, 13 Aug 2004 13:41:43 GMT]]></title><description><![CDATA[<p>Ich habe es noch nicht ausprobiert aber weiß auch nicht warum es einen Unterschied machen sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/582071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/582071</guid><dc:creator><![CDATA[The_incredible_Guest]]></dc:creator><pubDate>Fri, 13 Aug 2004 13:41:43 GMT</pubDate></item><item><title><![CDATA[Reply to Anwendung wird nicht beendet on Fri, 13 Aug 2004 13:44:12 GMT]]></title><description><![CDATA[<p>Danke, es hat geklappt, ganz entgegen meiner Erwartung. Aber kann mir jetzt auch erklärt werden wo der große Unterschied liegt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/582073</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/582073</guid><dc:creator><![CDATA[The_incredible_Guest]]></dc:creator><pubDate>Fri, 13 Aug 2004 13:44:12 GMT</pubDate></item><item><title><![CDATA[Reply to Anwendung wird nicht beendet on Fri, 13 Aug 2004 13:57:16 GMT]]></title><description><![CDATA[<p>Die WM_QUIT-Nachricht wird nicht an das Fenster (hWnd) geschickt, sondern an den Thread. Deswegen erfasst GetMessage(hWnd) diese Nachricht nicht und läuft weiter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/582082</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/582082</guid><dc:creator><![CDATA[Christoph]]></dc:creator><pubDate>Fri, 13 Aug 2004 13:57:16 GMT</pubDate></item></channel></rss>