我们已将所有字符串移至 MFC 应用程序的资源(和附属 DLL)。现在,主要语言已合并到 EXE 本身中,因此当我调用 LoadString() 时,我只需传入 exe 的模块句柄即可。
但是,我需要使其通用 - 如何以通用方式获取模块句柄,并确保在适当的情况下从卫星 DLL 加载字符串?我们需要为当前加载的资源 DLL 获取适当的模块。 (如果是英语,则为 exe)
::LoadString() 方法将句柄作为其第一个参数 - 我们只是使用当前 exe 的句柄。
我是否必须确定是否需要加载 DLL,还是 Windows 会自动为我执行此操作。从我读过的文档中尚不清楚。
这表明 MFC 自动执行此操作 http://msdn.microsoft.com/en-us/library/8fkteez0%28vs.71%29.aspx。
那么我如何获得该 hmodule 呢?
加载资源 dll 后LoadLibrary
,你存储它的HMODULE
(由返回LoadLibrary
)并将其传递给LoadString
函数(以及其他资源函数)。
顺便说一句,如果您专门使用资源 DLL 来存储资源(即其中不包含任何代码),您可以使用以下命令加载它们LoadLibraryEx
与LOAD_LIBRARY_AS_DATAFILE
选项,使加载速度更快,并避免由于嵌入资源 dll 中的恶意代码而可能被利用(但在本例中小心对话框 http://blogs.msdn.com/b/oldnewthing/archive/2005/10/05/477802.aspx).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)