Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15367191
  • 博文数量: 2005
  • 博客积分: 11986
  • 博客等级: 上将
  • 技术积分: 22535
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-17 13:56
文章分类

全部博文(2005)

文章存档

2014年(2)

2013年(2)

2012年(16)

2011年(66)

2010年(368)

2009年(743)

2008年(491)

2007年(317)

分类:

2007-08-14 14:46:23

1.以下为lcd屏幕上绝对地址
pWin->Rect.x0 = x0;
pWin->Rect.y0 = y0;
pWin->Rect.x1 = x0 + width - 1;
pWin->Rect.y1 = y0 + height - 1;
2.所有窗体都会被_AddToLinList()函数添加到单向链表
WM__FirstWin、WM__FirstWin->hNextLin中.
3.函数WM_InvalidateArea将搜索窗体链表WM__FirstWin中链接的所有窗体,
  计算对应窗体的失效矩形区pWin->InvalidRect
4.函数WM_InvalidateWindow(WM_HWIN hWin, const GUI_RECT*pRect)
  其中pRect为相对本窗体坐标的矩形,
  所以与其他窗体进行矩形剪切计算时,需要使用WM__Client2Screen()函数
  将相对窗体的矩形区,转换成相对screen的矩形区,
  该函数将与hwin的所有parent的boader进行矩形剪切,
  之后调用_Invalidate1Abs将失效矩形区域存储到pWin->InvalidRect
5.函数WM__InsertWindowIntoListt(WM_HWIN hWin, WM_HWIN hParent);
  hWin为普通窗体:将hWin插入到hParent下所有普通窗体之后,第一个on_top类型窗体之前
  hWin为on_top  :将hWin插入到hParent下所有窗体最后.
  具体细节参考《μC/GUI-v3.90a窗体hParent内部控件窗体之间单向链接图》[http://gliethttp.cublog.cn]
6.函数WM_SelectWindow(WM_HWIN  hWin);
  将选择hWin为最前端待绘制窗体,同时使用函数LCD_SetClipRectMax()
  使GUI_Context.ClipRect矩形区设为screen大小,与此同时设置
  GUI_Context.xOff = pObj->Rect.x0;//为hwin的左上角坐标x0
  GUI_Context.yOff = pObj->Rect.y0;//为hwin的左上角坐标y0
7.函数WM_BringToBottom(WM_HWIN hWin);//将hwin置底
  将hWin->hNext从单向链表中摘除,作为hParent的窗体链表中的第一个孩子
  即:pParent->hFirstChild = hWin,
  同时将单向链表WM__FirstWin中ucgui系统中当前创建的所有窗体的InvalidRect矩形区域
  重新进行进行计算.
阅读(2185) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~