我可以使用成员函数作为EnumWindows的第一个参数

Fro*_*art 3 c++ windows winapi

我可以使用成员函数作为第一个参数EnumWindows吗?在这种情况下我甚至没有看到任何解决方法boost::bind.

Adr*_*tti 5

鉴于此正常回调函数:

BOOL CALLBACK EnumWindowsProc(HWND wnd, LPARAM lParam);
Run Code Online (Sandbox Code Playgroud)

你可以EnumWindows使用lParam它来传递一个指向你的类的指针:

EnumWindows(EnumWindowsProc, reinterpret_cast<LPARAM>(this));
Run Code Online (Sandbox Code Playgroud)

EnumWindowsProc您可以简单地调用成员函数(转换lParam为您的类类型).像这样:

BOOL CALLBACK EnumWindowsProc(HWND wnd, LPARAM lParam)
{
    return reinterpret_cast<MyClass*>(lParam)->EnumWindows(wnd);
}
Run Code Online (Sandbox Code Playgroud)

如果您不想公开您的课程方法,您可以:

  • 打包一个struct以包含类实例和指向成员的指针.
  • 代表使用库.
  • 使用boost std:bind(在这种情况下,它会很好地工作,因为你在自己的类成员上执行它,它不是__stdcall).

无论你将使用什么,你都可以在这篇文章中找到更多细节.