<?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[Variablen nach LPCTSTR casten]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich danke Euch schon mal im voraus fürs helfen.</p>
<p>Ich stosse immer wieder auf das selbe Problem, wie caste ich einen string oder char oder was auch immer zu einem LPCTSTR.</p>
<p>Natürlich könnte ich den Zeichensatz auf Multi-Byte-Zeichensatz wechseln, aber Unicode ist im wesentlicheren Sinn besser, wenn man sein Programm auf verschiedenen XP PC's mit anderen Zeichensatz laufen lassen möchte.</p>
<p>Oder versteh ich da etwas falsch?</p>
<p>Nun wenn ich jetzt zum beispiel ein char[] oder ein string oder sonst was habe, wie cast ich das am besten zu einem LPCTSTR?</p>
<p>ich habe schon das gesehen, aber das gibt bei mir irgend ein pseudo Text aus:</p>
<p>int len = MultiByteToWideChar(CP_ACP, 0, &quot;variable&quot;, 0, NULL, 0);<br />
g_lpwFps = (LPWSTR)malloc(len);<br />
MultiByteToWideChar(CP_ACP, 0, g_cfps, 1, g_lpwFps, len)</p>
<p>Einige Beispiele:</p>
<p>Ich würde eben gerne ein SendMessage ausgeben in einem Edit-Feld...darum frage ich.</p>
<pre><code class="language-cpp">SendMessage(g_hwndEdit, WM_SETTEXT, 0, (LPARAM)test.c_str());
</code></pre>
<p>Nur das Funktioniert leider nicht, nur wenn ich TEXT(&quot;test&quot;) oder L&quot;test&quot; mache...</p>
<p>Könnt Ihr mir weiterhelfen, wie ich dieses Problem am besten lösen könnte und ob mein Gedanke stimmt, das Unicode im wesentlicheren Sinn besser ist..</p>
<p>Danke nochmals.</p>
<p>Gruess</p>
<p>Manu</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/220755/variablen-nach-lpctstr-casten</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 18:01:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/220755.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 20 Aug 2008 14:02:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Variablen nach LPCTSTR casten on Wed, 20 Aug 2008 14:02:17 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich danke Euch schon mal im voraus fürs helfen.</p>
<p>Ich stosse immer wieder auf das selbe Problem, wie caste ich einen string oder char oder was auch immer zu einem LPCTSTR.</p>
<p>Natürlich könnte ich den Zeichensatz auf Multi-Byte-Zeichensatz wechseln, aber Unicode ist im wesentlicheren Sinn besser, wenn man sein Programm auf verschiedenen XP PC's mit anderen Zeichensatz laufen lassen möchte.</p>
<p>Oder versteh ich da etwas falsch?</p>
<p>Nun wenn ich jetzt zum beispiel ein char[] oder ein string oder sonst was habe, wie cast ich das am besten zu einem LPCTSTR?</p>
<p>ich habe schon das gesehen, aber das gibt bei mir irgend ein pseudo Text aus:</p>
<p>int len = MultiByteToWideChar(CP_ACP, 0, &quot;variable&quot;, 0, NULL, 0);<br />
g_lpwFps = (LPWSTR)malloc(len);<br />
MultiByteToWideChar(CP_ACP, 0, g_cfps, 1, g_lpwFps, len)</p>
<p>Einige Beispiele:</p>
<p>Ich würde eben gerne ein SendMessage ausgeben in einem Edit-Feld...darum frage ich.</p>
<pre><code class="language-cpp">SendMessage(g_hwndEdit, WM_SETTEXT, 0, (LPARAM)test.c_str());
</code></pre>
<p>Nur das Funktioniert leider nicht, nur wenn ich TEXT(&quot;test&quot;) oder L&quot;test&quot; mache...</p>
<p>Könnt Ihr mir weiterhelfen, wie ich dieses Problem am besten lösen könnte und ob mein Gedanke stimmt, das Unicode im wesentlicheren Sinn besser ist..</p>
<p>Danke nochmals.</p>
<p>Gruess</p>
<p>Manu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1568314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1568314</guid><dc:creator><![CDATA[mRXXo]]></dc:creator><pubDate>Wed, 20 Aug 2008 14:02:17 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen nach LPCTSTR casten on Wed, 20 Aug 2008 14:47:34 GMT]]></title><description><![CDATA[<p>du solltest statt char TCHAR verwenden und vor Strings<br />
immer ein TEXT(&quot;&quot;) davor setzten.<br />
Dass Unicode besser als Multi Byte ist, kann man so nicht sagen.<br />
Mit UNICODE kann man zwar auch asiatische Zeichen usw. darstellen,<br />
jedoch laufen UNICODE Programme nicht auf Windows 95/98 und benutzen für jedes<br />
Zeichen 2 Bytes.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1568363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1568363</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 20 Aug 2008 14:47:34 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen nach LPCTSTR casten on Wed, 20 Aug 2008 15:42:21 GMT]]></title><description><![CDATA[<p>wie meinst du das mit Text(&quot;&quot;) vor den string setzen?</p>
<p>etwa so:</p>
<pre><code class="language-cpp">std::string test = &quot;test&quot;;
SendMessage(HWND, WM..., 0, (LPARAM)TEXT(&quot;&quot;)test);
</code></pre>
<p>oder wie? :S</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1568415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1568415</guid><dc:creator><![CDATA[mRXXo]]></dc:creator><pubDate>Wed, 20 Aug 2008 15:42:21 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen nach LPCTSTR casten on Wed, 20 Aug 2008 15:52:07 GMT]]></title><description><![CDATA[<p>ich bin jetzt eigentlich davon ausgegangen, dass du C Strings benutzt also</p>
<pre><code class="language-cpp">TCHAR text[100] = TEXT(&quot;STRING&quot;);
</code></pre>
<p>dieses text könntest du dann verwenden ohne es noch umzuwandeln.<br />
Wenn du std::string verwendest und UNICODE solltest du wstring benutzen,<br />
also etwa so:</p>
<pre><code class="language-cpp">std::wstring text = TEXT(&quot;STRING&quot;);
</code></pre>
<p>dann könntest du es mit text.c_str() verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1568423</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1568423</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 20 Aug 2008 15:52:07 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen nach LPCTSTR casten on Wed, 20 Aug 2008 18:14:23 GMT]]></title><description><![CDATA[<p>So ist es aber nicht dynamisch..</p>
<p>Wenn man im TEXT(Variable) machen würde, gibts ein Fehler, da der Compiler dann die Variable nicht mehr erkennt.. Die Variable heisst ja dann LVariable...</p>
<p>Hast du noch ne andere Variante?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1568500</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1568500</guid><dc:creator><![CDATA[mRXXo]]></dc:creator><pubDate>Wed, 20 Aug 2008 18:14:23 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen nach LPCTSTR casten on Wed, 20 Aug 2008 20:19:28 GMT]]></title><description><![CDATA[<p>Du sollst ja dem TEXT Makro keine Variablen übergeben, sondern Strings.<br />
Und falls du Variablen meinst, zum übergeben an Funktionen,<br />
da brauchst du TEXT nicht, denn wenn du die Variable mit TEXT initialisiert hast, kommt da auch kein Fehler.<br />
Du könntest gerne ein Code Beispiel posten wenn du willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1568550</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1568550</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 20 Aug 2008 20:19:28 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen nach LPCTSTR casten on Wed, 20 Aug 2008 21:11:15 GMT]]></title><description><![CDATA[<p>Ich werde morgen früh Code posten, wenn ich auf der Arbeit bin...</p>
<p>Du kannst dir, dass in etwas so vorstellen...</p>
<p>1 Beispiel:</p>
<p>Ich habe eine COPYDATASTRUCT Struktur mit einem lparam, welcher aber auch umgewandelt werden muss, ansonsten wird er falsch oder gar nicht angezeigt auf dem Textfeld, teils stürzt er sogar ab!</p>
<p>2 Beispiel:</p>
<p>Ich habe einen int für die FPS berechnung und den möchte ich jetzt anzeigen... Das geschieht über eine DirectX Funktion, welche ein LPCTSTR verlangt... und wenn ich das so konventiere via &quot;MultiByteToWideChar&quot; zeigts nur so pseudo zeugs an...</p>
<p>Code folgt morgen früh gegen 8.00 . <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>
<p>Ich denke ich werd das eigentlich nie brauchen, aber nice to know ^^</p>
<p>Du würdest mir gar empfehlen auf Multi-Byte-Zeichensatz zu wechseln?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1568574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1568574</guid><dc:creator><![CDATA[mRXXo]]></dc:creator><pubDate>Wed, 20 Aug 2008 21:11:15 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen nach LPCTSTR casten on Thu, 21 Aug 2008 06:47:06 GMT]]></title><description><![CDATA[<p>Hier der Code:</p>
<p>1 Beispiel</p>
<p>Hier wird alles nur weitergeleitet..(Habe ich nur zur Verständnis gepostet)</p>
<pre><code class="language-cpp">LRESULT CALLBACK fnMyCallBack(int nCode, WPARAM wParam, LPARAM lParam)
{
COPYDATASTRUCT		CDS;
	HEVENT				Event;
CDS.dwData = 0;
	CDS.cbData = sizeof(Event);
	CDS.lpData = &amp;Event;

	Event.nCode			= nCode;
	Event.wParam		= wParam;
	Event.lParam		= lParam;
	Event.dwHookType	= WH_KEYBOARD;

SendMessage(g_hWnd, WM_COPYDATA, 0, (LPARAM)&amp;CDS);

..
}
</code></pre>
<p>Hier wird es wieder empfangen und probiert zu casten...</p>
<pre><code class="language-cpp">case WM_COPYDATA:
			HEVENT				Event;
			COPYDATASTRUCT* CDS = (COPYDATASTRUCT*)(lParam);

			if( CDS-&gt;cbData==sizeof(HEVENT) &amp;&amp; ((HEVENT*)CDS-&gt;lpData)-&gt;dwHookType == WH_KEYBOARD)
			{
				memcpy(&amp;Event, (HEVENT*)CDS-&gt;lpData, sizeof(HEVENT)); 

				int chch = 0;

				chch = MapVirtualKey((0xFF0000&amp;Event.lParam)&gt;&gt;16, 1);

				std::string penis = &quot;penis&quot;;

				SendMessage(g_hwndEdit, WM_SETTEXT, 0, (LPARAM)penis.c_str());
			}
</code></pre>
<p>Beim 2 Beispiel sieht es so aus:</p>
<p>int getFPS() &lt;-- gibt die FPS anzahl zurück und hier wird es eingefügt und probiert zu casten</p>
<pre><code class="language-cpp">g_pD3DFont-&gt;DrawText(NULL, (LPCTSTR)g_cfps, -1, &amp;g_rFontPosition, DT_LEFT, 0xff0000ff);
</code></pre>
<p>ich hoff das hilft dir weiter.. um mir zu helfen</p>
<p>Danke nochmals..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1568639</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1568639</guid><dc:creator><![CDATA[mRXXo]]></dc:creator><pubDate>Thu, 21 Aug 2008 06:47:06 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen nach LPCTSTR casten on Thu, 21 Aug 2008 07:56:27 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>für beide Fälle: Hast du daran gedacht, die Werte (beide sind numerisch, für den ersten Fall klar, weil <em>MapVirtualKey</em> einen <em>UINT</em> zurück gibt, im zweiten Fall wegen <em>getFPS</em>, welche ein <em>int</em> liefert) zunächst in Zeichenketten umzuwandeln, bevor du überhaupt an Funktionen übergibst, die Zeichenketten erwarten? Ein simpler Cast reicht hier nicht, denn diese Funktionen wollen ein Nullbyte (oder zwei, wenn UNICODE) als Abschluss sehen, was ein Cast natürlich nicht leisten kann.</p>
<p>MfG,</p>
<p>Probe-Nutzer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1568673</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1568673</guid><dc:creator><![CDATA[Probe-Nutzer]]></dc:creator><pubDate>Thu, 21 Aug 2008 07:56:27 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen nach LPCTSTR casten on Thu, 21 Aug 2008 08:25:24 GMT]]></title><description><![CDATA[<p>ja das ist mir schon klar, ich wandle bei in eine Zeichenketten um..</p>
<p>darum auch g_cFps .. das c vor Fps bedeutet char.. <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>
<p>aber was meinst du mit:</p>
<blockquote>
<p>Ein simpler Cast reicht hier nicht, denn diese Funktionen wollen ein Nullbyte (oder zwei, wenn UNICODE) als Abschluss sehen, was ein Cast natürlich nicht leisten kann.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1568697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1568697</guid><dc:creator><![CDATA[mRXXo]]></dc:creator><pubDate>Thu, 21 Aug 2008 08:25:24 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen nach LPCTSTR casten on Thu, 21 Aug 2008 08:45:24 GMT]]></title><description><![CDATA[<blockquote>
<p>ja das ist mir schon klar, ich wandle bei in eine Zeichenketten um..</p>
</blockquote>
<p>Da es im Code nicht zu sehen war, und alle Mal eine Absturzursache ist, nahm ich an, dass dies das Problem sein könnte.</p>
<blockquote>
<p>darum auch g_cFps .. das c vor Fps bedeutet char.. <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>
</blockquote>
<p>Und ich dachte natürlich c für <em>count</em> <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>
<p>mRXXo schrieb:</p>
<blockquote>
<p>aber was meinst du mit:</p>
<blockquote>
<p>Ein simpler Cast reicht hier nicht, denn diese Funktionen wollen ein Nullbyte (oder zwei, wenn UNICODE) als Abschluss sehen, was ein Cast natürlich nicht leisten kann.</p>
</blockquote>
</blockquote>
<p><em>DrawText</em> und <em>SendMessage</em> benötigen nullterminierte Zeichenketten, die man eben erhält, wenn man vorher die numerischen Werte in Zeichenketten umwandelt, und dann erst die so erhaltenen Zeichenketten nach <em>LPARAM</em> bzw. <em>LPCTSTR</em> castet.</p>
<p>Einen anderen Fehler sehe ich nicht, kannst du also zeigen, wie du die Umwandlung machst?</p>
<p>MfG,</p>
<p>Probe-Nutzer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1568713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1568713</guid><dc:creator><![CDATA[Probe-Nutzer]]></dc:creator><pubDate>Thu, 21 Aug 2008 08:45:24 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen nach LPCTSTR casten on Thu, 21 Aug 2008 09:15:33 GMT]]></title><description><![CDATA[<p>Probe-Nutzer schrieb:</p>
<blockquote>
<p><em>DrawText</em> und <em>SendMessage</em> benötigen nullterminierte Zeichenketten, die man eben erhält, wenn man vorher die numerischen Werte in Zeichenketten umwandelt, und dann erst die so erhaltenen Zeichenketten nach <em>LPARAM</em> bzw. <em>LPCTSTR</em> castet.</p>
<p>Probe-Nutzer</p>
</blockquote>
<p>Nicht unbedingt. Man kann als Parameter bei DrawText<br />
die Anzahl der Zeichen angeben. DrawText benutzt nur nullterminierte Zeichenketten, wenn man -1 einträgt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1568742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1568742</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 21 Aug 2008 09:15:33 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen nach LPCTSTR casten on Thu, 21 Aug 2008 11:03:33 GMT]]></title><description><![CDATA[<p>Ich habe SendMessage ersetzt, da es mit PostMessage ohne Probleme läuft.</p>
<p>Siehe da:</p>
<pre><code class="language-cpp">HEVENT				Event;
			COPYDATASTRUCT* CDS = (COPYDATASTRUCT*)(lParam);

			if( CDS-&gt;cbData==sizeof(HEVENT) &amp;&amp; ((HEVENT*)CDS-&gt;lpData)-&gt;dwHookType == WH_KEYBOARD)
			{
				memcpy(&amp;Event, (HEVENT*)CDS-&gt;lpData, sizeof(HEVENT)); 
				bool m_bCheck = (((DWORD)KF_UP&lt;&lt;16)&amp;Event.lParam)!=0;
				::PostMessage(g_hwndEdit, m_bCheck?WM_KEYDOWN:WM_KEYUP, Event.wParam, Event.lParam);			
			}
</code></pre>
<p>Natürlich nicht die beste Lösung, aber es läuft so.. <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>
<p>aber das mit em DrawText krieg ich nicht hin..</p>
<p>mein g_cfps habe ich so probiert zu casten..</p>
<pre><code class="language-cpp">int len = MultiByteToWideChar(CP_ACP, 0, g_cfps, 0, NULL, 0);
		g_lpwFps = (LPWSTR)malloc(len);
		MultiByteToWideChar(CP_ACP, 0, g_cfps, 1, g_lpwFps, len);
</code></pre>
<p>die draw methode:</p>
<pre><code class="language-cpp">g_pD3DFont-&gt;DrawText(NULL, g_lpwFps , -1, &amp;g_rFontPosition, DT_LEFT, 0xff0000ff);
</code></pre>
<p>Aber wie man auf dem Bild sehen kann, gibt es komische Zeichen aus...</p>
<p><a href="http://img178.imageshack.us/my.php?image=ausgabefp4.jpg" rel="nofollow">http://img178.imageshack.us/my.php?image=ausgabefp4.jpg</a></p>
<p>Edit:</p>
<p>Ich habe gerade gelesen, dass ich -1 habe... also wenn ich 0 oder halt was anderes nehme, kann ich normale wstring oder int benutzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1568823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1568823</guid><dc:creator><![CDATA[mRXXo]]></dc:creator><pubDate>Thu, 21 Aug 2008 11:03:33 GMT</pubDate></item></channel></rss>