zoukankan      html  css  js  c++  java
  • 学习CEGUI亟待解决问题二:消息事件传递机制问题

    公司的那个项目里面的事件传递看不过眼了哩。那多回调函数的重复代码。看CEGUI的事件机制MS还不错,抽点时间来学习学习。

    Day1:

          首先看一下消息传递的过程。就拿点击按钮的左键鼠标弹起消息来说吧。首先还是从wndProc开始,在WM_LBUTTONUP分支接收到鼠标弹起的消息,使用injectMouseButtonUp这个函数将该事件“注射”到系统中去。再遍历系统中所有存在的窗体,让每个窗体依次接收到消息,直到该消息被处理。代码dest_window->onMouseButtonUp(ma);用来处理每个窗体的鼠标左键弹起消息。然后onClicked(args)-> fireEvent(EventClicked, e, EventNamespace)->fireEvent_impl(name, args);-> (*ev)(args);->args.handled |= (*iter->second->d_subscriber)(args);->(*d_functor_impl)(args);->(d_object->*d_function)(args);->映射到具体的消息处理函数。

          其上基本上是将堆栈的内容摆出来了,然后讲讲涉及到的类,包括EventSet(用来存放事件的容器),Event(事件),SubscriberSlot(用来订阅事件)。明天仔细研究下事件机制。

    Day2:

          今天来看下事件机制。拿列表框来说吧,    

  • 相关阅读:
    javascript 延迟
    ashx获取另一个页面的返回内容
    Handler实现数据模板
    font-face 在 Firefox无法正常工作问题
    离线缓存 manifest
    事件 event
    源码学习
    调试
    Icon font font face
    aria-label
  • 原文地址:https://www.cnblogs.com/bobox/p/1436821.html
Copyright © 2011-2022 走看看