<?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[Lästiges cmd-Fenster]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich erzeuge mit einem C-Programm unter Windows mit CreateWindowEx ein ganz normales Fenster. Leider wird beim Programmstart aber immer zusätzlich auch ein cmd-Fenster (eine DosBox) erzeugt, die ich aber nicht haben will. Wie kann ich verhindern, dass dieses schwarze Konsolenfenster erscheint?<br />
Das blöde dabei: Sobald ich dieses Command-Fenster schließe, wir auch mein Programm beendet.</p>
<p>Kann das am Compikler liegen? Ich verwende MinGW.</p>
<p>Das ist der Sourcecode des C-Programms:</p>
<pre><code class="language-cpp">//simple Window
//compile-Befehl: C:\MinGW\bin\gcc simple.c -lgdi32 -o simple.exe
#include &lt;windows.h&gt;

// Prototyp meiner Callback-Funktion
LRESULT CALLBACK MyWndProc(HWND hWnd, UINT umsg, WPARAM wParam, LPARAM lParam);

// Hier beginnts:
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) {
	HWND hWnd;
	MSG  msg;
	WNDCLASSEX wc;
	LPCSTR lpszAppName = &quot;AppName&quot;;
	LPCSTR lpszTitle   = &quot;simple Window&quot;;

	// Fensterklasse initialisieren
	wc.cbSize        =  sizeof(WNDCLASSEX);						// Größe dieser Struktur
	wc.style         =  CS_HREDRAW | CS_VREDRAW;				// Fenster neuzeichnen bei Größenänderung
	wc.lpfnWndProc   =  MyWndProc;								// Callback-Funktion des Fensters (Default)
	wc.cbClsExtra    =  0;										// Extra-Speicher
	wc.cbWndExtra    =  0;										// Extra-Speicher
	wc.hInstance     =  hInstance;								// Instanz-ID (wurde beim Aufruf des Programm vom Betriebssystem übergeben)
	wc.hCursor       =  LoadCursor(NULL,IDC_ARROW);				// Cursor für dieses Fenster
	wc.hIcon         =  LoadIcon(NULL, IDI_APPLICATION);		// Icon für dieses Fenster
	wc.hbrBackground =  (HBRUSH)GetStockObject(WHITE_BRUSH);	// weißer Hintergrund
	wc.lpszClassName =  lpszAppName;							// Name der FensterKlasse
	wc.lpszMenuName  =  lpszAppName;							// Name der FensterKlasse
	wc.hIconSm       =  LoadIcon(NULL, IDI_APPLICATION);		// Icon (links oben in Titelzeile)

	// Fensterklasse registrieren (Abbruch falls Registrierung fehlschlägt)
	if( RegisterClassEx(&amp;wc) == 0) return 1;

	// Fenster erzeugen
	hWnd = CreateWindowEx(	0,									// 0 = kein erweiterter Windows-Style
							lpszAppName,						// Name der FensterKlasse
							lpszTitle,							// Fenstertitel
							WS_OVERLAPPEDWINDOW,				// Fenster-Style
							CW_USEDEFAULT, CW_USEDEFAULT,		// Koordinaten der linke obere Ecke
							CW_USEDEFAULT, CW_USEDEFAULT,		// Abmessungen des Fensters
							NULL,								// Handle des Parent-Fensters: 0=kein Parent; (HWND_MESSAGE würde unsichtbares Fenster erzeugen)
							NULL,								// Handle des Menüs
							hInstance,							// Instanz zu der das Fenster gehört
							NULL);								// Nachricht die beim Start verarbeitet werden soll

	// Abbruch bei Misslingen:
	if(hWnd == NULL) return 1;

	// Fenster anzeigen
	ShowWindow(hWnd, iCmdShow);

	// Fenster aktualisieren
	UpdateWindow(hWnd);

	// Tastatur-, Maus- und andere Ereignisse verarbeiten
	while (GetMessage(&amp;msg, NULL, 0, 0) &gt; 0) {
		TranslateMessage(&amp;msg);
		DispatchMessage(&amp;msg);
	}
	return msg.wParam;
}

