dll中的MFC LoadString失败

时间:2009-07-23 09:02:31

标签: c++ mfc

我在dll中有一个静态函数,它使用LoadString()从资源加载字符串。当我从那个dll调用这个函数时一切正常。但是,当我从其他模块(activeX控件)调用此函数时,LoadString失败,错误为ERROR_RESOURCE_NAME_NOT_FOUND。我尝试使用AFX_MANAGE_STATE宏,但它没有帮助。有谁知道这里有什么问题,解决方案是什么?

3 个答案:

答案 0 :(得分:6)

如果字符串位于不同dll的资源中,则必须从其他模块设置资源句柄以使其工作。尝试使用AfxSetResourceHandle方法设置资源句柄。

答案 1 :(得分:5)

如果未将模块实例的句柄传递给LoadString,则它使用默认资源句柄。默认情况下,默认资源句柄设置为当前模块句柄。因此,如果您从具有必需字符串的模块调用LoadString,那么一切正常。如果您从其他模块中调用LoadString,则无法找到所需的字符串,您将收到错误ERROR_RESOURCE_NAME_NOT_FOUND。您可以通过调用AfxSetResourceHandle函数来覆盖它。

或者您可以通过将资源句柄传递给LoadString来明确选择具有资源的模块。

答案 2 :(得分:2)

请确保在函数开头调用AFX_MANAGE_STATE,以便加载适当的(dll或exe)资源。 也可以看看: http://msdn.microsoft.com/en-us/library/ba9d5yh5(VS.80).aspx