mfc - 使用 MFC 在不更改 GUI 的情况下动态读取卫星 DLL
问题描述
所以我有一个 MFC 应用程序,它在几个卫星 DLL 文件中有语言资源。
当程序启动时,它会加载正确的 DLL 并将其设置为应用程序资源。
我的问题是,是否可以在不将其设置为 GUI 的情况下从 DLL 中读取 STRINGTABLE 条目?例如,我正在以意大利语运行应用程序,但出于某种原因,我想让节目以西班牙语显示一些信息。
我们可以在不将其设置为应用程序 GUI 的情况下访问卫星 DLL 的 STRINGTABLE 吗?
解决方案
使用
CString::LoadString(HINSTANCE hInstance, UINT nID)
或
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_STRING100)
。例子:
AfxSetResourceHandle(hinst);
str.LoadString(ID_STRING100);
...
//reset resource handle:
AfxSetResourceHandle(AfxGetInstanceHandle());
推荐阅读
- powershell - 为什么powershell会收集未捕获的值并将其作为数组返回
- azure - 超过 3 小时超时自动化 Runbook Azure
- c# - 在 MVVM / MVVM Light 中绑定单选按钮的正确方法是什么
- linux - EC2 - Codedeploy NPM 未找到错误
- javascript - 这个语言特性叫什么:[objectname]: { foo: 'Bar' },
- linux - Xampp/Lampp .jpg/.png 文件无法访问,而 .txt 文件权限相同 - Linux
- regex - 使用正则表达式检查一个字符串是否是另一个用逗号分隔的字符串的子字符串 [Perl]
- android - 如何使用共享首选项更改单击按钮的颜色
- python - 启动后用python程序复制文件
- tensorflow - Chainer 中的 grad_outputs 与 Tensorflow 中的 grad 用于后向函数