<?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[Ein erstes Fenster]]></title><description><![CDATA[<p>Hallo,</p>
<p>lerne C++ mit Hilfe des Buches &quot;C++ für Spieleprogrammierer&quot;<br />
Dort fand ich ein Beispielcode für ein WindowsFenster, nur<br />
irgendwas lief schief.</p>
<pre><code>//C++ für Spieleprogrammierer
//Listing 10.1
//Ein Windows-Grundgerüst
//
#include &lt;Windows.h&gt;

//Prototyp der Callback-Funktion
LRESULT CALLBACK WindowProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);

//Hauptprogramm
//
int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpcmdline, int ncmdshow)
{
	WNDCLASSEX	windowclass;	//Struktur für Fenstereigenschaften
	HWND		hWnd;			//Fenster-Handle
	MSG			message;		//Nachricht

	//Der Klassen-Name des Fensters ist frei wählbar
	const char szClassName[] = &quot;Erstes Fenster&quot;;

	//Struktur mit gewünschten Eigenschaften füllen
	//

	//Größe der Struktur zwischenspeichern
	windowclass.cbSize = sizeof (WNDCLASSEX);

	//Fenster soll beim Verschieben neu gezeichnet werden
	windowclass.style = CS_HREDRAW | CS_VREDRAW;

	//Zeiger auf Callback-Funktion
	windowclass.lpfnWndProc = WindowProc;

	//Keine erweiterten Einstellungen
	windowclass.cbClsExtra = 0;
	windowclass.cbWndExtra = 0;

	//Instanz speichern
	windowclass.hInstance = hInst;

	//Icons und Cursor festlegen
	windowclass.hIcon = LoadIcon (NULL, IDI_APPLICATION);
	windowclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
	windowclass.hCursor = LoadCursor (NULL, IDC_ARROW);

	//Hintergrundfarbe festlegen
	windowclass.hbrBackground = (HBRUSH) COLOR_BACKGROUND+1;

	//Ein Menü brauchen wir nicht
	windowclass.lpszMenuName = NULL;

	//Fensterklasse regestrieren
	if (!RegisterClassEx (&amp;windowclass) )
		return (0);

	//Das Fenster erzeugen
	hWnd = CreateWindowEx	(NULL,
							szClassName,
							&quot;Das erste Fenster!&quot;,
							WS_OVERLAPPEDWINDOW | WS_VISIBLE,
							100, 100, 
							300, 250,
							NULL,
							NULL,
							hInst,
							NULL);

	//Prüfen ob alles glatt ging
	if (hWnd == NULL)
		return (0);

	//Der &quot;Herzschlag des Programms.
	//Hier werden alle Nachrichten abgeholt,
	//übersetzt und weitergeleitet.
	while (GetMessage (&amp;message, NULL, 0, 0) )
	{
		TranslateMessage (&amp;message);
		DispatchMessage (&amp;message);

	}

	//Programm beenden
	return (int) (message.wParam);

}//WinMain

//Callback-Funktion zur Nachrichtenverarbeitung
//
LRESULT CALLBACK WindowProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	//Messages auswerten
	switch (message)
	{
		//Fenster schließen? (auch alt +F4)
		case WM_DESTROY:
			{
				//Nachricht zum Beenden schicken
				PostQuitMessage (0);
				return (0);

			}

			//Wurde eine Taste gedrückt?
		case WM_KEYDOWN:
			{
				//Ja, also je nach Taste verzweigen
				switch (wParam)
				{
					//Wurde &quot;Escape&quot; gedrückt?
				case VK_ESCAPE:
					{
						//Ja, also Nachricht zum Beenden schicken
						PostQuitMessage (0);
						return (0);

					}
				}
			} break;
	}

	//Die Nachricht wurde nicht von uns verarbeitet, also 
	//von Windows verarbeiten lassen.
	return (DefWindowProc (hWnd, message, wParam, lParam) );

} //WindowProc
</code></pre>
<p>Fehlermeldung:<br />
1&gt;c:\users\lybrial\documents\visual studio 2010\projects\grundlagen windows programmierung\grundlagen windows programmierung\ein erstes fenster.cpp(65): error C2664: 'CreateWindowExW' : cannot convert parameter 2 from 'const char [15]' to 'LPCWSTR'<br />
1&gt; Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/270883/ein-erstes-fenster</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 20:21:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/270883.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 19 Jul 2010 19:03:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ein erstes Fenster on Mon, 19 Jul 2010 19:03:01 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>lerne C++ mit Hilfe des Buches &quot;C++ für Spieleprogrammierer&quot;<br />
Dort fand ich ein Beispielcode für ein WindowsFenster, nur<br />
irgendwas lief schief.</p>
<pre><code>//C++ für Spieleprogrammierer
//Listing 10.1
//Ein Windows-Grundgerüst
//
#include &lt;Windows.h&gt;

