我有一个简单的窗口应用程序,声明了主窗口回调过程:
WNDCLASSEXW wcx; /* ... */ wcx.lpfnWndProc = MainWndProc;
并且在WinMain之后我声明了LRESULT CALLBACK MainWndProc(HWND mainWindow,UINT msg,WPARAM wparam,LPARAM lparam){/ * … * /}并且一切正常,但我想知道是否可以将此MainWndProc作为lambda在WinMain里面?
解决方法
你可以使用lambda,只要它没有捕获,然后它有一个隐式转换为函数指针:
#include <iostream> typedef void (*func)(); static func some_func; int global; int main() { some_func = [](){ std::cout << "Hello\n"; }; // Fine some_func(); int local; some_func = [&](){ local = 1; }; // Illegal - No conversion some_func = [](){ global = 1; }; // Fine }