UCGUI 消息机制实现分析
来源:互联网 发布:网络维护外包 编辑:程序博客网 时间:2024/05/29 06:48
Ucgui的消息机制类似于WIN32的消息循环机制,但Ucgui的消息机制简单于WIN32,比WIN32更简单的消息处理机制,在WIN32中主要是通过消息队列来实现对消息的派发,同时也要考虑消息的派发的同步和异步。而Ucgui的消息机制则是通过两个变量的记录来实现。(必须先了解ucgui的内存分配,ucgui WM_OBJ结构h2p)
首先,我们通过Ucgui里面提供的DIALOG_All的示例程序来解读其消息机制。跑进其主函数
可以看到程序先初始化了ucgui所需环境,然后执行了DialogBox,而消息机制的运行就在这个函数内开始。其内部实现如下:
在里面先创建了一个DialogBox,因为他是主窗口,所以利用起回调函数指针的情况,来控制其整个DialogBox里面的消息循环。
接着,看看GUI_Exec,消息机制真正开始的地方。
从图片可以看出,在GUI_Exec开始了循环,而真正派发消息的是在GUI_Exec1里面,
GUI_Exec1除了派发消息,同时还执行Timer的触发。
在这里我们只看消息的派发,UCGUI是如何管理起消息的,WM_Exec()如下
注意:到这里,已经有三个循环了,在为执行完时,是不会执行到下一个步骤的
在上图中,我们主要看GUI_PollKeyMsg()函数和_DrawNext()函数,GUI_PollKeyMsg()函数主要处理了消息派发,而_DrawNext()则是处理WM_PAINT。
GUI_PollKeyMsg()如下图
_KeyMsg在ucgui初始化时,就初始为用于记录Rx的Msg状态的全局变量,然后根据_KeyMsgCnt为0,或者非0,通过WM_OnKey函数派发消息到当前聚焦的窗口。
而_DrawNext函数主要用于当前窗口的WM_PAINT消息响应
对于其他消息的响应,可以通过WM_SendMessage函数发送到响应的窗口,而这个函数主要也是取出那个窗口的句柄,执行窗口回调函数。
- UCGUI 消息机制实现分析
- UCGUI 消息机制实现分析
- UCGUI 消息机制实现分析
- Ucgui的消息机制
- UCGUI窗体管理及消息处理机制分析
- UCGUI窗体管理及消息处理机制分析
- UCGUI窗体管理及消息处理机制分析
- UCGUI窗体管理及消息处理机制分析
- ucgui 消息机制之三张图
- ucgui timer实现分析
- ucgui timer实现分析
- ucGUI 消息驱动机制结构和使用
- ucGUI 消息驱动机制结构和使用
- 消息机制实现_源码分析
- Android实现机制分析(一)——消息机制
- ucgui触摸屏消息处理
- UCGUI的消息处理
- MFC消息机制分析
- 入门demo---Mybatis学习笔记(三)
- IIS部署ASP.NET网站
- 三子棋(C语言)
- 关于单片机下载通信
- Counting Bits
- UCGUI 消息机制实现分析
- 设计模式之建造者模式
- Hibernate核心接口和工作原理
- servlet的介绍和使用
- SSL学习
- 349/350. Intersection of Two Arrays
- [bzoj 1002] [FJOI2007]轮状病毒:数学,递推,高精度
- 16 :使用docker搭建hadoop分布式集群
- Java过滤停用词源码