//===================================================================
// Diese Funktion wird von Windows bei jeder Nachricht aufgerufen:
//===================================================================
LRESULT CALLBACK MyWndProc(HWND hWnd, UINT umsg, WPARAM wParam, LPARAM lParam) {
	switch (umsg) {
		case WM_DESTROY: {			// Das Fenster wurde geschlossen
			PostQuitMessage(0); 	// Aufforderung an das Programm sich zu beenden
			return 0;
		}
	}
	// Alle unbehandelten Events sollen von Windows behandelt werden
	return DefWindowProc(hWnd, umsg, wParam, lParam);
}
</code></pre>
<p>Und mit diesem Befehl (den ich natürlich in einem cmd-Fenster absetze) habe ich das Ding compiliert:</p>
<blockquote>
<p>C:\MinGW\bin\gcc simple.c -lgdi32 -o simple.exe</p>
</blockquote>
<p>Danke für eure Hilfe!</p>
<p>Liebe Grüße<br />
Hubert</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/236571/lästiges-cmd-fenster</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Apr 2026 18:38:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/236571.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 17 Mar 2009 09:19:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Lästiges cmd-Fenster on Tue, 17 Mar 2009 09:19:33 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich erzeuge mit einem C-Programm unter Windows mit CreateWindowEx ein ganz normales Fenster. Leider wird beim Programmstart aber immer zusätzlich auch ein cmd-Fenster (eine DosBox) erzeugt, die ich aber nicht haben will. Wie kann ich verhindern, dass dieses schwarze Konsolenfenster erscheint?<br />
Das blöde dabei: Sobald ich dieses Command-Fenster schließe, wir auch mein Programm beendet.</p>
<p>Kann das am Compikler liegen? Ich verwende MinGW.</p>
<p>Das ist der Sourcecode des C-Programms:</p>
<pre><code class="language-cpp">//simple Window
//compile-Befehl: C:\MinGW\bin\gcc simple.c -lgdi32 -o simple.exe
#include &lt;windows.h&gt;

// Prototyp meiner Callback-Funktion
LRESULT CALLBACK MyWndProc(HWND hWnd, UINT umsg, WPARAM wParam, LPARAM lParam);

// Hier beginnts:
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) {
	HWND hWnd;
	MSG  msg;
	WNDCLASSEX wc;
	LPCSTR lpszAppName = &quot;AppName&quot;;
	LPCSTR lpszTitle   = &quot;simple Window&quot;;

	// Fensterklasse initialisieren
	wc.cbSize        =  sizeof(WNDCLASSEX);						// Größe dieser Struktur
	wc.style         =  CS_HREDRAW | CS_VREDRAW;				// Fenster neuzeichnen bei Größenänderung
	wc.lpfnWndProc   =  MyWndProc;								// Callback-Funktion des Fensters (Default)
	wc.cbClsExtra    =  0;										// Extra-Speicher
	wc.cbWndExtra    =  0;										// Extra-Speicher
	wc.hInstance     =  hInstance;								// Instanz-ID (wurde beim Aufruf des Programm vom Betriebssystem übergeben)
	wc.hCursor       =  LoadCursor(NULL,IDC_ARROW);				// Cursor für dieses Fenster
	wc.hIcon         =  LoadIcon(NULL, IDI_APPLICATION);		// Icon für dieses Fenster
	wc.hbrBackground =  (HBRUSH)GetStockObject(WHITE_BRUSH);	// weißer Hintergrund
	wc.lpszClassName =  lpszAppName;							// Name der FensterKlasse
	wc.lpszMenuName  =  lpszAppName;							// Name der FensterKlasse
	wc.hIconSm       =  LoadIcon(NULL, IDI_APPLICATION);		// Icon (links oben in Titelzeile)

	// Fensterklasse registrieren (Abbruch falls Registrierung fehlschlägt)
	if( RegisterClassEx(&amp;wc) == 0) return 1;

	// Fenster erzeugen
	hWnd = CreateWindowEx(	0,									// 0 = kein erweiterter Windows-Style
							lpszAppName,						// Name der FensterKlasse
							lpszTitle,							// Fenstertitel
							WS_OVERLAPPEDWINDOW,				// Fenster-Style
							CW_USEDEFAULT, CW_USEDEFAULT,		// Koordinaten der linke obere Ecke
							CW_USEDEFAULT, CW_USEDEFAULT,		// Abmessungen des Fensters
							NULL,								// Handle des Parent-Fensters: 0=kein Parent; (HWND_MESSAGE würde unsichtbares Fenster erzeugen)
							NULL,								// Handle des Menüs
							hInstance,							// Instanz zu der das Fenster gehört
							NULL);								// Nachricht die beim Start verarbeitet werden soll

	// Abbruch bei Misslingen:
	if(hWnd == NULL) return 1;

	// Fenster anzeigen
	ShowWindow(hWnd, iCmdShow);

	// Fenster aktualisieren
	UpdateWindow(hWnd);

	// Tastatur-, Maus- und andere Ereignisse verarbeiten
	while (GetMessage(&amp;msg, NULL, 0, 0) &gt; 0) {
		TranslateMessage(&amp;msg);
		DispatchMessage(&amp;msg);
	}
	return msg.wParam;
}

