9

我对 Windows 编程很陌生。我正在尝试检索窗口的名称。

char NewName[128];
GetWindowText(hwnd, NewName, 128);

我需要使用 char[] 但它给了我错误类型的错误。
根据我的阅读,LPWSTR 是一种 char*。

如何使用char[]with GetWindowText

非常感谢 !

4

3 回答 3

14

您可能正在编译一个 Unicode 项目,因此您可以:

  • 显式调用函数 ( ) 的 ANSI 版本GetWindowTextA,或
  • 使用wchar_t代替char(LPWSTR是指向wchar_t)
于 2012-12-19T09:25:12.403 回答
1

当调用 Windows API 而不通过附加 A(ANSI)或 W(宽字符)来指定显式版本时,您应该始终使用TCHAR. TCHAR将根据是否UNICODE#define​​d 映射到正确的类型。

于 2012-12-19T21:57:22.917 回答
1

对于现代 Windows 编程(这意味着,在 2000 年 Microsoft 为 Windows 9x 引入 Unicode 层之后),使用"Unicode"会好得多,这在 Windows 中的 C++ 中意味着使用wchar_t.

也就是说,使用wchar_t代替char,并使用std::wstring代替std::string

记得UNICODE在包含之前定义<windows.h>NOMINMAX定义和也是一个好主意STRICT。虽然现在后者是默认定义的。

于 2012-12-19T09:41:41.933 回答