<?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[Wie kann man die Sprache der Dialogelemente zur Laufzeit umändern???]]></title><description><![CDATA[<p>Hi,</p>
<p>ich hab ein Programm (mit VS Embedded geschrieben), dass sämtliche Dialogelementbezeichnungen aus einer Stringtable liest. In dieser Stringtable stehen alle im Programm verwendeten Strings als Resourcen drin (Die Sprache ist hier Englisch)...</p>
<p>Im Programm wird nun eine Buttonbeschriftung ungefähr so erzeugt:<br />
myButton.SetWindowText(LoadString(IDS_SOME_STRING));</p>
<p>====&gt;soweit so gut....jetzt wollte ich das Programm mehrsprachig machen. Rein von der Vorstellung her, hab ich gedacht, es funktioniert so, dass man einfach im Ressourceneditor eine zweite Stringtable erzeugt und dort die selben Stringresourcen (also die selben IDs) einfügt und dann halt einfach die Stringinhalte in ne andere Sprache übersetzt...dann müßte man nur noch irgendwann im Programm sagen, welche Stringtable man benutzen will....</p>
<p>if Deutsch<br />
Lade deutsche Stringtable<br />
else<br />
Lade Englische Stringtable</p>
<p>-------------------------------------------------------------------------------<br />
Würde es so ungefähr gehen?? Ich hab nämlich festgestellt, dass ich gar keine zweite Stringtable erzeugen kann...Wenn ich im Resourceneditor auf Insert Stringtable gehe, passiert gar nichts - Es ist immer noch nur die bereits vorhandene Table sichtbar....:(....</p>
<p>Und überhaupt, wie würde man dann zur Laufzeit die andere Stringtable reinladen können bzw. sage, dass man sich ab jetzt nur auf diese bezieht...???</p>
<p>===&gt;Hat jemand ne Ahnung, wie man hier prinipiell vorgeht??....evtl. mit codebeispielen?</p>
<p>BESTEN DANK!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/142557/wie-kann-man-die-sprache-der-dialogelemente-zur-laufzeit-umändern</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Jul 2026 19:45:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/142557.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 31 Mar 2006 14:59:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie kann man die Sprache der Dialogelemente zur Laufzeit umändern??? on Fri, 31 Mar 2006 14:59:21 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich hab ein Programm (mit VS Embedded geschrieben), dass sämtliche Dialogelementbezeichnungen aus einer Stringtable liest. In dieser Stringtable stehen alle im Programm verwendeten Strings als Resourcen drin (Die Sprache ist hier Englisch)...</p>
<p>Im Programm wird nun eine Buttonbeschriftung ungefähr so erzeugt:<br />
myButton.SetWindowText(LoadString(IDS_SOME_STRING));</p>
<p>====&gt;soweit so gut....jetzt wollte ich das Programm mehrsprachig machen. Rein von der Vorstellung her, hab ich gedacht, es funktioniert so, dass man einfach im Ressourceneditor eine zweite Stringtable erzeugt und dort die selben Stringresourcen (also die selben IDs) einfügt und dann halt einfach die Stringinhalte in ne andere Sprache übersetzt...dann müßte man nur noch irgendwann im Programm sagen, welche Stringtable man benutzen will....</p>
<p>if Deutsch<br />
Lade deutsche Stringtable<br />
else<br />
Lade Englische Stringtable</p>
<p>-------------------------------------------------------------------------------<br />
Würde es so ungefähr gehen?? Ich hab nämlich festgestellt, dass ich gar keine zweite Stringtable erzeugen kann...Wenn ich im Resourceneditor auf Insert Stringtable gehe, passiert gar nichts - Es ist immer noch nur die bereits vorhandene Table sichtbar....:(....</p>
<p>Und überhaupt, wie würde man dann zur Laufzeit die andere Stringtable reinladen können bzw. sage, dass man sich ab jetzt nur auf diese bezieht...???</p>
<p>===&gt;Hat jemand ne Ahnung, wie man hier prinipiell vorgeht??....evtl. mit codebeispielen?</p>
<p>BESTEN DANK!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1028117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1028117</guid><dc:creator><![CDATA[maxpower24]]></dc:creator><pubDate>Fri, 31 Mar 2006 14:59:21 GMT</pubDate></item><item><title><![CDATA[Reply to Wie kann man die Sprache der Dialogelemente zur Laufzeit umändern??? on Sat, 01 Apr 2006 08:23:35 GMT]]></title><description><![CDATA[<p>Lies dir mal <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-130092.html" rel="nofollow">diesen Artikel</a> im Magazin durch - das dürfte helfen <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/1028438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1028438</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 01 Apr 2006 08:23:35 GMT</pubDate></item><item><title><![CDATA[Reply to Wie kann man die Sprache der Dialogelemente zur Laufzeit umändern??? on Tue, 04 Apr 2006 19:53:43 GMT]]></title><description><![CDATA[<p>Hey,</p>
<p>danke....der Artikel ist spitzenmäßig!!!!</p>
<p>Aber, jetzt steh ich vor dem nächsten Problem....meine bestehende Resourcendatei aus der EXE ist recht groß....wie kann ich die denn jetzt in eine der neu erstellten dlls kriegen??....Gibts da vielleicht sowas wie ein import??...</p>
<p>Ansonsten bleibt mir whl nix anderes als mühsam die Stringtables abzutippen oder wie???...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1030598</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1030598</guid><dc:creator><![CDATA[maxpower24]]></dc:creator><pubDate>Tue, 04 Apr 2006 19:53:43 GMT</pubDate></item><item><title><![CDATA[Reply to Wie kann man die Sprache der Dialogelemente zur Laufzeit umändern??? on Tue, 04 Apr 2006 22:46:22 GMT]]></title><description><![CDATA[<p>Du könntest die .rc Datei in deinem Projekt kopieren und in das neue Projekt einfügen. Alles was du nicht brauchst kannst du dann raus schmeißen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1030682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1030682</guid><dc:creator><![CDATA[guenni81]]></dc:creator><pubDate>Tue, 04 Apr 2006 22:46:22 GMT</pubDate></item><item><title><![CDATA[Reply to Wie kann man die Sprache der Dialogelemente zur Laufzeit umändern??? on Tue, 11 Apr 2006 13:27:09 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>nochmal eine kleine Frage zu diesem Thema....das klappt alles wunderbar...nur hab ich jetzt so ein bissl Performanzprobleme (die GUI flackert ein bissl, wenn sie oft aktualisiert wird...)...das liegt vor allem an folgendem...</p>
<p>Ich habe eine Klasse StringLocalizer geschrieben, die das ganze LoadDll und LoadString kapselt. Es gibt hier z.b. die Methode<br />
CString getStringRes(unsigned long resourceID)<br />
, der man eine ID zu der Stringressource übergibt.</p>
<p>Die Dialoge rufen also für jedes Dialogelemeent z.b.<br />
myButton.SetWindowText(localizer.getStringRes(IDS_TEXT_FOR_BUTTON));</p>
<p>Ok, soweit so gut....in der Methode getStringRes() passiert jetzt das ganze LoadDll -, LoadString- und FreeLibrary-zeug...und das, kann ich mir vorstellen, geht doch ziemlich auf die Performance, wenn für jedes Dialogelement erstmal die Dll geladen werden muss und danach wieder freigegeben werden muß...</p>
<p>Kann man nicht ganz zu Beginn des Programms die Dll laden und erst ganz am Ende wieder freigeben???? Bei mir kriege ich da Assertions....:(</p>
<p>*******Code der Methhode getStringRes()<br />
CString getStringRes(unsigned long resourceId){<br />
HINSTANCE hDll, hExe;</p>
<p>//hole Dll<br />
hExe = AfxGetResourceHandle();<br />
hDll = AfxLoadLibrary(&quot;english.dll&quot;);</p>
<p>//lade string<br />
CString str;<br />
str.LoadString(resourceId);</p>
<p>//gib dll wieder frei<br />
AfxSetResourceHandle(hExe);<br />
AfxFreeLibrary(hDll);</p>
<p>return str;<br />
}</p>
<p>DANKE für jeden Hinweis...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035252</guid><dc:creator><![CDATA[maxpower24]]></dc:creator><pubDate>Tue, 11 Apr 2006 13:27:09 GMT</pubDate></item><item><title><![CDATA[Reply to Wie kann man die Sprache der Dialogelemente zur Laufzeit umändern??? on Tue, 11 Apr 2006 14:45:49 GMT]]></title><description><![CDATA[<p>Doch sollte eigentlich gehen. Du musst dir nur das Handle für die DLL Datei das du nach dem öffnen hast aufheben und für deine Funktionen die dies benötigen zugänglich machen. Wenn das Programm beendet wird kannst du die DLL Datei wieder freigeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035325</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035325</guid><dc:creator><![CDATA[guenni81]]></dc:creator><pubDate>Tue, 11 Apr 2006 14:45:49 GMT</pubDate></item></channel></rss>