Why can't I capture the variable Painted and change it? The second that I capture it, it throws a compile time error:
*cannot convert 'Foo()::<lambda(HWND, uint32_t, WPARAM, LPARAM)>'
to
'WNDPROC {aka long long int ()(HWND__, unsigned int, long long unsigned int, long long int)}' in initialization*
Yes I realize creating the Window within this function is awkward but I am threading this function and that is why I need to capture the variable Painted. I need to know when the Window has painted. That's why. I need to somehow get notified when the window in the thread has been painted so that I can do other operations in the main thread.
void Foo()
{
std::atomic<bool> Painted;
auto WindowProcedure = [&Painted](HWND window, std::uint32_t msg, WPARAM wp, LPARAM lp) -> LRESULT __stdcall
{
switch(msg)
{
case WM_PAINT:
Painted = true;
break;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(window, msg, wp, lp);
}
return 0;
};
WNDCLASSEX WndClass =
{
sizeof(WNDCLASSEX), CS_DBLCLKS, WindowProcedure,
0, 0, GetModuleHandle(NULL), LoadIcon(NULL, IDI_APPLICATION),
LoadCursor (NULL, IDC_ARROW), HBRUSH(COLOR_WINDOW+1),
NULL, "Class", LoadIcon (NULL, IDI_APPLICATION)
};
}