LPCWSTR 代表什么,应该如何处理?

新手上路,请多包涵

首先,它到底是什么?我猜它是一个指针(LPC 表示长指针常量),但“W”是什么意思?它是指向字符串的特定指针还是指向特定字符串的指针?例如,我想关闭一个名为“TestWindow”的窗口。

 HWND g_hTest;
LPCWSTR a;
*a = ("TestWindow");
g_hTest = FindWindowEx(NULL, NULL, NULL, a);
DestroyWindow(g_hTest);

该代码是非法的并且它不起作用,因为 const char[6] 无法转换为 CONST WCHAR。我完全不明白。我想清楚地了解所有这些 LPCWSTR、LPCSTR、LPSTR。我试图找到一些东西,但我更加困惑。在 msdn 站点 FindWindowEx 被声明为

HWND FindWindowEx(
    HWND hwndParent,
    HWND hwndChildAfter,
    LPCTSTR lpszClass,
    LPCTSTR lpszWindow
);

所以最后一个参数是LPCSTR,编译器需要LPCWSTR。请帮忙。

原文由 lhj7362 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.9k
2 个回答

LPCWSTR 代表“指向常量宽字符串的长指针”。 W 代表 Wide,表示字符串存储在 2 字节字符中,而不是普通的 char 。对于必须处理非 ASCII 字符串的任何 C/C++ 代码都很常见。=

要获得一个普通的 C 文字字符串以分配给 LPCWSTR ,您需要在它前面加上 L

 LPCWSTR a = L"TestWindow";

原文由 JaredPar 发布,翻译遵循 CC BY-SA 2.5 许可协议

LPCWSTR 等价于 wchar_t const * 。它是一个指向不会被函数调用修改的宽字符串的指针。

您可以通过在字符串文字前加上 L 来分配给 LPCWSTR s: LPCWSTR *myStr = L"Hello World";

LPC T STR 和任何其他 T 类型,根据项目的 Unicode 设置采用字符串类型。如果为您的项目定义了 _UNICODE ,则使用T类型与宽字符形式相同,否则为Ansi形式。相应的函数也将以这种方式调用: FindWindowEx 定义为 FindWindowExAFindWindowExW 取决于此定义。

原文由 Matt Joiner 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题