UI管理-UI management

一、控件创建

通过维护一个基础数据结构或者在其上扩展属性来创建每一种控件类型,主要涉及到工厂模式。

如:

typedef struct 
{
List_t* children; //子组件链表
void* parent;//父组件
void* focusComponent;//焦点控件
PFUIOnPaint pfOnPaint;  //画图
PFUIOnFree pfOnFree;  //组件释放
PFUIOnKeyUp pfOnKeyUp;  //弹起事件
PFUIOnKeyDown pfOnkeyDown;  //按下事件
PFUIOnMessage pfOnMsg;  //消息处理回调
int16 x,y,w,h,screenX,screenY;
int8 type;//COMPONENT, FORM
int8 isVisiable;//不可见的不会被渲染
int8 isFocusable;//是否可以接受焦点
}Component_t;

控件主要分为两类:页控件和组件控件,其中页控件包括很多组件控件,组件控件保存在页控件的children链表中。

二、控件存储

控件存储在一个全局链表中,可以理解成单例模式。

三、控件事件

从全局链表中取出最上层窗口处理事件,主要是按下和弹起的事件。

四、控件消息,绘图,释放

主要涉及到职责链模式,通过循环逐层处理消息,绘图,释放。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值