C++ 如何获取卫星资源DLL的模块句柄?(c+;+;visual studio)

C++ 如何获取卫星资源DLL的模块句柄?(c+;+;visual studio),c++,string,resources,C++,String,Resources,我们已将所有字符串移动到MFC应用程序的资源(和卫星DLL)。现在,主语言被合并到EXE本身中,所以当我调用LoadString()时,我可以只传入EXE的模块句柄 但是,我需要使这个通用性-如何以通用的方式获取模块句柄,并确保在适当的情况下从附属DLL加载字符串?我们需要为当前加载的资源DLL获取适当的模块。(如果为英语,则为exe) ::LoadString()方法将句柄作为其第一个参数—我们只使用当前exe的句柄 我是否必须确定是否需要加载DLL,或者Windows是否自动为我加载DLL。

我们已将所有字符串移动到MFC应用程序的资源(和卫星DLL)。现在,主语言被合并到EXE本身中,所以当我调用LoadString()时,我可以只传入EXE的模块句柄

但是,我需要使这个通用性-如何以通用的方式获取模块句柄,并确保在适当的情况下从附属DLL加载字符串?我们需要为当前加载的资源DLL获取适当的模块。(如果为英语,则为exe)

::LoadString()方法将句柄作为其第一个参数—我们只使用当前exe的句柄

我是否必须确定是否需要加载DLL,或者Windows是否自动为我加载DLL。从我读过的文件中不清楚


那么如何获取该hmodule呢?

在使用
LoadLibrary
加载资源dll后,存储其
hmodule
(由
LoadLibrary
返回)并将其传递给
LoadString
函数(以及其他资源函数)


顺便说一下,如果您使用资源DLL专门存储资源(即其中不包含任何代码),则可以使用
LoadLibraryEx
load\u LIBRARY\u AS\u DATAFILE
选项加载资源DLL,使加载速度加快,并避免由于资源DLL中嵌入的恶意代码而可能受到攻击(但在本例中).

您是否正在使用LoadLibrary(Ex)加载库?记住它返回的句柄


否则,请使用GetModuleHandle(“资源模块的名称”)。

使用

我认为exe会根据区域设置自动加载附属DLL?好吧,自动语言选择是当您在同一模块中拥有多个语言的同一资源时。这是引起我困惑的原因:@Tim:这是MFC特有的东西,Win32不会自动提供类似的东西。@Tim:那么你应该添加MFC标记,我不会回复,因为我对MFC一无所知<代码>:)否-我自己没有加载dll-我想我读到“正确”的卫星dll由操作系统自动加载。