枚举HWND属性c ++

时间:2017-08-27 09:53:32

标签: c++ winapi hwnd

我正在尝试从HWND获取属性。我使用了来自Using Window Properties的信息,但下面的示例对我不起作用。我在编译代码时遇到错误。

  

类型" BOOL(__stdcall *)的参数(HWND hwndSubclass,LPCSTR lpszString,HANDLE hData)"与#34; PROPENUMPROCEXW"类型的参数不兼容

这是我的回调函数

BOOL CALLBACK PropEnumProcEx(HWND hwndSubclass, LPCSTR lpszString, HANDLE hData) {
    return TRUE;
}

以及我如何使用它

EnumPropsEx(hwnd, PropEnumProcEx, NULL);

是否有人建议如何修复此问题?

1 个答案:

答案 0 :(得分:4)

LPCSTR lpszString应为LPTSTR lpszString。此参数应接受指向ANSI或Unicode以null结尾的字符串的指针。 PROPENUMPROCEXW表示您正在构建Unicode应用程序,因此EnumPropsEx宏扩展为EnumPropsExW调用,因此您需要提供接受宽字符串作为参数的回调。通常,您应该始终显式调用API函数的Unicode变体。

你也错过了最后一个参数ULONG_PTR dwData

所以你的回调应该是这样的:

BOOL CALLBACK
PropEnumProcEx(HWND hwndSubclass, LPTSTR lpszString, HANDLE hData, ULONG_PTR dwData)
{
    return TRUE;
}