//Prototyp der Callback-Funktion
LRESULT CALLBACK WindowProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);

//Hauptprogramm
//
int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpcmdline, int ncmdshow)
{
	WNDCLASSEX	windowclass;	//Struktur für Fenstereigenschaften
	HWND		hWnd;			//Fenster-Handle
	MSG			message;		//Nachricht

	//Der Klassen-Name des Fensters ist frei wählbar
	const char szClassName[] = &quot;Erstes Fenster&quot;;

	//Struktur mit gewünschten Eigenschaften füllen
	//

	//Größe der Struktur zwischenspeichern
	windowclass.cbSize = sizeof (WNDCLASSEX);

	//Fenster soll beim Verschieben neu gezeichnet werden
	windowclass.style = CS_HREDRAW | CS_VREDRAW;

	//Zeiger auf Callback-Funktion
	windowclass.lpfnWndProc = WindowProc;

	//Keine erweiterten Einstellungen
	windowclass.cbClsExtra = 0;
	windowclass.cbWndExtra = 0;

	//Instanz speichern
	windowclass.hInstance = hInst;

	//Icons und Cursor festlegen
	windowclass.hIcon = LoadIcon (NULL, IDI_APPLICATION);
	windowclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
	windowclass.hCursor = LoadCursor (NULL, IDC_ARROW);

	//Hintergrundfarbe festlegen
	windowclass.hbrBackground = (HBRUSH) COLOR_BACKGROUND+1;

	//Ein Menü brauchen wir nicht
	windowclass.lpszMenuName = NULL;

	//Fensterklasse regestrieren
	if (!RegisterClassEx (&amp;windowclass) )
		return (0);

	//Das Fenster erzeugen
	hWnd = CreateWindowEx	(NULL,
							szClassName,
							&quot;Das erste Fenster!&quot;,
							WS_OVERLAPPEDWINDOW | WS_VISIBLE,
							100, 100, 
							300, 250,
							NULL,
							NULL,
							hInst,
							NULL);

	//Prüfen ob alles glatt ging
	if (hWnd == NULL)
		return (0);

	//Der &quot;Herzschlag des Programms.
	//Hier werden alle Nachrichten abgeholt,
	//übersetzt und weitergeleitet.
	while (GetMessage (&amp;message, NULL, 0, 0) )
	{
		TranslateMessage (&amp;message);
		DispatchMessage (&amp;message);

	}

	//Programm beenden
	return (int) (message.wParam);

}//WinMain

