我有一个成员变量定义为:
HWND 窗口句柄。
我正在尝试捕获变量并在 Lambda 中分配给它。所以编译器给了我一个警告并建议我捕获“this”。我做到了,但现在句柄只在 Lambda 中有效:S 换句话说,它在 Lambda 之外是 NULL。
class Foo
{
private:
HWND WindowHandle;
public:
Foo();
void MakeWindow(.......);
HWND GetWindowHandle() {return WindowHandle;};
};
Foo::Foo(){}
Foo::MakeWindow(.......)
{
Thread = std::thread([ClassName, Title, Width, Height, this]{
WindowHandle = CreateWindowEx(0, ClassName.c_str(), Title.c_str(), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, Width, Height, 0, 0, GetModuleHandle(NULL), 0);
if(WindowHandle)
{
ShowWindow(WindowHandle, SW_SHOWDEFAULT);
MSG msg;
while(GetMessage(&msg, 0, 0, 0))
DispatchMessage(&msg);
}
});
}
int main()
{
Foo F;
F.MakeWindow(........);
std::cout<<std::boolalpha<<(F.GetWindowHandle() == NULL); //writes true.
}
以上创建的窗口非常好!只是句柄为空。如何从 Lambda 中获取句柄给我的班级成员?