我一直找不到关于此功能的任何合适的文档。我正在使用的代码库使用 winuser.h 中名为 LoadStringW
的函数,该函数采用以下参数:(HINSTANCE hInstance, UINT uID, LPWSTR lpBuffer, int cchBufferMax)
.
这是什么功能?它是做什么用的?什么时候可能返回 0?
最佳答案
可能值得一提的是,几乎所有处理字符串的 Win32 API 都有一个“A”和一个“W”变体。
实际调用的变体由不以“A”或“W”结尾的宏定义决定 - 这些宏名称通常是您认为的 API 函数名称 (LoadString()
在这种情况下)。 UNICODE 构建将使用“W”名称,非 UNICODE 构建将使用“A”名称。
有时您可能想要调用 API 的 Unicode 版本,即使构建不是 Unicode,在这种情况下,您只需直接使用在末尾附加“W”的名称(这种情况较少见)需要在 Unicode 构建中调用非 Unicode API,但这是可能的)。由于 Windows 的非 Unicode 版本已经过时,Microsoft 开始越来越多地只实现 API 的 Unicode 版本。请注意,在几乎所有情况下,API 的非 Unicode 版本所做的只是将 ANSI/MBCS 字符串转换为 Unicode,调用“W”函数,然后进行清理。
关于c++ - LoadStringW - winuser.h。它有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1651737/