博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uCGUI窗口初始化过程
阅读量:6116 次
发布时间:2019-06-21

本文共 2042 字,大约阅读时间需要 6 分钟。

一、相关结构体和变量

  重要的uCGUI系统全局变量

  • NextDrawWin                      下一个需要重绘的窗口句柄
  • WM__NumWindows         系统当前的总共窗口总数
  • WM__NumInvalidWindows   系统当前无效的窗口总数,这些窗口都需要重绘的
  • WM__FirstWin                    系统第一个窗口的句柄,默认的就是桌面窗口,桌面窗口的句柄就是1。在创建桌面窗口的时候,会将桌面窗口的句柄,付给该全局变量,该动作发生在函数_AddToLinList中。

  与桌面窗口相关的全局变量

  • WM__ahDesktopWin[i]       保存桌面窗口的句柄
  • WM__aBkColor[i]               保存桌面窗口的背景色

  Attention:之所以用数组保存,是因为uCGUI支持多层显示。

二、uCGUI窗口初始化过程

/***********************************************************************       WM_Init*/void WM_Init(void) {    if (!_IsInited) {                                //只初始化一次      NextDrawWin = WM__FirstWin = WM_HWIN_NULL;    //下一个需要重绘的窗体为空      GUI_Context.WM__pUserClipRect = NULL;            //用户裁剪区为空      WM__NumWindows = WM__NumInvalidWindows =0;    //所有窗体的个数和无效窗体数都为0      /* Make sure we have at least one window. This greatly simplifies the          drawing routines as they do not have to check if the window is valid.      */    #if GUI_NUM_LAYERS == 1      WM__ahDesktopWin[0] = WM_CreateWindow(0, 0, GUI_XMAX, GUI_YMAX, WM_CF_SHOW, cbBackWin, 0);                                                       //创建一个桌面窗体      WM__aBkColor[0] = GUI_INVALID_COLOR;            //设置桌面的背景颜色为无效的背景颜色      WM_InvalidateWindow(WM__ahDesktopWin[0]);       //使一个窗口无效,这样这个窗口就会重绘        #else    {      int i;      for (i = 0; i < GUI_NUM_LAYERS; i++) {        WM__ahDesktopWin[i] = WM_CreateWindowAsChild(0, 0, GUI_XMAX, GUI_YMAX, WM_UNATTACHED, WM_CF_SHOW, cbBackWin, 0);        WM__aBkColor[i] = GUI_INVALID_COLOR;        WM_InvalidateWindow(WM__ahDesktopWin[i]); /* Required because a desktop window has no parent. */      }    }    #endif    /* Register the critical handles ... Note: This could be moved into the module setting the Window handle */    WM__AddCriticalHandle(&WM__CHWinModal);    WM__AddCriticalHandle(&WM__CHWinLast);    #if GUI_SUPPORT_MOUSE      WM__AddCriticalHandle(&WM__CHWinMouseOver);    #endif    WM_SelectWindow(WM__ahDesktopWin[0]);        //选中桌面窗口作为活动窗口      WM_Activate();                            //激活视窗管理器    _IsInited =1;                                //只初始化一次    }}

 

转载地址:http://xqpka.baihongyu.com/

你可能感兴趣的文章
ASP.Net 使用GridView模板删除一行的用法
查看>>
(十六)字段表集合
查看>>
JPGraph
查看>>
实验二 Java面向对象程序设计
查看>>
------__________________________9余数定理-__________ 1163______________
查看>>
webapp返回上一页 处理
查看>>
新安装的WAMP中phpmyadmin的密码问题
查看>>
20172303 2017-2018-2 《程序设计与数据结构》第5周学习总结
查看>>
eclipse中将一个项目作为library导入另一个项目中
查看>>
Go语言学习(五)----- 数组
查看>>
Android源码学习之观察者模式应用
查看>>
Content Provider的权限
查看>>
416. Partition Equal Subset Sum
查看>>
centos7.0 64位系统安装 nginx
查看>>
数据库运维平台~自动化上线审核需求
查看>>
注解开发
查看>>
如何用 Robotframework 来编写优秀的测试用例
查看>>
Django之FBV与CBV
查看>>
Vue之项目搭建
查看>>
app内部H5测试点总结
查看>>