我正在尝试从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);
是否有人建议如何修复此问题?
答案 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;
}