rtgui简单分析.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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

文档评论(0)

kolr + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档