c – 我可以将主窗口程序作为WinMain中的lambda吗?

前端之家收集整理的这篇文章主要介绍了c – 我可以将主窗口程序作为WinMain中的lambda吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个简单的窗口应用程序,声明了主窗口回调过程:
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
}

问题实际上是你可以在lambda中作为没有捕获的回调有多少.您仍然可以使用“全局变量”,就像使用常规函数作为回调一样.

原文链接:https://www.f2er.com/c/116369.html

猜你在找的C&C++相关文章