一、绘制的动力

GUI的绘画是根据消息动作驱动的

主循环应该是

GUI之绘画控制-LMLPHP

二、绘制的过程

绘画过程应该是这样的:

首先窗口存在上下层关系->

GUI之绘画控制-LMLPHP

在绘制时应该从底部窗口开始绘制,逐一绘制

下面是一些特殊的窗口

1.(模态窗口)需要显示在前面的 不受其他窗口影响的 窗口

  该类窗口另外管理,在绘制完前面的窗口后再按照这个数据类中的顺序进行逐一绘制

2.popup与dialog弹出框

  对于GUI说,两者区别在于popup窗口需要保存当前界面的样子,而dialog会实时变化

三、特殊的显示效果接口

× 组件的hide/show操作:

1.show: 这个比较简单,设置对应属性,下次绘制的时候进行绘制就能实现show效果

2.hide:由于要考虑到实际显示时各个组件的包含关系,比较复杂。

大致的hide逻辑如下

(1)如果hide的对象是window,查询有没有在它下面的window,并从最前面的window查找哪个是被该window沾边或包含的,刷新两个window之间的window

(2)如果hide的对象是widget,

①如果是聚焦窗口中的组件

刷新其容器父组件,刷新被该组件覆盖的所有组件,刷新覆盖组件所沾边或包含的所有组件

②如果是非聚焦窗口的组件

刷新该组件所在的window以及其上的所有window

05-08 14:56