DLL 中 使用 LoadString(hInstance, IDS_APP_NAME, szBuffer, sizeof(szBuffer));
时间: 2024-03-20 17:40:01 浏览: 14
在 DLL 中使用 LoadString 函数也是类似的,只需要将 hInstance 参数设置为 DLL 模块的句柄即可。
在 DLL 中使用 LoadString 函数需要以下几个步骤:
1. 在 DLL 项目中定义 String Table 资源,可以使用资源编辑器添加和编辑 String Table 中的字符串。
2. 在 DLL 项目中定义一个导出函数,该函数可以在其他应用程序中调用,用于加载 String Table 中的字符串资源。
```
extern "C" __declspec(dllexport) int GetStringResource(
HINSTANCE hInstance, // DLL 模块句柄
UINT uID, // 字符串资源 ID
LPTSTR lpBuffer, // 缓冲区指针
int nBufferMax // 缓冲区大小
)
{
return LoadString(hInstance, uID, lpBuffer, nBufferMax);
}
```
其中,hInstance 表示 DLL 模块句柄,uID 表示字符串资源 ID,lpBuffer 表示缓冲区指针,nBufferMax 表示缓冲区大小。
3. 在其他应用程序中调用 DLL 中导出的函数,通过该函数加载 DLL 中的字符串资源。
```
HINSTANCE hDll = LoadLibrary(_T("MyDLL.dll"));
if (hDll != NULL)
{
typedef int (*PFNGetStringResource)(HINSTANCE, UINT, LPTSTR, int);
PFNGetStringResource pfnGetStringResource = (PFNGetStringResource)GetProcAddress(hDll, "GetStringResource");
if (pfnGetStringResource != NULL)
{
TCHAR szBuffer[256];
pfnGetStringResource(hDll, IDS_APP_NAME, szBuffer, sizeof(szBuffer));
MessageBox(hWnd, szBuffer, _T("提示"), MB_OK);
}
FreeLibrary(hDll);
}
```
其中,LoadLibrary 函数用于加载 DLL 模块,GetProcAddress 函数用于获取 DLL 中导出函数的地址,pfnGetStringResource 表示导出函数地址,IDS_APP_NAME 表示字符串资源 ID,szBuffer 表示存储字符串的缓冲区。最后,调用 pfnGetStringResource 函数即可加载 DLL 中的字符串资源。
需要注意的是,在 DLL 中使用 LoadString 函数加载字符串资源时,需要使用 DLL 模块的句柄作为 hInstance 参数,而不是应用程序实例句柄。