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

wordpress手机显示不出主题广州网站优化推广

wordpress手机显示不出主题,广州网站优化推广,什么语言做网站快,无法定位wordpress内容目录文中若有代码、术语等错误,欢迎指正 文章目录 前言如何确定GLFW窗口事件的回调函数参数Application接收事件回调流程原项目流程(12345)自己写的简单Demo与流程(123) 前言 此节目的 为了完成008计划窗口事件的接收glfw窗口事件以及回调部分 此节要完成 使用glfw函数…

文中若有代码、术语等错误,欢迎指正

文章目录

  • 前言
  • 如何确定GLFW窗口事件的回调函数参数
  • Application接收事件回调流程
    • 原项目流程(12345)
    • 自己写的简单Demo与流程(123)

前言

  • 此节目的

    为了完成008计划窗口事件的接收glfw窗口事件以及回调部分

  • 此节要完成

    使用glfw函数可以设置(拦截)真正窗口事件的回调函数,在回调函数中转换为我们自定义的事件,再回调给Application的OnEvent,OnEvent拦截对应的事件

  • 图示部分

    图中是将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_ptr<Window>(Window::Create());// 1.2Application设置窗口事件的回调函数m_Window->SetEventCallback(BIND_EVENT_FN(OnEvent));}// 回调glfw窗口事件的函数void Application::OnEvent(Event& e){// 4.用事件调度器,拦截自己层想要拦截的事件并处理EventDispatcher dispatcher(e);dispatcher.Dispatch<WindowCloseEvent>(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::function<void(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.hkea.cn/news/181452/

相关文章:

  • 高校建设网站的特色如何建立一个网站
  • 公司做网站域名归谁搜索引擎营销策划方案
  • 怎么做外贸个人网站seo综合查询工具可以查看哪些数据
  • 黑客网站盗qq百度seo公司整站优化
  • 网页设计代码不能运行seo的中文名是什么
  • 灵溪网站建设外贸网站谷歌seo
  • 网站开发系统设计产品推销
  • 不用代码做网站 知乎百度引流推广怎么收费
  • 怎么看网站后台什么语言做的产品全网营销推广
  • 可以做宣传图的网站网络销售管理条例
  • 做书籍封皮的网站制作网站平台
  • 1网站建设公司长沙网站到首页排名
  • 域名还在备案可以做网站吗seo培训班
  • 前程无忧网宁波网站建设类岗位北京网站快速排名优化
  • 如何优化网站内部链接站长工具站长之家
  • 阿里云网站建设的实训报告免费的自媒体一键发布平台
  • 关于加强网站建设的意见企业获客方式
  • 帮企业建设网站保密合同优化设计电子课本
  • 金山石化网站建设广告电话
  • 网站开发 前景网络推广代理
  • 温州整站推广咨询seo网站推广专员
  • 企业营销型网站团队百度seo排名优化教程
  • 安徽平台网站建设哪里好网络策划与营销
  • 做网站接广告赚钱么凡科建站和华为云哪个好
  • 成都网站建设科技公seo营销外包公司
  • 重庆有哪些做网站 小程序的百度搜索引擎的特点
  • 仁怀哪里可以做网站自动秒收录网
  • 重庆市建设局网站推广软件一键发送
  • 合肥网络推广网络运营网站seo诊断分析和优化方案
  • 网站优化公司免费咨询sem优化推广