使用MFC在不改变GUI的情况下动态读取卫星DLL

使用MFC在不改变GUI的情况下动态读取卫星DLL,mfc,Mfc,所以我有一个MFC应用程序,它在几个卫星DLL文件中有语言资源 当程序启动时,它加载正确的DLL并为应用程序资源设置它 我的问题是,是否可以在不将其设置为GUI的情况下从DLL读取STRINGTABLE条目?例如,我正在用意大利语运行应用程序,但出于某些原因,我希望允许该节目用西班牙语显示一些信息 我们可以访问卫星DLL的STRINGTABLE而不将其设置为应用程序GUI吗?使用 或 CString::LoadString(HINSTANCE-HINSTANCE、UINT-nID、WORD-wL

所以我有一个MFC应用程序,它在几个卫星DLL文件中有语言资源

当程序启动时,它加载正确的DLL并为应用程序资源设置它

我的问题是,是否可以在不将其设置为GUI的情况下从DLL读取STRINGTABLE条目?例如,我正在用意大利语运行应用程序,但出于某些原因,我希望允许该节目用西班牙语显示一些信息

我们可以访问卫星DLL的STRINGTABLE而不将其设置为应用程序GUI吗?

使用

CString::LoadString(HINSTANCE-HINSTANCE、UINT-nID、WORD-wLanguageID)

例如:

HINSTANCE hinst = LoadLibrary(L"path.dll");

CString str;
if (str.LoadString(hinst, ID_STRING100))
    AfxMessageBox(str);
您还可以调用
AfxSetResourceHandle(hinst)
,只需使用
str.LoadString(ID\u STRING100)
。例如:

AfxSetResourceHandle(hinst);
str.LoadString(ID_STRING100);
...

//reset resource handle:
AfxSetResourceHandle(AfxGetInstanceHandle());

谢谢但是如果我使用AfxSet。。。那么,它不会立即更改GUI界面吗?我会尝试你的第一个建议。我正在尝试找到MSDN的参考。我可以看到LoadString接受HINSTANCE,但它似乎是一个Win32 API调用,而不是CString派生。我添加了链接。如果使用
AfxSetResourceHandle
在查看自己的dll之前必须重置句柄。HINSTANCE和HMODULE是一样的。很多很多很多年以前,在一个遥远的星系里,他们是不同的。但是,它们现在是一样的。Raymond Chen:使用
AfxGetInstanceHandle()
获取主GUI进程的
HINSTANCE
。我不知道你用的是哪种方法,也许你可以编辑你的问题并展示出来。