none
C++ DLL Resourcen RRS feed

  • Frage

  • Also, Ich habe schon viel recherchiert, aber ich habe noch nicht gerade viel gefunden.

    Ich möchte gern meine Text für meinen MFC-Dialog in eine DLL auslagern. Nun habe ich die DLL mit den Strings, weis aber nicht was ich mit dem Compiler machen muss. Ich benutze Visual Studio 2010 Professional. Und bitte schritt für schritt Anleitung, danke.

    Donnerstag, 4. November 2010 15:23

Antworten

  • Du lädst erst einmal Deine Ressourcen DLL wie gewohnt mit LoadLibrary und holst dann mit LoadString Deinen String aus der DLL.

    CodeSchnipsel:

    HINSTANCE DllHandle;
    TCHAR String[256];
    int NumChars;
    int BufferSize;
    
    ...
    DllHandle=LoadLibrary(DllPathAndName);
    ...
    
    BufferSize=sizeof(String)/sizeof(TCHAR);
    NumChars=LoadString(DllHandle, IDS_YOURSTRING, String, BufferSize);

     

    • Als Antwort markiert KK Senior Donnerstag, 4. November 2010 18:28
    Donnerstag, 4. November 2010 16:50

Alle Antworten

  • Also, Ich habe schon viel recherchiert, aber ich habe noch nicht gerade
    viel gefunden.

    Nicht! Dann hast Du aber nicht groß gesucht?

    Ich möchte gern meine Text für meinen MFC-Dialog in eine DLL auslagern. Nun
    habe ich die DLL mit den Strings, weis aber nicht was ich mit dem Compiler
    machen muss. Ich benutze Visual Studio 2010 Professional. Und bitte schritt
    für schritt Anleitung, danke.

    Das war mein erster größrer Beitrag überhaupt im Netz ;)
    http://www.mpdvc.de/artikel/MultilingualeProgramme.htm


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    Donnerstag, 4. November 2010 15:33
    Moderator
  • Danke ersteinmal für den Link.
    Wie kann ich nun aber auf meinen String IDS_TEXT1EN zugreifen? Das habe ich nicht sorecht verstanden.
    VisualCPlusPlus
    Donnerstag, 4. November 2010 16:06
  • Du lädst erst einmal Deine Ressourcen DLL wie gewohnt mit LoadLibrary und holst dann mit LoadString Deinen String aus der DLL.

    CodeSchnipsel:

    HINSTANCE DllHandle;
    TCHAR String[256];
    int NumChars;
    int BufferSize;
    
    ...
    DllHandle=LoadLibrary(DllPathAndName);
    ...
    
    BufferSize=sizeof(String)/sizeof(TCHAR);
    NumChars=LoadString(DllHandle, IDS_YOURSTRING, String, BufferSize);

     

    • Als Antwort markiert KK Senior Donnerstag, 4. November 2010 18:28
    Donnerstag, 4. November 2010 16:50
  • Bei mir findet er den String immer nicht.

    VisualCPlusPlus
    Donnerstag, 4. November 2010 17:02
  • Also ich habe eben das Stückchen Code hier probiert, und es funktioniert ohne Probleme. In meiner DLL ist unter der ID 1000 ein String gespeichert, der auch korrekt gelesen wurde:

    HINSTANCE dll; 
    TCHAR c[256]; 
    int num; 
    int BufferSize; 
    
    // Meine DLL ist im debug verzeichnis
    // dll sollte !=NULL sein bei erfolgreich geladener DLL
    dll=LoadLibrary(_T(".\\debug\\DELang.dll")); BufferSize=sizeof(c)/sizeof(TCHAR); num=LoadString(dll, 1000, c, BufferSize); 

    Donnerstag, 4. November 2010 18:17
  • Ich habe es hingekriegt. Ich musste ja den Wert, und nicht die ID angeben!, Danke!

    VisualCPlusPlus
    Donnerstag, 4. November 2010 18:28
  • Ich habe es hingekriegt. Ich musste ja den Wert, und nicht die ID angeben!,
    Danke!

    Die ID ist doch der Wert!


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    Freitag, 5. November 2010 07:01
    Moderator
  • kleines Missverständnis.

    mit ID meinte ich IDS_STRING123 o.ä.


    VisualCPlusPlus
    Donnerstag, 18. November 2010 18:01