当前位置: 首页 > news >正文

网站建设培训龙岗wordpress生成pdf

网站建设培训龙岗,wordpress生成pdf,沃尔玛网上商城,推广网站源码文中若有代码、术语等错误#xff0c;欢迎指正 文章目录 前言如何确定GLFW窗口事件的回调函数参数Application接收事件回调流程原项目流程(12345)自己写的简单Demo与流程(123) 前言 此节目的 为了完成008计划窗口事件的接收glfw窗口事件以及回调部分 此节要完成 使用glfw函数… 文中若有代码、术语等错误欢迎指正 文章目录 前言如何确定GLFW窗口事件的回调函数参数Application接收事件回调流程原项目流程(12345)自己写的简单Demo与流程(123) 前言 此节目的 为了完成008计划窗口事件的接收glfw窗口事件以及回调部分 此节要完成 使用glfw函数可以设置拦截真正窗口事件的回调函数在回调函数中转换为我们自定义的事件再回调给Application的OnEventOnEvent拦截对应的事件 图示部分 图中是将Appilication的事件给Layer去处理但本节是Application自己拦截事件并处理修改后的图如下 如何确定GLFW窗口事件的回调函数参数 引出 glfwSetKeyCallback(m_Window, [](GLFWwindow* window, int key, int scancode, int action, int mods)如上代码用lambda接收GLFW按键事件可是为什么能确定lambda的参数 需要ctrl左键点开glfwSetKeyCallback Application接收事件回调流程 原项目流程(12345) 对应第二张图按照1、2、3、4、5顺序 Application #include hzpch.h #include Application.h #include Hazel/Log.h #include GLFW/glfw3.h namespace Hazel {#define BIND_EVENT_FN(x) std::bind(Application::x, this, std::placeholders::_1)Application::Application(){// 1.1Application创建窗口m_Window std::unique_ptrWindow(Window::Create());// 1.2Application设置窗口事件的回调函数m_Window-SetEventCallback(BIND_EVENT_FN(OnEvent));}// 回调glfw窗口事件的函数void Application::OnEvent(Event e){// 4.用事件调度器拦截自己层想要拦截的事件并处理EventDispatcher dispatcher(e);dispatcher.DispatchWindowCloseEvent(BIND_EVENT_FN(OnWindowClose));HZ_CORE_TRACE({0}, e);}void Application::Run(){while (m_Running){glClearColor(1, 0, 1, 1);glClear(GL_COLOR_BUFFER_BIT);m_Window-OnUpdate(); // 更新glfw}}// 5.执行Application的OnWinClose函数拦截处理event事件bool Application::OnWindowClose(WindowCloseEvent e){m_Running false;return true;} }WindowsWindow.cpp // 2.1window创建窗口 m_Window glfwCreateWindow((int)props.Width, (int)props.Height, m_Data.Title.c_str(), nullptr, nullptr); // 设置glfw当前的上下文 glfwMakeContextCurrent(m_Window); /*设置窗口关联的用户数据指针。这里GLFW仅做存储不做任何的特殊处理和应用。window表示操作的窗口句柄。pointer表示用户数据指针。 */ glfwSetWindowUserPointer(m_Window, m_Data); SetVSync(true); // 2.2设置glfw事件回调接收glfw窗口事件 glfwSetWindowSizeCallback(m_Window, [](GLFWwindow* window, int width, int height){// glfwGetWindowUserPointer获取void*指针可以转换为由glfwSetWindowUserPointer自定义数据类型WindowData data *(WindowData*)glfwGetWindowUserPointer(window);data.Width width;data.Height height;// 2.3将glfw窗口事件转换为自定义的事件WindowResizeEvent event(width, height);// 3.回调Application的OnEvent函数并将事件作为其OnEvent的参数data.EventCallback(event); });效果 自己写的简单Demo与流程(123) 对应第二张图的1、2、3步少了4、5步可以回到009.事件系统-自定义事件细看整个事件系统的设计与流程 #include iostream #include string #include functional using namespace std; using namespace std::placeholders;// 占位符空间// 事件类定义// class Event { // 事件基类 public:virtual void Say() { cout Event::Say() endl; }bool m_Handled; // 事件是否处理完 }; class WindowCloseEvent : public Event { // 窗口关闭事件子类 public:virtual void Say() { cout WindowEvent::Say() endl;} };// 窗口类定义// class Window { public:using EventCallbackFn std::functionvoid(Event); // 声明function类型void function(Event)static Window* CreateWindow() { // 模拟创建窗口return new Window;}void SetEventCallback(const EventCallbackFn callback) {EventCallback callback; // 绑定Application::OnEvent}void SendEvent() {cout Window::模拟glfw窗口事件 endl;// 2.将glfw窗口事件封装成自己系统的事件WindowCloseEvent windowe;// 3.回调Application的OnEvent函数并将事件作为其OnEvent的参数EventCallback(windowe);}EventCallbackFn EventCallback; // 定义function };// 应用层类定义// class Application { public:Window* win; // 持有的窗口类void OnEvent(Event event) {event.Say();cout Application::OnEvent(Event event) endl;// 4.Application的OnEvent将事件传递给Application的所有Layer层的OnEvent// ......} }; int main() {Application app;// 1.1Application对象创建窗口类窗口类初始化了glfw窗口app.win Window::CreateWindow();// 1.2Application设置窗口事件的回调函数app.win-SetEventCallback(bind(Application::OnEvent, app, _1));// bind的argument1是函数地址arug2是哪个类arug3是调用OnEvent的参数// 1.3模拟glfw窗口事件app.win-SendEvent();return 0; }少了Application自己拦截处理事件
http://www.dnsts.com.cn/news/50283.html

相关文章:

  • 找别人做网站注意什么做网站的目的与意义
  • 泉州做 php 网站盐山做网站价格
  • 外贸公司网站建站怎么修改网站首页html代码
  • 好大夫网站开发单位网站开发需要什么软件
  • 重庆公司注册服务惠州优化怎么做seo
  • 网站建设1影响力公司龙华做网站怎么样
  • 如何评价网站是否做的好处wordpress外贸企业模板下载
  • 佛山网站建设企业报价绍兴网站建设做网站
  • 黄江镇网站建设公司文化事业建设费在哪个网站申报
  • 中山网站优化js网站变灰色代码
  • 温州做网站 掌熊号请解释网站开发的主要流程.
  • 东莞网站优化推广网站 开发 周期
  • 南宁哪个网络公司建网站好成功的网络营销案例
  • 个人网站模板怎么做手机建站平台微点
  • 网站设计建设公司怎么做零基础怎么学网页设计
  • 湖南网站建设怎么样网站开发设计工程师
  • 五常网站wordpress 视频尺寸
  • 长春建设网站公司吗wordpress去谷歌插件
  • 阐述网站建设利益双辽做网站
  • 十里河网站建设公司vi设计用什么软件
  • 网站开发课程建议做淘客网站需要备案
  • 淄博做网站电话免费手机照片恢复软件
  • 网页设计与网站建设实例教程答案珠海建设集团网站首页
  • wordpress验证登录页面西安seo推广优化
  • 济南网站优化排名推广app对接网站
  • 右翼网站苏宁易购的网站建设
  • 唐山市城市建设规划局网站用网盘做网站
  • 电子商务网站建设的规划和实施未来软件网站建设
  • 网站运营方案书c 视频播放网站开发
  • 网站管理是做什么的秦皇岛网站制作服务