//===================================================================
// Diese Funktion wird von Windows bei jeder Nachricht aufgerufen:
//===================================================================
LRESULT CALLBACK MyWndProc(HWND hWnd, UINT umsg, WPARAM wParam, LPARAM lParam) {
	switch (umsg) {
		case WM_DESTROY: {			// Das Fenster wurde geschlossen
			PostQuitMessage(0); 	// Aufforderung an das Programm sich zu beenden
			return 0;
		}
	}
	// Alle unbehandelten Events sollen von Windows behandelt werden
	return DefWindowProc(hWnd, umsg, wParam, lParam);
}
</code></pre>
<p>Und mit diesem Befehl (den ich natürlich in einem cmd-Fenster absetze) habe ich das Ding compiliert:</p>
<blockquote>
<p>C:\MinGW\bin\gcc simple.c -lgdi32 -o simple.exe</p>
</blockquote>
<p>Danke für eure Hilfe!</p>
<p>Liebe Grüße<br />
Hubert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1681335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1681335</guid><dc:creator><![CDATA[Hubert1965]]></dc:creator><pubDate>Tue, 17 Mar 2009 09:19:33 GMT</pubDate></item><item><title><![CDATA[Reply to Lästiges cmd-Fenster on Tue, 17 Mar 2009 09:30:50 GMT]]></title><description><![CDATA[<p>Hi!<br />
Dein Code ist ok, das liegt an deinen Compiler-Einstellungen. Weiteres kann ich dir dazu nicht sagen, weil ich den Compiler selbst nicht kenne.</p>
<p>Gruß,<br />
w.s.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1681344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1681344</guid><dc:creator><![CDATA[winapi scientist]]></dc:creator><pubDate>Tue, 17 Mar 2009 09:30:50 GMT</pubDate></item><item><title><![CDATA[Reply to Lästiges cmd-Fenster on Tue, 17 Mar 2009 09:47:17 GMT]]></title><description><![CDATA[<p>Sag Deinem Linker er soll <strong>keine</strong> Conmsolen Anwednung erzeugen sondern ein Programm mit dem <strong>SUBSYSTEM:WINDOWS</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1681355</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1681355</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 17 Mar 2009 09:47:17 GMT</pubDate></item><item><title><![CDATA[Reply to Lästiges cmd-Fenster on Tue, 17 Mar 2009 10:06:38 GMT]]></title><description><![CDATA[<p>Danke, Problem gelöst!</p>
<p>So funktionierts:</p>
<pre><code>C:\MinGW\bin\gcc simple.c -lgdi32 -mwindows -o simple.exe
</code></pre>
<p>In einem anderen Forum (nämlich da: <a href="http://www.allegro.cc/forums/print-thread/594895" rel="nofollow">http://www.allegro.cc/forums/print-thread/594895</a>)habe ich gelesen, dass -mwindows depreciated sei, und man stattdessen -Wl,-subsystem,windows verwenden soll. Wenn ich das mache bekomme ich aber eine Fehlermeldung.<br />
-mwindows funktioniert aber tadellos, und das genügt mir.</p>
<p>Nochmals Danke!</p>
<p>Liebe Grüße<br />
Hubert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1681369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1681369</guid><dc:creator><![CDATA[Hubert1965]]></dc:creator><pubDate>Tue, 17 Mar 2009 10:06:38 GMT</pubDate></item><item><title><![CDATA[Reply to Lästiges cmd-Fenster on Wed, 18 Mar 2009 16:06:20 GMT]]></title><description><![CDATA[<p>Sehr gut! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /><br />
Weitermachen! <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/1682298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1682298</guid><dc:creator><![CDATA[winapi scientist]]></dc:creator><pubDate>Wed, 18 Mar 2009 16:06:20 GMT</pubDate></item></channel></rss>