编辑: 学冬欧巴么么哒 2012-12-11
动画类窗口

一、基本特征 动画类窗口的主要特点是在屏幕上显示一幅动画,可以是局部或全屏,该动画是位于资源中的连续若干张原始图片构成.

建立动画窗之后,该类窗口能自动实现播放,停止(若需要)或接受触摸屏的消息等. 动画类的代码位于uianiw.c中

二、数据结构 动画类的数据结构描述了动画类窗口的私有数据特征,该数据结构在本窗口创建时的WM_CREATE消息中被建立和初始化,在中途收到消息可发生改变,当需要显示刷屏时依据该数据结构中的相关参数: typedef struct { PicDescp IconAni;

动画图片描述,记录了动画第一幅图的资源ID UINT16 TxtID;

作为为扩展,动画窗也可支持在其上显示文本 UINT16 TotalPic;

总的动画图片数目 UINT16 CurrPic;

记录当前正显示的一幅动画的相对位置 UINT16 TickPerFrame;

动画的播放周期,该数值越大动画越慢 UINT32 style;

风格 UINT32 TimerID;

用到的定时器ID BOOLEAN Pause;

播放状态: False:正在播放 true:暂停 }W_ANIMATION;

三、响应的消息 动画基本类响应下列消息: 详细描述如下: WM_CREATE 消息: 当窗口创建时被系统自动发送,动画类响应该消息创建动画类的数据结构.以及初始化必要的数据. WM_DESTROY 消息: 当窗口被关闭时由系统自动发送至动画窗,在其中释放掉创建时申请的动态数据. WM_PAINT 画屏消息:每隔一段固定时长(100ms)由刷屏任务(disptask)发送至GUI TASK的相关窗口,动画类响应这个刷屏消息时, 先判断屏幕是否需要更新,若需要更新则将当前一幅动画显示到逻辑屏上,并清除屏幕更新状态. WM_SetPic 设置图片消息,用户可以向动画窗口发送此消息,通过wParam参数设置动画第一幅图片的资源ID,lParam参数设置本幅动画的总张数.一般在动画窗口创建之后向窗口发送一个消息设置好图片.当需要由一幅动画切换到另一幅动画时,只需要向动画窗口发送该消息即可.在设置了图片消息中会启动一个定时器,当时间到了会进入WM_TIMER消息. WM_TIMER 定时器消息,定时时间到了后会自动进入,进入后根据需要将图片切换到下一幅图片,或结束播放. WM_TOUCH 触摸屏消息,当动画窗口具有WES_AniTouchPause分隔时,触摸屏在动画上点击一次会暂停当前的动画,再点一次又继续开始播放,在此消息中处理. WM_SETFOCUS和WM_KILLFOCUS 获得焦点和失去焦点的消息.当窗口具有WES_AniFouceLostPause风格时,动画窗失去了焦点,就自动暂停播放,重新获得焦点时,又继续播放 (例如可用于界面的多个动画图标切换) 本类窗口不响应按键消息.

四、使用示例: 下例创建了一个全屏的动画窗口,创建后向该窗口发送一个设置图片的消息,将资源中的BID_PowerOn_Pic01图片设为动画的起始图片,张数为20张. 由于风格设为WES_AniwOnce,动画将自动播放,播放完毕后自动退出 若风格设为WES_AniwRepeat ,则动画将一直播放,直到用户将此窗口关闭. UINT16 number=20;

win = WindowCreate( win , WS_FULLSCREEN|WS_TICK|WES_AniwOnce, WinIDAni1, 0,0, 320,240, 0, BID_PowerOn_Pic01, 0, NULL, WinAnimationProcMap, NULL );

WindowSendMessage(win,WM_SetPic,BID_PowerOn_Pic01, &number);

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题