loadStringW 函数 (winuser.h)
从与指定模块关联的可执行文件加载字符串资源,并将字符串复制到具有终止 null 字符的缓冲区中,或返回指向字符串资源本身的只读指针。
语法
int LoadStringW(
[in, optional] HINSTANCE hInstance,
[in] UINT uID,
[out] LPWSTR lpBuffer,
[in] int cchBufferMax
);
参数
[in, optional] hInstance
类型: HINSTANCE
其可执行文件包含字符串资源的模块实例的句柄。 若要获取应用程序本身的句柄,请使用 NULL 调用 GetModuleHandle 函数。
[in] uID
类型: UINT
要加载的字符串的标识符。
[out] lpBuffer
类型: LPTSTR
如果 cchBufferMax 为非零) ,则接收字符串 (缓冲区;如果 cchBufferMax) 为零,则为指向字符串资源本身 (只读指针。 必须有足够的长度,以便将指针保留 (8 字节) 。
[in] cchBufferMax
类型: int
缓冲区的大小(以字符为单位)。 如果字符串的长度超过指定的字符数,则字符串将被截断并以 null 结尾。 如果此参数为 0,则 lpBuffer 会收到指向字符串资源本身的只读指针。
返回值
类型: int
如果函数成功,则返回值为以下值之一:
- 如果 cchBufferMax 为非零) (不包括终止 null 字符),则复制到缓冲区中的字符数 (。
- 如果 cchBufferMax 为零) ,则 lpBuffer 指向的字符串资源中 (字符数。 不保证字符串资源在模块的资源表中以 null 结尾,可以使用此值来确定字符串资源的结束位置。
- 如果字符串资源不存在,则为零。
要获得更多的错误信息,请调用 GetLastError。
注解
如果将 0 传递给 cchBufferMax 以返回指向 lpBuffer 参数中字符串资源的只读指针,请使用返回值中的字符数来确定字符串资源的长度。 不保证字符串资源在模块的资源表中以 null 结尾。 但是,资源表可以包含空字符。 字符串资源存储在包含 16 个字符串的块中,块内的任何空槽都由 null 字符指示。
安全备注
错误使用此函数可能会损害应用程序的安全性。 不正确的使用包括在 nBufferMax 参数中指定错误的大小。 例如,如果 lpBuffer 指向声明为TCHAR szBuffer[100]
的缓冲区 szBuffer,则 sizeof (szBuffer) 会提供缓冲区的大小(以字节为单位),这可能导致函数的 Unicode 版本的缓冲区溢出。 缓冲区溢出情况是应用程序中许多安全问题的原因。 在这种情况下,使用 sizeof(szBuffer)/sizeof(TCHAR)
或 sizeof(szBuffer)/sizeof(szBuffer[0])
会提供适当的缓冲区大小。
示例
有关示例,请参阅 创建子窗口
注意
winuser.h 标头将 LoadString 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | winuser.h (包括 Windows.h) |
Library | User32.lib |
DLL | User32.dll |
请参阅
概念性
其他资源
引用