首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

在DLL中 LoadString为什么会失败?解决方案

2012-01-19 
在DLL中 LoadString为什么会失败?我在DLL中做了一个字符串表,然后动态创建菜单,菜单标题就是字符串表里的

在DLL中 LoadString为什么会失败?
我在DLL中做了一个字符串表,然后动态创建菜单,菜单标题就是字符串表里的值

我用了两种loadstring都失败了,csting   和   API中的   loadstring   都未读出来。
 
调试跟踪时到这语句时   报的问题的是   指定资源错误或不存在之类的提示。

这是为什么呢???   迷茫ing……

[解决办法]
int LoadString(
HINSTANCE hInstance,
UINT uID,
LPTSTR lpBuffer,
int cchBufferMax
);

可能是hInstance指定的不对, 资源在DLL中, hInstance应该是那个DLL的HANDLE, 而不是它的客户EXE的HANDLE
[解决办法]
在DLL的输出函数的开始应该要加上AFX_MANAGE_STATE(AfxGetStaticModuleState());来切换Module State。当前的resource handle是在Module State中保存的,LoadString需要这个Resource Handle来知道应该在那个Module中Load resource,不切换就会出现找不到资源的错误。正确的代码如下:
void MyDllExportedFunc()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// ...
}

热点排行