<?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[CreateWindow, Parameter 1 und 2 typecasten???]]></title><description><![CDATA[<p>Hi, ich habe folgendes BeispielProgramm:</p>
<pre><code>#include &quot;stdafx.h&quot;
#include &lt;windows.h&gt;

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                   PSTR szCmdLine, int iCmdShow)
{
	HWND       myHWND;	
	MSG        myMSG;
	WNDCLASS   myWNDCLASS;
	myWNDCLASS.style =  CS_HREDRAW | CS_VREDRAW;
	myWNDCLASS.lpfnWndProc =  WndProc;	
	myWNDCLASS.cbClsExtra =  0;
	myWNDCLASS.cbWndExtra =  0;
	myWNDCLASS.hInstance = hInstance;
	myWNDCLASS.hCursor = LoadCursor(NULL,IDC_ARROW);
	myWNDCLASS.hIcon = LoadIcon(NULL,IDI_APPLICATION);
	myWNDCLASS.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
	myWNDCLASS.lpszClassName =  &quot;Klasse1&quot;;	
	myWNDCLASS.lpszMenuName  =  NULL;
	RegisterClass(&amp;myWNDCLASS);	
	myHWND = CreateWindow(&quot;Klasse1&quot;, &quot;Titel&quot;, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
	ShowWindow(myHWND, iCmdShow);
	UpdateWindow(myHWND);

         //und so weiter
</code></pre>
<p>Nun kann ich aber nicht starten weil der erste und der zweite Parameter bei CreateWindow in einen LPCWSTR gecastet werden sollen. Mach ich das, startet zwar mein Fenster, der Text ist aber nicht zu lesen, sind lauter Vierecke.</p>
<p>Komischerweise sind alle Beispiele, die ich gefunden hab (zum Beispiel MSDN und ein paar gegoogelte) ohne typecasten, geht aber bei mir, wie gesagt, nicht.</p>
<p>Thx für Hilfe und Durchlesen <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/topic/155602/createwindow-parameter-1-und-2-typecasten</link><generator>RSS for Node</generator><lastBuildDate>Thu, 23 Jul 2026 13:35:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/155602.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 07 Aug 2006 20:49:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CreateWindow, Parameter 1 und 2 typecasten??? on Mon, 07 Aug 2006 20:49:43 GMT]]></title><description><![CDATA[<p>Hi, ich habe folgendes BeispielProgramm:</p>
<pre><code>#include &quot;stdafx.h&quot;
#include &lt;windows.h&gt;

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                   PSTR szCmdLine, int iCmdShow)
{
	HWND       myHWND;	
	MSG        myMSG;
	WNDCLASS   myWNDCLASS;
	myWNDCLASS.style =  CS_HREDRAW | CS_VREDRAW;
	myWNDCLASS.lpfnWndProc =  WndProc;	
	myWNDCLASS.cbClsExtra =  0;
	myWNDCLASS.cbWndExtra =  0;
	myWNDCLASS.hInstance = hInstance;
	myWNDCLASS.hCursor = LoadCursor(NULL,IDC_ARROW);
	myWNDCLASS.hIcon = LoadIcon(NULL,IDI_APPLICATION);
	myWNDCLASS.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
	myWNDCLASS.lpszClassName =  &quot;Klasse1&quot;;	
	myWNDCLASS.lpszMenuName  =  NULL;
	RegisterClass(&amp;myWNDCLASS);	
	myHWND = CreateWindow(&quot;Klasse1&quot;, &quot;Titel&quot;, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
	ShowWindow(myHWND, iCmdShow);
	UpdateWindow(myHWND);

         //und so weiter
</code></pre>
<p>Nun kann ich aber nicht starten weil der erste und der zweite Parameter bei CreateWindow in einen LPCWSTR gecastet werden sollen. Mach ich das, startet zwar mein Fenster, der Text ist aber nicht zu lesen, sind lauter Vierecke.</p>
<p>Komischerweise sind alle Beispiele, die ich gefunden hab (zum Beispiel MSDN und ein paar gegoogelte) ohne typecasten, geht aber bei mir, wie gesagt, nicht.</p>
<p>Thx für Hilfe und Durchlesen <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/1112572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1112572</guid><dc:creator><![CDATA[D*3ce]]></dc:creator><pubDate>Mon, 07 Aug 2006 20:49:43 GMT</pubDate></item><item><title><![CDATA[Reply to CreateWindow, Parameter 1 und 2 typecasten??? on Mon, 07 Aug 2006 21:21:18 GMT]]></title><description><![CDATA[<p>Du hast Unicode aktiviert... d.h. muss du vor deiner Zeichenkette ein L setzen... oder du includierst tchar.h und nutz den TCHAR Datentype...</p>
<pre><code class="language-cpp">// Unicode
CreateWindow(L&quot;Klasse1&quot;, L&quot;Titel&quot;, //...);
</code></pre>
<pre><code class="language-cpp">// #include &lt;tchar.h&gt; nicht vergessen!
CreateWindow(_T(&quot;Klasse1&quot;), _T(&quot;Titel&quot;), //... 

// Wobei char wird zu TCHAR, LPCSTR wird zu LPCTSTR usw. am besten auch tstrcpy usw. dann benutzen...
</code></pre>
<p>Bei letzterem kannst de nicht Unicode und Unicode compilieren <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/1112586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1112586</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 07 Aug 2006 21:21:18 GMT</pubDate></item><item><title><![CDATA[Reply to CreateWindow, Parameter 1 und 2 typecasten??? on Tue, 08 Aug 2006 16:39:20 GMT]]></title><description><![CDATA[<p>Mal BTW: Also ich bevorzuge statt _T(exp) immer TEXT(exp), aber dat is wohl Ansichtsache <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/1113192</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1113192</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Tue, 08 Aug 2006 16:39:20 GMT</pubDate></item><item><title><![CDATA[Reply to CreateWindow, Parameter 1 und 2 typecasten??? on Tue, 08 Aug 2006 17:50:35 GMT]]></title><description><![CDATA[<p>Nope ist es nicht. Wenn du keine tchar includierst nimmst du TEXT. Andernfalls _T <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/1113253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1113253</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Tue, 08 Aug 2006 17:50:35 GMT</pubDate></item><item><title><![CDATA[Reply to CreateWindow, Parameter 1 und 2 typecasten??? on Tue, 08 Aug 2006 17:56:29 GMT]]></title><description><![CDATA[<p>lol aber wenne windows.h inkludierst, inkludierste autom. tchar.h , also kann man auch TEXT nehemen^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1113265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1113265</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Tue, 08 Aug 2006 17:56:29 GMT</pubDate></item><item><title><![CDATA[Reply to CreateWindow, Parameter 1 und 2 typecasten??? on Tue, 08 Aug 2006 18:08:50 GMT]]></title><description><![CDATA[<p>Wäre mir ehrlichgesagt neu... VC2003 includiert bei nem WinAPI Programm(vom Assist erstellt) auch immer die tchar EXTRA hinzu...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1113275</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1113275</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Tue, 08 Aug 2006 18:08:50 GMT</pubDate></item><item><title><![CDATA[Reply to CreateWindow, Parameter 1 und 2 typecasten??? on Tue, 08 Aug 2006 18:11:26 GMT]]></title><description><![CDATA[<p>Hm ok, dann vllt n Missverständnis...:</p>
<pre><code class="language-cpp">#include &lt;Windows.h&gt;

TCHAR szIrgWas[] = TEXT(&quot;blablabla&quot;);
</code></pre>
<p>Also das da oben geht, ohne Tchar.h <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1113279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1113279</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Tue, 08 Aug 2006 18:11:26 GMT</pubDate></item><item><title><![CDATA[Reply to CreateWindow, Parameter 1 und 2 typecasten??? on Thu, 10 Aug 2006 21:28:02 GMT]]></title><description><![CDATA[<p>Hm, danke für die Tipps, workt nun einwandfrei! <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="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1114890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1114890</guid><dc:creator><![CDATA[D*3ce]]></dc:creator><pubDate>Thu, 10 Aug 2006 21:28:02 GMT</pubDate></item><item><title><![CDATA[Reply to CreateWindow, Parameter 1 und 2 typecasten??? on Thu, 10 Aug 2006 22:55:34 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<pre><code class="language-cpp">// Unicode
CreateWindow(L&quot;Klasse1&quot;, L&quot;Titel&quot;, //...);
</code></pre>
</blockquote>
<p>Dann aber bitte CreateWindowW benutzen.</p>
<p>CodeFinder schrieb:</p>
<blockquote>
<p>Also das da oben geht, ohne Tchar.h <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
</blockquote>
<p>Das funktioniert, weil TCHAR und TEXT in &lt;winnt.h&gt; definiert werden, welche wiederum durch &lt;windows.h&gt; eingebunden wird. &lt;tchar.h&gt; muss man jedenfalls immer separat einbinden, wenn Funktionalität daraus genutzt werden soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1114927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1114927</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Thu, 10 Aug 2006 22:55:34 GMT</pubDate></item><item><title><![CDATA[Reply to CreateWindow, Parameter 1 und 2 typecasten??? on Fri, 11 Aug 2006 12:58:15 GMT]]></title><description><![CDATA[<p>groovemaster schrieb:</p>
<blockquote>
<p>(D)Evil schrieb:</p>
<blockquote>
<pre><code class="language-cpp">// Unicode
CreateWindow(L&quot;Klasse1&quot;, L&quot;Titel&quot;, //...);
</code></pre>
</blockquote>
<p>Dann aber bitte CreateWindowW benutzen.</p>
</blockquote>
<p>Das macht der Compiler automatisch.</p>
<p>groovemaster schrieb:</p>
<blockquote>
<p>CodeFinder schrieb:</p>
<blockquote>
<p>Also das da oben geht, ohne Tchar.h <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
</blockquote>
<p>Das funktioniert, weil TCHAR und TEXT in &lt;winnt.h&gt; definiert werden, welche wiederum durch &lt;windows.h&gt; eingebunden wird. &lt;tchar.h&gt; muss man jedenfalls immer separat einbinden, wenn Funktionalität daraus genutzt werden soll.</p>
</blockquote>
<p>Ahso...danke. Aber welche Funktionen sind denn bspw. in tchar.h deklariert (für die es sich lohnt diese Datei zu inkludieren) ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1115328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1115328</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Fri, 11 Aug 2006 12:58:15 GMT</pubDate></item><item><title><![CDATA[Reply to CreateWindow, Parameter 1 und 2 typecasten??? on Fri, 11 Aug 2006 13:09:32 GMT]]></title><description><![CDATA[<p>CodeFinder schrieb:</p>
<blockquote>
<p>[...] Aber welche Funktionen sind denn bspw. in tchar.h deklariert [...] ?</p>
</blockquote>
<p>Wie wär's mit 'reinschauen? <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>
<p>*SCNR*</p>
<p>Greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1115338</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1115338</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Fri, 11 Aug 2006 13:09:32 GMT</pubDate></item><item><title><![CDATA[Reply to CreateWindow, Parameter 1 und 2 typecasten??? on Fri, 11 Aug 2006 13:33:44 GMT]]></title><description><![CDATA[<p>Swordfish schrieb:</p>
<blockquote>
<p>CodeFinder schrieb:</p>
<blockquote>
<p>[...] Aber welche Funktionen sind denn bspw. in tchar.h deklariert [...] ?</p>
</blockquote>
<p>Wie wär's mit 'reinschauen? <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>
<p>*SCNR*</p>
<p>Greetz, Swordfish</p>
</blockquote>
<p>ttl</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1115370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1115370</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Fri, 11 Aug 2006 13:33:44 GMT</pubDate></item><item><title><![CDATA[Reply to CreateWindow, Parameter 1 und 2 typecasten??? on Sat, 12 Aug 2006 12:33:11 GMT]]></title><description><![CDATA[<p>Also ganz komme ich da noch nicht mit.</p>
<p>Was ist zum Beispiel, wenn ich der Funktion ein CharakterArray übergeben will?</p>
<pre><code>//Beispiel
char myText[] = &quot;Hello World&quot;;
				TextOut(myHDC, 15, 15, myText, sizeof(myText) - 1);
</code></pre>
<p>Das geht nicht, weil ich wieder Typcasten müsste, wie mach ich das also in solchen Fällen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1115968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1115968</guid><dc:creator><![CDATA[D*3ce]]></dc:creator><pubDate>Sat, 12 Aug 2006 12:33:11 GMT</pubDate></item><item><title><![CDATA[Reply to CreateWindow, Parameter 1 und 2 typecasten??? on Sat, 12 Aug 2006 12:43:05 GMT]]></title><description><![CDATA[<p>Wenn es in einer UNICODE Anwendung ist, dann machst du</p>
<pre><code class="language-cpp">wchar_t myText[] = L&quot;Hello World&quot;;
TextOut( myHDC, 15, 15, myText, sizeof(myText) - 1 );
</code></pre>
<p>und gut is.</p>
<p>Greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1115971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1115971</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Sat, 12 Aug 2006 12:43:05 GMT</pubDate></item><item><title><![CDATA[Reply to CreateWindow, Parameter 1 und 2 typecasten??? on Sat, 12 Aug 2006 13:42:34 GMT]]></title><description><![CDATA[<p>Oder (sry Swordy, das ich das noch erwähne, ik weiß du magst keine Makros,a ber hier isses sinnvoll <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="😉"
    /> ) du benutzt das Makro TEXT und den Datentyp TCHAR, damit kannst du dann Zeichensatz-unabhängig kompilieren.</p>
<p>Also so:</p>
<pre><code class="language-cpp">TCHAR myText[] = TEXT(&quot;Hello World&quot;);
TextOut( myHDC, 15, 15, myText, lstrlen(myText));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1116017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1116017</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Sat, 12 Aug 2006 13:42:34 GMT</pubDate></item><item><title><![CDATA[Reply to CreateWindow, Parameter 1 und 2 typecasten??? on Sat, 12 Aug 2006 13:56:22 GMT]]></title><description><![CDATA[<p>CodeFinder schrieb:</p>
<blockquote>
<p>Oder (sry Swordy, das ich das noch erwähne, ik weiß du magst keine Makros, aber hier isses sinnvoll <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="😉"
    /> ) du benutzt das Makro TEXT und den Datentyp TCHAR, damit kannst du dann Zeichensatz-unabhängig kompilieren.</p>
</blockquote>
<p>Sinvoll? Ich kann die Sinnhaftigkeit einer möglichen &quot;Zeichensatz-unabhängigen&quot; Compilierung nicht erkennen. Bei mir ist es so, dass ich entweder eine UNICODE-Anwendung oder eine ASCII- (oder ANSI-, nenn es wie du willst) Anwendung erstelle. Aber was hab' ich von einer .exe mit UNICODE und einer .exe der im Prinzip selben Anwendung in ASCII?</p>
<p>Kannst du mir das bitte erklären.</p>
<p>Greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1116025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1116025</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Sat, 12 Aug 2006 13:56:22 GMT</pubDate></item><item><title><![CDATA[Reply to CreateWindow, Parameter 1 und 2 typecasten??? on Sat, 12 Aug 2006 15:16:13 GMT]]></title><description><![CDATA[<p>Irgendwie geht das mit dem wchar_t nicht, er zeigt mir nun zwar schön einen String in meinen Fenster an, allerdings sieht der so aus:<br />
&quot;Hello World||||||||&quot;</p>
<p>Das liegt denk ich irgendwie an dem sizeof ... wenn ich -13 mach passt es, also stimmt irgend was mit dem Stringdelimiter (wenn man das so schreibt) nicht, denk ich ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1116081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1116081</guid><dc:creator><![CDATA[D*3ce]]></dc:creator><pubDate>Sat, 12 Aug 2006 15:16:13 GMT</pubDate></item><item><title><![CDATA[Reply to CreateWindow, Parameter 1 und 2 typecasten??? on Sat, 12 Aug 2006 15:52:08 GMT]]></title><description><![CDATA[<p>Ähm, sorry, du nummst natürlich:</p>
<pre><code class="language-cpp">wchar_t myText[] = L&quot;Hello World&quot;;
TextOut( myHDC, 15, 15, myText, sizeof( myText ) / sizeof( wchar_t ) - 1 );
</code></pre>
<p>D!3ce schrieb:</p>
<blockquote>
<p>wenn ich -13 mach passt es, also stimmt irgend was mit dem Stringdelimiter (wenn man das so schreibt) nicht, denk ich ...</p>
</blockquote>
<p>Nein, am abschließenden <em>L&quot;\0&quot;</em> liegt's nicht, sondern daran, das <em>TextOut</em> im Parameter <em>cbString</em> die Anzahl der auszugebenden Zeichen haben möchte und nicht die Anzahl der Bytes.</p>
<p>Greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1116112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1116112</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Sat, 12 Aug 2006 15:52:08 GMT</pubDate></item><item><title><![CDATA[Reply to CreateWindow, Parameter 1 und 2 typecasten??? on Sat, 12 Aug 2006 16:12:48 GMT]]></title><description><![CDATA[<p>Swordfish schrieb:</p>
<blockquote>
<p>[...]<br />
Kannst du mir das bitte erklären.<br />
[...]</p>
</blockquote>
<p>Jop, clör:<br />
Also es liegt ja auf der Hand, das ein UNICODE-Programm mehr Speicher verbraucht, als ein ANSI-Programm rischtisch ?</p>
<p>Die Vorzüge von UNICODE liegen auch auf der Hand: Man kann auch exotische Sprachen bzw. Zeichen einbauen bzw. unterstützen.</p>
<p>So nun kannst du, wenn du ein Programm schreibst, eine speicherintensive UNICODE-Version herausgeben und eine ANSI-Version, die jedoch einen kleinere Sprach-Unterstützung hat. Also so seh ich das zum mindestens <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/1116118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1116118</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Sat, 12 Aug 2006 16:12:48 GMT</pubDate></item><item><title><![CDATA[Reply to CreateWindow, Parameter 1 und 2 typecasten??? on Sat, 12 Aug 2006 16:25:12 GMT]]></title><description><![CDATA[<p>Ui, super!</p>
<p>Das funktioniert nun und ist auch einigermaßen logisch, danke schön!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1116124</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1116124</guid><dc:creator><![CDATA[D*3ce]]></dc:creator><pubDate>Sat, 12 Aug 2006 16:25:12 GMT</pubDate></item><item><title><![CDATA[Reply to CreateWindow, Parameter 1 und 2 typecasten??? on Sat, 12 Aug 2006 17:56:57 GMT]]></title><description><![CDATA[<p>CodeFinder schrieb:</p>
<blockquote>
<p>Aber welche Funktionen sind denn bspw. in tchar.h deklariert (für die es sich lohnt diese Datei zu inkludieren) ?</p>
</blockquote>
<p>Die Datei zu verwenden ist immer dann sinnvoll, wenn du TCHAR verwendest. Für praktisch alle char/wchar_t Standard Funktionen, wie zB strlen, strcpy, sprintf, etc.pp, gibt es entsprechende TCHAR Gegenstücke. Allerdings sind diese Sachen nicht offiziell, deshalb beginnen die Bezeichner auch mit einem Unterstrich. Aber wenn du MinGW oder den MSC verwendest, ist die Datei verfügbar. Windows selbst stellt ebenfalls TCHAR Funktionen bereit. Diese beginnen mit l, zB lstrcpy. Dies ist aber bei weitem nicht so umfangreich, und kann zudem nicht statisch zur Anwendung gelinkt werden, da diese Funktionen in einer DLL liegen (kernel32).</p>
<p>Und um nochmal darauf zurückzukommen:</p>
<p>CodeFinder schrieb:</p>
<blockquote>
<p>Das macht der Compiler automatisch.</p>
</blockquote>
<p>Der Compiler macht hier nichts automatisch. Der verarbeitet im Endeffekt nur ...A und ...W Funktionen. Bevor es soweit ist, kommt der Präprozessor zum Zuge. Der macht, abhängig davon, ob das Makro UNICODE definiert ist (bei &lt;tchar.h&gt; ist es übrigens _UNICODE), aus &quot;Bezeichner&quot; entweder &quot;BezeichnerA&quot; (UNICODE nicht definiert) oder &quot;BezeichnerW&quot; (UNICODE definiert). Deshalb sollte man möglichst immer auf eine der folgenden Möglichkeiten zurückgreifen, um Inkonsistenzen zu vermeiden.</p>
<pre><code class="language-cpp">// 1) ANSI only
CreateWindowA(&quot;Klasse1&quot;, &quot;Titel&quot;, //...);
// 2) Unicode only
CreateWindowW(L&quot;Klasse1&quot;, L&quot;Titel&quot;, //...);
// 3) ANSI/Unicode
CreateWindow(TEXT(&quot;Klasse1&quot;), TEXT(&quot;Titel&quot;), //...);
//    bzw. mit &lt;tchar.h&gt;
CreateWindow(_T(&quot;Klasse1&quot;), _T(&quot;Titel&quot;), //...);
</code></pre>
<p>Alles andere ist nicht zu empfehlen. Das kann sogar soweit gehen, dass das Projekt überhaupt nicht mehr kompiliert werden kann.<br />
Stell dir vor, an einer Stelle steht</p>
<pre><code class="language-cpp">CreateWindow(&quot;Klasse1&quot;, &quot;Titel&quot;, //...);
</code></pre>
<p>und an anderer Stelle</p>
<pre><code class="language-cpp">CreateWindow(L&quot;Klasse1&quot;, L&quot;Titel&quot;, //...);
</code></pre>
<p>Dann kannst du in den Projekteinstellungen Unicode ein- und ausschalten wie du willst, das wird dir nicht helfen.</p>
<p>Wieso man dieses ANSI/Unicode portable Konzept eingeführt hat, kann sicherlich hinterfragt werden. Fakt ist aber, dass gerade ältere Windows Betriebssysteme nur begrenzten Support für Unicode haben. Dort wird idR ANSI kompiliert, bei einem aktuellen Windows ist natürlich Unicode sinnvoll. Und da ist es definitiv praktischer, man legt einfach nur einen Hebel um und alles funktionert, anstatt ständig zwei Projekte zu pflegen.<br />
Natürlich kann man, wenn man einen Zeichensatz nicht braucht bzw. nicht unterstützen will, diesen verwerfen. Dann sollte man sich aber auch über die Konsequenzen im Klaren sein, und das Projekt diesbzgl. absichern, zB mit</p>
<pre><code class="language-cpp">#ifndef UNICODE
    #error Projekt darf nur mit Unicode kompiliert werden!
#endif
</code></pre>
<p>oder Ähnlichem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1116174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1116174</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Sat, 12 Aug 2006 17:56:57 GMT</pubDate></item><item><title><![CDATA[Reply to CreateWindow, Parameter 1 und 2 typecasten??? on Sat, 12 Aug 2006 19:16:32 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/2813">@groovemaster</a>:<br />
Danke für den ausführliche und informativen Post...aber...das wusste ich eigentlich schon...das der Präprozessor auch Präprozessor-Direktiven (alá '#include') verarbeitet (bzw ersetzt) und nicht der Compiler ist mir klar; War wohl n bissl woanders...trotzdem DANKE! <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/1116224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1116224</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Sat, 12 Aug 2006 19:16:32 GMT</pubDate></item><item><title><![CDATA[Reply to CreateWindow, Parameter 1 und 2 typecasten??? on Sat, 12 Aug 2006 20:43:50 GMT]]></title><description><![CDATA[<p>Dass du das weisst, konnte ich mir schon denken. <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="🙂"
    /> War auch vielmehr als Erklärung für den OP gedacht, dem das vielleicht nicht so ganz klar war.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1116271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1116271</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Sat, 12 Aug 2006 20:43:50 GMT</pubDate></item><item><title><![CDATA[Reply to CreateWindow, Parameter 1 und 2 typecasten??? on Sun, 13 Aug 2006 18:16:18 GMT]]></title><description><![CDATA[<p>Also der Beitrag, der lange, der war es echt. Kenn mich jetzt soweit aus, dass ich meine Fehler selber finde, vielen Dank dafür!</p>
<p>Nur eine Frage noch zu den &quot;neuen&quot; Befehlen.<br />
Du hast gesagt, dass meistens &quot;einfach nur ein l&quot; davor steht, das funktioniert zum Beispiel mit lstrcpy perfekt, nur gibt es kein lsizeof weswegen Dinge wie</p>
<pre><code>sizeof(keyStroke) / sizeof(wchar_t) - 1
</code></pre>
<p>entstehen, gibts da keine schönere Lösung.</p>
<p>Außerdem funktioniert das bei mir nicht richtig.</p>
<p>Was ich inetwa habe:</p>
<p>Ein Fenster, in dem, in einem Rechteck, ein Text angezeigt werden soll. Jener Text zeigt an, ob eine Pfeiltaste gedrückt wurde, wenn nicht steht &quot;No Arrow pressed&quot;.</p>
<p>Relevante Codeausschnitte sehen bei mir so aus:</p>
<pre><code>//Membervariable
wchar_t keyStroke[] = TEXT(&quot;Nothing pressed yet ...&quot;);

// ...

//wird eine Taste gedrückt (WM_KEYDOWN)

switch(wParam)
			{
				case VK_LEFT:
					lstrcpy(keyStroke,TEXT(&quot;Arrow: Left&quot;));
					break;

//und so weiter

// ...

//wird das Fenster gezeichnet findet sich folgender Befehl
DrawText(myHDC, keyStroke, sizeof(keyStroke) / sizeof(wchar_t) - 1, &amp;myRect, DT_CENTER|DT_TOP);
</code></pre>
<p>Das funktioniert ansich perfekt, außer das ich wieder Dinge wie &quot;Arrow:Left|||||&quot; zu sehen bekomme.</p>
<p>Deswegen frage ich nach einer Variante like lsizeof.</p>
<p>Gibt es irgendwo eine Liste mit all diesen Befehlen? Thx 4 help!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1116594</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1116594</guid><dc:creator><![CDATA[D*3ce]]></dc:creator><pubDate>Sun, 13 Aug 2006 18:16:18 GMT</pubDate></item><item><title><![CDATA[Reply to CreateWindow, Parameter 1 und 2 typecasten??? on Sun, 13 Aug 2006 19:45:17 GMT]]></title><description><![CDATA[<p>wenn unicode an kannste doch einfach lstrlen() nehmen ?</p>
<p><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/resources/strings/stringreference/stringfunctions/lstrlen.asp" rel="nofollow">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/resources/strings/stringreference/stringfunctions/lstrlen.asp</a><br />
(Links in der navi stehen weitere String Funktionen, das ganze ist auch in der Platform SDK Doku drin...)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1116657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1116657</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Sun, 13 Aug 2006 19:45:17 GMT</pubDate></item><item><title><![CDATA[Reply to CreateWindow, Parameter 1 und 2 typecasten??? on Sun, 13 Aug 2006 19:53:08 GMT]]></title><description><![CDATA[<p>Okay, das ist natürlich einfacher, vielen Dank.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1116661</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1116661</guid><dc:creator><![CDATA[D*3ce]]></dc:creator><pubDate>Sun, 13 Aug 2006 19:53:08 GMT</pubDate></item></channel></rss>