我正试图从一个获得属性HWND.我使用了" 使用窗口属性"中的信息,但下面的示例对我不起作用.我在编译代码时遇到错误.
类型"BOOL(__stdcall*)(HWND hwndSubclass,LPCSTR lpszString,HANDLE hData)"的参数与"PROPENUMPROCEXW"类型的参数不兼容
这是我的回调函数
BOOL CALLBACK PropEnumProcEx(HWND hwndSubclass, LPCSTR lpszString, HANDLE hData) {
return TRUE;
}
Run Code Online (Sandbox Code Playgroud)
这就是我如何使用它
EnumPropsEx(hwnd, PropEnumProcEx, NULL);
Run Code Online (Sandbox Code Playgroud)
有人有任何关于如何解决这个问题的建议吗?
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;
}
Run Code Online (Sandbox Code Playgroud)