0

我对这段代码有疑问:

    int
WINAPI
Getdesc(IN WORD wcode,
         OUT LPWSTR lpBuf)
{
    WCHAR szDescription[256];
    int res = LoadStringW(NULL,wcode,szDescription,256);
    if(res == 0)
    { 

        wcscpy(lpBuf, L"Undefined");
        return 0;
    }
    else
    {
        wcscpy(lpBuf,szDescription);
        return 0;
     }
}

该函数被放置在一个 DLL 中,当我访问它时,它总是返回“未定义”,我认为我的 LoadString 调用有问题,但我无法弄清楚。我是 Windows 编程新手,任何帮助将不胜感激

4

1 回答 1

4

问题是您NULL作为HINSTANCE参数传递。这意味着您在可执行主机而不是 DLL 中查找资源。您必须传递 DLL 的模块句柄。您将获得该实例句柄作为传递给您的DllMain函数的第一个参数。

如果您使用 MSVC 进行编译,那么您可以使用它__ImageBase来获取模块句柄。我个人建议记下传递给的值DllMain是一种更简洁的方法。它避免了依赖于一个特定的编译器。

另请注意,GetLastError如果LoadString无法获取有关错误原因的更多信息,您可以致电。这很可能会帮助您识别故障。

于 2013-06-05T19:04:32.693 回答