//Callback-Funktion zur Nachrichtenverarbeitung
//
LRESULT CALLBACK WindowProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	//Messages auswerten
	switch (message)
	{
		//Fenster schließen? (auch alt +F4)
		case WM_DESTROY:
			{
				//Nachricht zum Beenden schicken
				PostQuitMessage (0);
				return (0);

			}

			//Wurde eine Taste gedrückt?
		case WM_KEYDOWN:
			{
				//Ja, also je nach Taste verzweigen
				switch (wParam)
				{
					//Wurde &quot;Escape&quot; gedrückt?
				case VK_ESCAPE:
					{
						//Ja, also Nachricht zum Beenden schicken
						PostQuitMessage (0);
						return (0);

					}
				}
			} break;
	}

	//Die Nachricht wurde nicht von uns verarbeitet, also 
	//von Windows verarbeiten lassen.
	return (DefWindowProc (hWnd, message, wParam, lParam) );

} //WindowProc
</code></pre>
<p>Fehlermeldung:<br />
1&gt;c:\users\lybrial\documents\visual studio 2010\projects\grundlagen windows programmierung\grundlagen windows programmierung\ein erstes fenster.cpp(65): error C2664: 'CreateWindowExW' : cannot convert parameter 2 from 'const char [15]' to 'LPCWSTR'<br />
1&gt; Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928796</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928796</guid><dc:creator><![CDATA[Lybrial]]></dc:creator><pubDate>Mon, 19 Jul 2010 19:03:01 GMT</pubDate></item><item><title><![CDATA[Reply to Ein erstes Fenster on Mon, 19 Jul 2010 19:06:46 GMT]]></title><description><![CDATA[<p>Probier mal: Du brauchst hier wchar_t[], und nicht char[]. Das heißt:</p>
<pre><code class="language-cpp">hWnd = CreateWindowEx(..., L&quot;Das erste Fenster!&quot;, ...);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1928799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928799</guid><dc:creator><![CDATA[Famer]]></dc:creator><pubDate>Mon, 19 Jul 2010 19:06:46 GMT</pubDate></item><item><title><![CDATA[Reply to Ein erstes Fenster on Mon, 19 Jul 2010 19:09:13 GMT]]></title><description><![CDATA[<p>Versteh nur Bahnhof <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928801</guid><dc:creator><![CDATA[Lybrial]]></dc:creator><pubDate>Mon, 19 Jul 2010 19:09:13 GMT</pubDate></item><item><title><![CDATA[Reply to Ein erstes Fenster on Mon, 19 Jul 2010 19:14:11 GMT]]></title><description><![CDATA[<p>Mein Satz ist zugegebenermaßen ein klein wenig verstümmelt.<br />
Nichtsdestoweniger: Zweiter Hit bei Google für &quot;wchar_t&quot;: <a href="http://www.imb-jena.de/~gmueller/kurse/c_c++/c_wchar.html" rel="nofollow">http://www.imb-jena.de/~gmueller/kurse/c_c++/c_wchar.html</a></p>
<p>Das sollte alles klarstellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928802</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928802</guid><dc:creator><![CDATA[Famer]]></dc:creator><pubDate>Mon, 19 Jul 2010 19:14:11 GMT</pubDate></item><item><title><![CDATA[Reply to Ein erstes Fenster on Mon, 19 Jul 2010 19:24:02 GMT]]></title><description><![CDATA[<p>Heißt das ich muss die<br />
stddef.h<br />
header einbinden und dann<br />
einfach nen L vor meinem Text platzieren?</p>
<p>Sorry aber ich hab keine Ahnung von dieser Header,<br />
wie ich schon schrieb, war das ein Beispiel aus<br />
einem Buch. Und laut dem Buch sollte es auch so<br />
funktionieren</p>
<p>Wenn ichs so probiere, kommt diese Fehlermeldung:</p>
<p>1&gt;c:\users\lybrial\documents\visual studio 2010\projects\grundlagen windows programmierung\grundlagen windows programmierung\ein erstes fenster.cpp(20): error C2440: 'initializing' : cannot convert from 'const wchar_t [15]' to 'const char []'<br />
1&gt; There is no context in which this conversion is possible<br />
1&gt;c:\users\lybrial\documents\visual studio 2010\projects\grundlagen windows programmierung\grundlagen windows programmierung\ein erstes fenster.cpp(66): error C2664: 'CreateWindowExW' : cannot convert parameter 2 from 'const char []' to 'LPCWSTR'<br />
1&gt; Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928805</guid><dc:creator><![CDATA[Lybrial]]></dc:creator><pubDate>Mon, 19 Jul 2010 19:24:02 GMT</pubDate></item><item><title><![CDATA[Reply to Ein erstes Fenster on Mon, 19 Jul 2010 19:32:53 GMT]]></title><description><![CDATA[<p>Der Header ist in C++ nicht mehr nötig, afaik.<br />
Ich merke aber gerade, dass ich den falschen Parameter verantwortlich gemacht habe.<br />
Es geht ja um szClassName. Dann solltest du natürlich dessen Datentyp entsprechend abändern (const wchar_t*).<br />
Wie gesagt, wchar_t* ist, wenn mich meine bescheidenen WinAPI-Kenntnisse nicht im Stich lassen, der Typ für Strings in der Windows-Programmierung.<br />
Aber eigentlich gehört das gar nicht einmal in dieses Unterforum.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928810</guid><dc:creator><![CDATA[Famer]]></dc:creator><pubDate>Mon, 19 Jul 2010 19:32:53 GMT</pubDate></item><item><title><![CDATA[Reply to Ein erstes Fenster on Mon, 19 Jul 2010 19:38:38 GMT]]></title><description><![CDATA[<p>Hmmm....<br />
Wenn ich das ganze jetzt wie du sagtest in const wchar_t<br />
ändere, kommt zwar keine Fehlermeldung mehr, aber es<br />
passiert auch weiter überhaupt nichts, es bleibt alles<br />
wie es ist, ohne irgendeine Ausgabe, ab und zu stürtzt<br />
sogar das Programm ab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928811</guid><dc:creator><![CDATA[Lybrial]]></dc:creator><pubDate>Mon, 19 Jul 2010 19:38:38 GMT</pubDate></item><item><title><![CDATA[Reply to Ein erstes Fenster on Mon, 19 Jul 2010 19:46:18 GMT]]></title><description><![CDATA[<p>&quot;ab und zu&quot;? Ein wenig vage.</p>
<p>Apropos vage: Sorry, dass das hier nicht die nützlichsten Tipps sind. Ich konnte mich nur noch dunkel erinnern, auch einmal vor diesem &quot;Problem&quot; gestanden zu haben, und dachte, dass ein führendes L vor allen Stringliteralen und die Konsequente Verwendung von wchar_t (resp. LPCWSTR) wäre die einfache Lösung.<br />
Ich habe auch gerade kein Windows da, um es testen zu können. Insofern wäre ich kompetenteren Leuten sehr verbunden, hier Abhilfe zu leisten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928816</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928816</guid><dc:creator><![CDATA[Famer]]></dc:creator><pubDate>Mon, 19 Jul 2010 19:46:18 GMT</pubDate></item><item><title><![CDATA[Reply to Ein erstes Fenster on Mon, 19 Jul 2010 19:48:14 GMT]]></title><description><![CDATA[<p>Ok &quot;ab und zu&quot; mal konkreter definiert xD:<br />
Manchmal stürtzt es ab, nachdem ich das zweite mal<br />
Compilieren lasse, manchmal nach dem dritten mal,<br />
machmal nach dem vierten mal.</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928819</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928819</guid><dc:creator><![CDATA[Lybrial]]></dc:creator><pubDate>Mon, 19 Jul 2010 19:48:14 GMT</pubDate></item><item><title><![CDATA[Reply to Ein erstes Fenster on Mon, 19 Jul 2010 19:51:32 GMT]]></title><description><![CDATA[<p>Wann, also an welcher Stelle im Programm, stürzt es denn ab? Was meinst du mit &quot;4tes Mal kompilieren&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928823</guid><dc:creator><![CDATA[Famer]]></dc:creator><pubDate>Mon, 19 Jul 2010 19:51:32 GMT</pubDate></item><item><title><![CDATA[Reply to Ein erstes Fenster on Mon, 19 Jul 2010 19:54:51 GMT]]></title><description><![CDATA[<p>Naja, ich habs öfter versucht zu compilieren und an welcher<br />
Stelle es abstürtzt kann ich nicht sagen, da ja wie ich schon<br />
sagte, nichts passiert, alle Fenster bleiben weiß und wenn es<br />
abstürtzt, bekomme ich von Windows lediglich die Meldung,<br />
das das Programm nicht mehr reagiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928825</guid><dc:creator><![CDATA[Lybrial]]></dc:creator><pubDate>Mon, 19 Jul 2010 19:54:51 GMT</pubDate></item><item><title><![CDATA[Reply to Ein erstes Fenster on Mon, 19 Jul 2010 20:10:43 GMT]]></title><description><![CDATA[<p>Ist dir der Unterschied zwischen &quot;Programm ausführen&quot; und &quot;Programm kompilieren&quot; klar?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928835</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928835</guid><dc:creator><![CDATA[Famer]]></dc:creator><pubDate>Mon, 19 Jul 2010 20:10:43 GMT</pubDate></item><item><title><![CDATA[Reply to Ein erstes Fenster on Mon, 19 Jul 2010 20:12:56 GMT]]></title><description><![CDATA[<p>Beim Compilieren wird der Code in die &quot;Computersprache&quot;<br />
übersetzt und beim ausführen wird dieses Programm, das<br />
in die &quot;Computersprache&quot; übersetzt wurde eben ausgeführt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928837</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928837</guid><dc:creator><![CDATA[Lybrial]]></dc:creator><pubDate>Mon, 19 Jul 2010 20:12:56 GMT</pubDate></item><item><title><![CDATA[Reply to Ein erstes Fenster on Mon, 19 Jul 2010 21:19:10 GMT]]></title><description><![CDATA[<p>Wie meinst du dann, dass du das Programm &quot;öfter versuchst zu kompilieren&quot;? Kompilierst du das Programm mehrmals hintereinander und testest es jedes Mal, und manchmal stürzt es ab und manchmal nicht?<br />
Werden die Fenster denn mit richtigem Titel etc. angezeigt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928861</guid><dc:creator><![CDATA[Famer]]></dc:creator><pubDate>Mon, 19 Jul 2010 21:19:10 GMT</pubDate></item><item><title><![CDATA[Reply to Ein erstes Fenster on Mon, 19 Jul 2010 21:22:33 GMT]]></title><description><![CDATA[<p>Ahja dann hab ich das tatsächlich verwechselt, d. h. ich hab es<br />
mehrmals ausgeführt. Das Fenster das ich versuche zu erstellen<br />
wird nicht angezeigt. Wie gesagt, es passiert nichts.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928862</guid><dc:creator><![CDATA[Lybrial]]></dc:creator><pubDate>Mon, 19 Jul 2010 21:22:33 GMT</pubDate></item><item><title><![CDATA[Reply to Ein erstes Fenster on Tue, 20 Jul 2010 01:12:52 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">//Der Klassen-Name des Fensters ist frei wählbar
    const char szClassName[] = &quot;Erstes Fenster&quot;;
</code></pre>
<p>das hier ist falsch - besagt die Fehlermeldung.<br />
-&gt;</p>
<pre><code class="language-cpp">//Der Klassen-Name des Fensters ist frei wählbar
    const wchar_t szClassName[] = &quot;Erstes Fenster&quot;;
</code></pre>
<p>char umfasst nur den einfachen ascii-zeichensatz<br />
wchar_t umfasst den gesamten unicode-zeichensatz - und der wird windowsintern wohl auch seit ein paar versionen verwendet.</p>
<p>beim nächsten mal nutze doch bitte die cpp-tags anstatt der code-tags<br />
des weiteren sollte dir ganz schnell klar werden, dass das ins winapi-forum gehört - im C++ forum hat so etwas nichts zu suchen.</p>
<p>wenn es nach der änderung oben noch immer nicht klappt, poste noch mal deinen code, so wie ihn du hast und die exakte fehlermeldung.</p>
<p>für die fehlermeldung nimmst du am besten code-tags und für den code wie gesagt die c++-tags.</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928902</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Tue, 20 Jul 2010 01:12:52 GMT</pubDate></item></channel></rss>