HGui manual

HGui 初具一个GUI的模型了.它有scene,DC, ctrl, object, event等等概念,并自成一个系统, 形成一套类windows的思想,由于面向embed,故小巧.具有基本的图形图像处理能力,能进行图片拉伸,alpha, 亮度调节等等.显示采用两个surface,即绘图层和显示层分开.

一:概念介绍;

1.scene(场景);

一个场景必须有是全屏的.它有自己的场景过程-----即用户自定义的消息处理函数.形式类似于这样:

DEFINESCENE(SCENE_ID)
MSGMAPBEGIN
    ONCREAT(OnCreat)
    ONMSG(EVT_RESTORE, OnRestore)
    ONMSG(EVT_PAINT, OnPaint)
    ONMSG(EVT_TIMER, OnTimer)
    ONDESTROY(OnDestroy)
    ONKEYDN(OnKey)
    ONMSG(EVT_EXIT, OnExit)
    ONMSG(EVT_COMMAND, OnCommand)
MSGMAPEND

2.DC

DC相当于一块画布,是绘图或写字时要用的.

如在处理EVT_PAINT消息时用hai_BeginPaint()函数获得DC,用完后调用hai_EndPaint();如在别的地方则用hai_GetSceneDC(),释放用hai_DeletteDC();
3.Ctrl

目前支持push button, radio button, check button, select button(类似快捷方式),progress, editbox, scroll bar, static ctrl. 输入法控件,专用于触摸屏的有event area ctrl, list area ctrl.

4.object

支持一些常用对象,如pen, bitmap, brush, font, caret等等

5.event

整个系统是基于event驱动的.用于event处理的函数比较多.

hai_SendEvent():该函数直接调用事件处理过程,没用延迟.

hai_PostEvent();该函数把消息放入消息队列;

这是两个主要的也是常用的消息处理函数.

二,移植

HGui的移植非常简单;

1.把pLcdDisRam指向LCD的显示缓冲;

2.如要用自带的heap处理,则要调用hai_InitMemHeap();

3,完成haikey.c中键,触摸屏,时钟isr的正确放置.

三.场景操作:

1.必须初始化一个桌面场景.这是HGui运行的基础.这个桌面场景是永远存在的,不能被消毁.

2.基本操作:

GOTOSCENE(); 即跳到下一个场景,如这条语句放在EVT_DESTROY消息中,则本场景会消毁,返回的时候将回到本场景的前一个场景.

RETURNSCENE();返回到前一个场景;

SWITCHAPP();和GOTOSCENE()差不多,只不过更改了APPID;

3.快速回到桌面或进入一个APP;

此用于快捷键操作.

a.在定义场景时,如该场景会申请资源,则要处理EVT_EXIT消息,在这个消息中释放申请的资源.这是快捷操作的前提,否则会出现资源泄露.

b.在响应跳跃场景的消息中调用PREGOTOSCENE();起点从桌面开始;

c.桌面场景收到EVT_EXIT消息时不是释放资源,而要做特殊处理:

    CALLPREGOTOSCENE();//从桌面场景开始调用;

    pEvent->EventType = EVT_NULL;//完了,不用EVT_EXIT消息;

必须加入这两句;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值