gpt4 book ai didi

c++ - EnumWindows 指针错误

转载 作者:行者123 更新时间:2023-11-30 01:28:49 25 4
gpt4 key购买 nike

我在尝试 EnumWindows 到类中的函数时遇到了一个奇怪的错误。这是我的代码

EnumWindows(&ConsoleDetector::EnumWindowsProc, NULL);

BOOL CALLBACK ConsoleDetector::EnumWindowsProc(HWND wnd, LPARAM lParam)
{
char className[200];
GetClassName(wnd, className, 200);
if (strcmp(className, "ConsoleWindowClass"))
m_result.push_back(wnd);
return TRUE;
}

这是我得到的错误:

ConsoleDetector.cpp:30: error: cannot convert 'BOOL (ConsoleDetector::*)(HWND__*, LPARAM)' to 'BOOL (*)(HWND__*, LPARAM)' for argument '1' to 'BOOL EnumWindows(BOOL (*)(HWND__*, LPARAM), LPARAM)'

使用 MingW。感谢您的帮助。

最佳答案

您正在传递一个实例方法。您需要传递一个普通函数而不是绑定(bind)到实例的方法。

必须这样声明:

BOOL CALLBACK EnumWindowsProc(HWND wnd, LPARAM lParam)

ConsoleDetector 的实例传递给 EnumWindowslParam 参数,然后它将传递给您的回调。

像这样:

BOOL CALLBACK EnumWindowsProc(HWND wnd, LPARAM lParam)
{
ConsoleDetector cd = static_cast<ConsoleDetector*>(lParam);
//do stuff with cd and wnd
}

ConsoleDetector *cd = ...
EnumWindows(EnumWindowsProc, static_cast<LPARAM>(cd));

关于c++ - EnumWindows 指针错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7001222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com