OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8728|回复: 4

上下文切换GUI_Context

[复制链接]

20

主题

562

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
670
金钱
670
注册时间
2012-2-28
在线时间
0 小时
发表于 2013-1-20 09:29:56 | 显示全部楼层 |阅读模式
 
在GUI中定义了一个GUI_CONTEXT结构体类型的全局变量,用来保存各个窗口间相互切换时,保存活动窗口的属性,同时还保留一些每一层桌面及其子窗口们实现功能的底层函数指针和相关的属性。
因此,我们可以调用WM_SelectWindow()函数改变当前活动的窗口,将GUI_Context.hAWin等于需要活动窗口的句柄,GUI_Context的xOff和yOff等于需要活动窗口的x0和y0.如果是需要活动窗口与当前活动窗口是在两个桌面之间,那么还需要调用GUI_SelectLayer()改变不同层桌面之间的底层驱动API函数,改变GUI_Context.SelLayer等于处于的桌面层数,LCD_ACOLORINDEX[2]保存桌面的前景色和背景色的索引。具体代码如下:
WM_HWIN WM_SelectWindow(WM_HWIN hWin) {
  WM_HWIN hWinPrev;
  WM_Obj* pObj;
 
  WM_ASSERT_NOT_IN_PAINT();
  WM_LOCK();
  hWinPrev = GUI_Context.hAWin;
  if (hWin == 0) {
    hWin = WM__FirstWin;
  }
  /* Select new window */
  GUI_Context.hAWin = hWin;
  #if GUI_NUM_LAYERS > 1
  {
    WM_HWIN hTop;
    int LayerIndex;
    hTop = _GetTopLevelWindow(hWin);
    LayerIndex = _DesktopHandle2Index(hTop);
    if (LayerIndex >= 0) {
      GUI_SelectLayer(LayerIndex);
    }
  }
  #endif
  pObj = WM_H2P(hWin);
  LCD_SetClipRectMax(); /* Drawing operations will clip ... If WM is deactivated, allow all */
  GUI_Context.xOff = pObj->Rect.x0;
  GUI_Context.yOff = pObj->Rect.y0;
  WM_UNLOCK();
  return hWinPrev;
}
当我们需要得到当前活动窗口的句柄时,直接调用WM_GetActiveWindow()函数返回GUI_Context.hAWin值即可。
努力,前进。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-1-20 10:45:24 | 显示全部楼层
楼主可否把相关知识放一个帖子,这样可以加精华.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-1-20 10:45:40 | 显示全部楼层
后续的知识跟帖就是了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

20

主题

562

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
670
金钱
670
注册时间
2012-2-28
在线时间
0 小时
 楼主| 发表于 2013-1-20 11:18:44 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
好的,正在整理,以后就发一个帖子了,呵呵
努力,前进。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-1-20 13:23:23 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-21 21:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表