- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第一篇 服务器
先援引一段RT-Thread 编程指南GUI 部分的介绍作为开头
“RT-Thread/GUI 采用传统的客户端/服务端(C/S)的结构,但和传统的客户端/服务端构架,
把绘画操作放于服务端不同的是,绘画操作完全有客户端自行完成。服务端仅维护着各个客
户端的位置信息。”
在初始化线程中调用rtgui_system_server_init()进行rtgui 服务器端的初始化
void rtgui_system_server_init()
{
rt_mutex_init(_screen_lock, screen, RT_IPC_FLAG_FIFO);
rtgui_system_image_init();// 初始化图像系统 其中至少包含硬件DC 的注册
rtgui_font_system_init(); // 初始化字体系统
/*从前面液晶的驱动程序得到 整个屏幕的大小参数 存在全局变量_mainwin_rect */
rtgui_graphic_driver_get_rect(rtgui_graphic_driver_get_default(), _mainwin_rect);
rtgui_topwin_init();//主要是初始化一个双向链表_rtgui_topwin_list (见后面topwin 部分)
rtgui_server_init();
rtgui_system_theme_init();/* init theme */
}
rtgui_server_init()是整个函数最重要的部分,它创建并启动了rtgui 服务器线程,下面是服务
器线程的入口:
static void rtgui_server_entry(void *parameter)
{
1 rtgui_server_application = rtgui_app_create(rtgui_server_tid,rtgui);
2 rtgui_object_set_event_handler(RTGUI_OBJECT(rtgui_server_application),
rtgui_server_event_handler);
3 rtgui_app_run(rtgui_server_application);
4 rtgui_app_destroy(rtgui_server_application);
5 rtgui_server_application = RT_NULL;
}
第1 行首先创建1 个app 应用,这里有必要先了解一下全局指针rtgui_server_application 指
向的数据结构struct rtgui_app
struct rtgui_app
{
struct rtgui_object parent; // 表示 rtgui_app 继承于rtgui_object
unsigned char *name; // app 的名字
rt_thread_t tid; // 需要绑定的线程 也即创建此app 的线程
rt_thread_t server; // rtgui 服务器端的线程
rt_mq_t mq; // 此线程的消息队列指针
rt_uint8_t event_buffer[sizeof(union rtgui_event_generic)]; // 事件缓冲区
};
通过函数rtgui_app_create,设置好rtgui_server_application 的名字name = rtgui,
tid= rtgui_server_tid(即服务器线程) 并创建其消息队列。在函数中,还会将此线程(在这里
是服务器线程)的user_data 指针指向此app,所以其实从这里还可以看出,一个线程只能创
建1 个rtgui 应用
第2 行的作用是设置这个app 的OBJECT 级别的事件处理函数为rtgui_server_event_handler,
在那里面,根据接收到的事件event 类型和参数调用不同的函数进行处理。
第3 行启动这个app
您可能关注的文档
最近下载
- 人教版(2024)七年级下册数学第七章 相交线与平行线 大单元教学设计 .pdf VIP
- 研究生英语综合教程(上)熊海虹 课文翻译及课后习题答案.pdf VIP
- 监理大纲光伏电站工程.pdf VIP
- GB_T 31497-2024 信息技术 安全技术 信息安全管理 监视、测量、分析和评价.pdf VIP
- 无人机法律法规与安全飞行 第2版 第二章 空气空间法律制度.pptx VIP
- 艺术概论全套配套课件孙丽华11 第二主题 话题7 文学漫步.ppt VIP
- 艺术概论全套配套课件孙丽华10 第二主题 话题6 舞之神韵.ppt VIP
- 水泥混凝土路面施工及验收规范.pdf VIP
- 艺术概论全套配套课件孙丽华9 第二主题 话题5 音乐之声.ppt VIP
- 《岳阳楼记》文言知识点梳理.doc VIP
文档评论(0)