我们已将所有字符串移动到MFC应用程序的资源(和附属DLL)。现在主要语言被合并到EXE本身,所以当我调用LoadString()时,我可以传入exe的模块句柄。
但是,我需要使这个通用 - 如何以通用方式获取模块句柄并确保我在适当的时候从卫星DLL加载字符串?我们需要为当前加载的资源DLL获取适当的模块。 (或如果是英语的话)
:: LoadString()方法将句柄作为其第一个参数 - 我们只是使用当前exe的句柄。
我是否必须确定是否需要加载DLL,或者Windows是否自动为我执行此操作。从我读过的文档中不清楚。
This indicates that MFC does it automatically。 那我怎么得到那个hmodule?
答案 0 :(得分:5)
使用LoadLibrary
加载资源dll后,存储其HMODULE
(由LoadLibrary
返回)并将其传递给LoadString
函数(以及到其他资源功能)。
顺便说一句,如果您专门使用资源DLL来存储资源(即没有包含代码),您可以使用LoadLibraryEx
LOAD_LIBRARY_AS_DATAFILE
选项加载它们,使加载有点更快并避免由于资源dll中嵌入的恶意代码而导致的可能漏洞(但在这种情况下为be careful with dialogs)。
答案 1 :(得分:1)
您是否使用LoadLibrary(Ex)加载库?记住它返回的句柄。
否则使用GetModuleHandle(“资源模块的名称”)。
答案 2 :(得分:1)