打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
UCGUI 消息机制实现分析

UCGUI 消息机制实现分析

正文

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()如下图

_KeyMsgucgui初始化时,就初始为用于记录RxMsg状态的全局变量,然后根据_KeyMsgCnt0,或者非0,通过WM_OnKey函数派发消息到当前聚焦的窗口。

_DrawNext函数主要用于当前窗口的WM_PAINT消息响应

对于其他消息的响应,可以通过WM_SendMessage函数发送到响应的窗口,而这个函数主要也是取出那个窗口的句柄,执行窗口回调函数。

 

 

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
GUI的种类及uC/GUI的架构
Ucos-II+ucGUI390+ARM2410+LCD+触摸屏基本整合成功
uCGUI 学习笔记
关于ucGUI对个多个对话框切换的问题
UCGUI移植到STM32
stm32 UCGUI 完美移植-Changing's Blog
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服