<?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[Frage zu wchar_t]]></title><description><![CDATA[<p>Hallo, ich bin neu hier und habe auch gleich eine Frage.</p>
<p>Ich befasse mich zurzeit mit DirectX und bei der Ausgabe eines Schriftzuges bin ich auf ein Problem gestoßen. Ich muss eine Schriftart zuweisen und das mit D3DXFONT_DESC. Meine font Instanz möchte gerne bei FaceName ein Font Name genannt bekommen. In meinem DirectX Buch steht folgender Weg.</p>
<pre><code class="language-cpp">LOGFONT LogFont = {0};
strcpy(LogFont.lfFaceName,&quot;Arial&quot;); //hier meldet mit der Compiler einen Fehler hier möchte er ein wchar haben.
</code></pre>
<p>es wäre ja zu leicht gewesen, wenn das funktioniert hätte. In den Forum FAQ fand ich folgenden Weg.</p>
<p>Programmiert habe ich das ganze mit Visual Studio .Net 2005, es handelt sich dabei um eine Win32 Anwendung in C++.</p>
<pre><code class="language-cpp">...
void CreateD3DFont(void)
{
	// Struktur für das Font festlegen
	D3DXFONT_DESC font = {0}; //ich nutze kein LOGFONT, weil D3DXCreateFontIndirect eine Instanz von D3DXFONT_DESC haben will

	char *fontname = &quot;Arial&quot;; 
	wchar_t *Widen; 
	_USE(cout.getloc(), ctype&lt;wchar_t&gt; ).widen(fontname, fontname+5, Widen); //der Weg aus den Forum FAQ

	wcscpy(font.FaceName,Widen);

	D3DXCreateFontIndirect(lpD3DDevice,&amp;font,&amp;lpD3DFont);
}
</code></pre>
<p>Super, der Compiler ist zufrieden und führt mein DirectX Programm aus. Allerdings gibt er mir die Warnung aus, dass mein Gebilde veraltet ist und nicht Safe ist.</p>
<p>Folgendes gibt er mir da aus</p>
<p>Main.cpp<br />
f:\programmieren\c++\directx\erstes directx win\main.cpp(222) : warning C4996: 'std::ctype&lt;wchar_t&gt;::widen' wurde als veraltet deklariert<br />
f:\progs\vs2005\vc\include\xlocale(1936): Siehe Deklaration von 'std::ctype&lt;wchar_t&gt;::widen'<br />
Meldung: &quot;You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library&quot;<br />
f:\programmieren\c++\directx\erstes directx win\main.cpp(225) : warning C4996: 'wcscpy' wurde als veraltet deklariert<br />
f:\progs\vs2005\vc\include\string.h(250): Siehe Deklaration von 'wcscpy'<br />
Meldung: &quot;This function or variable may be unsafe. Consider using wcscpy_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.&quot;<br />
f:\programmieren\c++\directx\erstes directx win\main.cpp(222) : warning C4700: Die nicht initialisierte lokale Variable &quot;Widen&quot; wurde verwendet.</p>
<p>Ist jetzt nur die Frage wie ich es richtig löse? Ein Kollege meinte ich sollte nur mit string arbeiten, aber dann bekomme ich wieder Probleme bei der Zuweisung des Strings, der meine zu verwendende Schrift angibt. Denn hier wird ein WCHAR verlangt.</p>
<p>nich leichter geht es so, löst aber nicht das Problem mit der Kompiler Warung.</p>
<pre><code class="language-cpp">wchar_t *Widen = L&quot;Arial&quot;;
wcscpy(font.FaceName,Widen);
</code></pre>
<p>Ich hoffe jemand kann mir das erklären.</p>
<p>Grüße und Dank im Voraus</p>
<p>FireballGFX</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/172630/frage-zu-wchar_t</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 01:41:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/172630.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 Feb 2007 00:58:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu wchar_t on Wed, 07 Feb 2007 01:10:55 GMT]]></title><description><![CDATA[<p>Hallo, ich bin neu hier und habe auch gleich eine Frage.</p>
<p>Ich befasse mich zurzeit mit DirectX und bei der Ausgabe eines Schriftzuges bin ich auf ein Problem gestoßen. Ich muss eine Schriftart zuweisen und das mit D3DXFONT_DESC. Meine font Instanz möchte gerne bei FaceName ein Font Name genannt bekommen. In meinem DirectX Buch steht folgender Weg.</p>
<pre><code class="language-cpp">LOGFONT LogFont = {0};
strcpy(LogFont.lfFaceName,&quot;Arial&quot;); //hier meldet mit der Compiler einen Fehler hier möchte er ein wchar haben.
</code></pre>
<p>es wäre ja zu leicht gewesen, wenn das funktioniert hätte. In den Forum FAQ fand ich folgenden Weg.</p>
<p>Programmiert habe ich das ganze mit Visual Studio .Net 2005, es handelt sich dabei um eine Win32 Anwendung in C++.</p>
<pre><code class="language-cpp">...
void CreateD3DFont(void)
{
	// Struktur für das Font festlegen
	D3DXFONT_DESC font = {0}; //ich nutze kein LOGFONT, weil D3DXCreateFontIndirect eine Instanz von D3DXFONT_DESC haben will

	char *fontname = &quot;Arial&quot;; 
	wchar_t *Widen; 
	_USE(cout.getloc(), ctype&lt;wchar_t&gt; ).widen(fontname, fontname+5, Widen); //der Weg aus den Forum FAQ

	wcscpy(font.FaceName,Widen);

	D3DXCreateFontIndirect(lpD3DDevice,&amp;font,&amp;lpD3DFont);
}
</code></pre>
<p>Super, der Compiler ist zufrieden und führt mein DirectX Programm aus. Allerdings gibt er mir die Warnung aus, dass mein Gebilde veraltet ist und nicht Safe ist.</p>
<p>Folgendes gibt er mir da aus</p>
<p>Main.cpp<br />
f:\programmieren\c++\directx\erstes directx win\main.cpp(222) : warning C4996: 'std::ctype&lt;wchar_t&gt;::widen' wurde als veraltet deklariert<br />
f:\progs\vs2005\vc\include\xlocale(1936): Siehe Deklaration von 'std::ctype&lt;wchar_t&gt;::widen'<br />
Meldung: &quot;You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library&quot;<br />
f:\programmieren\c++\directx\erstes directx win\main.cpp(225) : warning C4996: 'wcscpy' wurde als veraltet deklariert<br />
f:\progs\vs2005\vc\include\string.h(250): Siehe Deklaration von 'wcscpy'<br />
Meldung: &quot;This function or variable may be unsafe. Consider using wcscpy_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.&quot;<br />
f:\programmieren\c++\directx\erstes directx win\main.cpp(222) : warning C4700: Die nicht initialisierte lokale Variable &quot;Widen&quot; wurde verwendet.</p>
<p>Ist jetzt nur die Frage wie ich es richtig löse? Ein Kollege meinte ich sollte nur mit string arbeiten, aber dann bekomme ich wieder Probleme bei der Zuweisung des Strings, der meine zu verwendende Schrift angibt. Denn hier wird ein WCHAR verlangt.</p>
<p>nich leichter geht es so, löst aber nicht das Problem mit der Kompiler Warung.</p>
<pre><code class="language-cpp">wchar_t *Widen = L&quot;Arial&quot;;
wcscpy(font.FaceName,Widen);
</code></pre>
<p>Ich hoffe jemand kann mir das erklären.</p>
<p>Grüße und Dank im Voraus</p>
<p>FireballGFX</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1224177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1224177</guid><dc:creator><![CDATA[FireballGFX]]></dc:creator><pubDate>Wed, 07 Feb 2007 01:10:55 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu wchar_t on Wed, 07 Feb 2007 07:23:01 GMT]]></title><description><![CDATA[<p>Die beiden C4996-Warnungen kannst du umgehen, indem du auf &quot;sichere&quot; Versionen der angegebenen Funktionen ausweichst (in der MSDN müsste stehen, welche das sind) - oder ausschalten, indem du _CRT_SECURE_NO_DEPRECATE in die Compileroptionen als vordefiniertes MAkro einträgt.</p>
<p>Die C4700-Warnung ist das größere Problem - wcscpy() erwartet von dir, daß du einen entsprechend großen Speicherplatz bereitstellst, wo es die Daten hinkopieren kann. Den mußt du z.B. per new anfordern (oder die Variable als wchar_t-Array definieren).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1224204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1224204</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 07 Feb 2007 07:23:01 GMT</pubDate></item></channel></rss>