Zugriff auf Ressourcen per String
-
Servus,
ich möchte Strings aus einer Resourcen-DLL laden. Der Standardweg ist bekanntlich folgender:
CString sText; HINSTANCE hDLL = LoadLibrary(_T("resource.dll")); sText.LoadStringW(hDLL, IDS_STRING_ID);Ich möchte aus mehreren Dialogen auf diese Resourcen-DLL zugreifen (Stichwort Lokalisierung). Einfach die IDs der Dialogelemente an die DLL weiterzureichen geht leider nicht, da die Integerwerte der IDs nicht global eindeutig sind, d.h. sie werden teilweise mehrfach verwendet.
Ich würde also gern auf die folgende Art auf die Strings zugreifen:
CString sText; HINSTANCE hDLL = LoadLibrary(_T("resource.dll")); sText.LoadStringW(hDLL, _T("IDS_Klassenname_STRING_ID")); // Hier Zugriff per StringDie Frage ist also: Gibt es eine Möglichkeit, einen String in einen Resourcenidentifier umzuwandeln?
Noch ein Beispiel:// So geht's: CWnd* pWnd = GetDlgItem(IDB_BUTTON1); // So hätte ich's gern: CWnd* pWnd = GetDlgItem(String2ID("IDB_BUTTON1"));Viele Grüße,
Thomas
-
Leider führt auch
HRSRC hRes = FindResource(hDLL, _T("IDS_Klassenname_STRING_ID"), RT_STRING);nicht zum Erfolg. (hRes ist NULL)

-
Strings und Controls haben immer IDs. Alle anderen Ressourcen können auch unter einem Namen abgelegt werden.