【架构】Windows事件机制合理分析
2014-02-24 11:09
92 查看
一、窗口结构分析
窗口数据结构,有一个链指针,保存所属进程。
基本算法分析:
1、遍历同级窗口集,切换进程,切换线程,置同级窗口为当前活动窗口。
2、遍历当前活动窗口的子窗口,包装消息结构体Msg,放入线程消息队列。
3、线程GetMessage取消息,分发给对应窗口结构体的CallBack函数。里面可能会回调父窗口的消息过程函数。
关于CToolBar的消息总是发送第一个父窗口的原因,在comctl32.dll中ToolBar代码段中,里面用一个全局变量保存父窗口句柄,在消息函数中,SendMessage发送给该变量窗口。
SetParent对其窗口消息的处理没有必然的关系,因为父窗口、子窗口的消息处理过程是不同的。
二、构建窗体对象集
1、在线程空间,可能有一个全局链保存窗体,用CreateWindow加入到窗口集。
2、遍历同级窗口的判断标准:
依据用户点击鼠标的坐标可以知道用户在哪个窗体区域内点击了鼠标。【2】
三、事件模式分析
1、基本模式
关于事件源的概念,可参考JSE。
2、解耦方式
方法1——固定模式
对个不同的GUI事件,采用类多态模式。要点如下:
a1、开辟全局GUI对象链,保存new出来的GUI对象和窗体句柄
a2、基类用虚函数编写各种事件函数
a3、根据窗体句柄、事件,跳转到GUI类的子类的事件函数
类似的处理方式有VB、Delphi VCL
方法2——委托模式(采用观察者模式)
要点如下:
a1、同上
a2、开辟事件对象链,由子类对象把处理函数加入到事件对象链
a3、根据窗体句柄、事件,分别调用事件链中的处理函数
类似的处理方式有Java、QT、MFC
参考:1、Windows线程、界面、消息剖析
2、细说UI线程和Windows消息队列
3、windows的消息队列与消息循环
4、Win32 API创建Rebar一起ToolBar方法
5、Java模拟AWT事件监听器(Observer模式)
窗口数据结构,有一个链指针,保存所属进程。
基本算法分析:
1、遍历同级窗口集,切换进程,切换线程,置同级窗口为当前活动窗口。
2、遍历当前活动窗口的子窗口,包装消息结构体Msg,放入线程消息队列。
3、线程GetMessage取消息,分发给对应窗口结构体的CallBack函数。里面可能会回调父窗口的消息过程函数。
关于CToolBar的消息总是发送第一个父窗口的原因,在comctl32.dll中ToolBar代码段中,里面用一个全局变量保存父窗口句柄,在消息函数中,SendMessage发送给该变量窗口。
SetParent对其窗口消息的处理没有必然的关系,因为父窗口、子窗口的消息处理过程是不同的。
二、构建窗体对象集
1、在线程空间,可能有一个全局链保存窗体,用CreateWindow加入到窗口集。
2、遍历同级窗口的判断标准:
依据用户点击鼠标的坐标可以知道用户在哪个窗体区域内点击了鼠标。【2】
三、事件模式分析
1、基本模式
关于事件源的概念,可参考JSE。
2、解耦方式
方法1——固定模式
对个不同的GUI事件,采用类多态模式。要点如下:
a1、开辟全局GUI对象链,保存new出来的GUI对象和窗体句柄
a2、基类用虚函数编写各种事件函数
a3、根据窗体句柄、事件,跳转到GUI类的子类的事件函数
类似的处理方式有VB、Delphi VCL
方法2——委托模式(采用观察者模式)
要点如下:
a1、同上
a2、开辟事件对象链,由子类对象把处理函数加入到事件对象链
a3、根据窗体句柄、事件,分别调用事件链中的处理函数
类似的处理方式有Java、QT、MFC
参考:1、Windows线程、界面、消息剖析
2、细说UI线程和Windows消息队列
3、windows的消息队列与消息循环
4、Win32 API创建Rebar一起ToolBar方法
5、Java模拟AWT事件监听器(Observer模式)
相关文章推荐
- 笔记-NopCommerce系统架构分析-事件机制
- Android控件架构与自定义控件详解(四)事件拦截机制分析
- 移动架构13_责任链模式分析Android事件分发机制
- Android控件架构与自定义控件详解(四)——事件拦截机制分析
- 近乎产品MVC架构介绍-事件机制
- Android源码分析-点击事件派发机制
- 事件拦截机制分析
- Windows线程(六)使用事件机制解决线程同步问题
- 事件拦截机制分析
- Android源码分析-点击事件派发机制
- Qt的事件处理机制分析
- 事件拦截机制简单分析
- 事件分发机制(转自一个大神,语言精练,分析到位。喜欢)
- 文章12:初探Nginx架构之进程模型与事件处理机制
- 分析MIDP低级事件处理机制
- Android—— View事件分发机制的源码分析
- windows的文件系统机制引发的PHP路径爆破问题分析
- android的窗口机制分析------事件处理
- Storm系列(十一)架构分析之Supervisor-管理Worker进程的事件线程
- 如何在Windows Forms应用程序中实现可组装式(Composite)的架构以及松耦合事件机制