loadStringA 函数 (winuser.h)
从与指定模块关联的可执行文件加载字符串资源,并将字符串复制到具有终止 null 字符的缓冲区中,或返回指向字符串资源本身的只读指针。
语法
int LoadStringA(
[in, optional] HINSTANCE hInstance,
[in] UINT uID,
[out] LPSTR lpBuffer,
[in] int cchBufferMax
);
参数
[in, optional] hInstance
类型: HINSTANCE
其可执行文件包含字符串资源的模块实例的句柄。 若要获取应用程序本身的句柄,请使用 NULL 调用 GetModuleHandle 函数。
[in] uID
类型: UINT
要加载的字符串的标识符。
[out] lpBuffer
类型: LPTSTR
要接收字符串的缓冲区。 大小必须至少为 cchBufferMax 字符。
[in] cchBufferMax
类型: int
缓冲区的大小(以字符为单位)。 如果字符串的长度超过指定的字符数,则字符串将被截断并以 null 结尾。 此参数不能为零。
返回值
类型: int
如果函数成功,则返回值是复制到缓冲区中的字符数,不包括终止 null 字符。
如果字符串资源不存在,则返回值为零。
要获得更多的错误信息,请调用 GetLastError。
注解
与 LoadStringW 函数不同, LoadStringA 函数不支持为 cchBufferMax 传递值零。 这样做会损坏内存。
安全备注
错误使用此函数可能会损害应用程序的安全性。 不正确的使用包括在 cchBufferMax 参数中指定错误的大小。 例如,如果 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 |
请参阅
概念性
其他资源
引用