荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: playboy (壮志凌云), 信区: Program
标  题: 如何实现PB应用程序的屏幕保护功能
发信站: BBS 荔园晨风站 (Mon Jan 24 13:21:33 2000), 转信


太原重型机械学院软件工程教研室 李邦庆 王二才

----说到屏幕保护,一般人会认为那是操作系统的事,其实在自己开发的应用
程序中也可实现屏幕保护功能,而且这一功能除了确实能保护显示器屏幕外,
还能增加意想不到的效果,比如能将软件版本、程序图标、开发人员介绍等相
关信息以动态文字和动画反复播放。在PowerBuiler中使用idle()函数和idle事
件可实现这一功能。

----一.idle()函数和idle事件

----idle()函数叫空闲函数,与timer()函数有点类似,功能是为系统设置一个
定时器,时间一到就触发idle事件,函数的参数为以秒为单位的时间,idle事
件叫做空闲事件,当系统接到鼠标或键盘激活的消息时中止idle事件;

----二.制作屏幕保护窗口

----1.新建一窗口w_save_screen作为屏幕保护窗口,因为屏幕保护界面一般
是对整个屏幕的,窗口不含标题条和菜单条,这要求窗口的类型最好为
response(响应窗口)。至于窗口显示什么样的文本、图片或动画,以何种方
式显示,依开发者的爱好和用户的需求而定,本文的屏幕保护是动态显示一
幅介绍软件的图片。

----2.在屏幕保护窗口里加入一图形控件p_1,在窗口的open事件写以下代码:
//图形控件p_1装入当前路径下的一幅图,文件名:scgl6.bmp
p_1.picturename= "scgl6.bmp"
//每隔0.1秒触发一次timer事件,形成动画效果
timer(.1)

----3. 声明窗口的实例变量:

integer ii_i = 1 //用于动画可反复播放的循环数

----4.在本例中,限于篇幅,为减少相似程序代码量,图形只可向下平移、
向右下
角斜移,读者可稍作改动就可写出向上、向左、向右平移,向四个角斜移
斜的代码。
在窗口的timer事件下写以下代码

integer li_num //图片位置变量
if ii_i =1 then
for li_num=1 to 1540 step 1
//Y坐标递增,图形向下移
p_1.Move(1,li_num) next
ii_i ++
p_1.Move(1,1)
p_1.SetRedraw(true)
return
end if
if ii_i=2 then
for li_num=1 to 1540 step 1
//X、Y坐标同时递增,向右下角移动
p_1.Move(li_num, li_num)
next
ii_i = 1 //循环复位,重新开始下一轮
p_1.Move(1,1)
p_1.SetRedraw(true)
return
end if
----三.应用程序代码的编写

----打开应用程序的的script画板中,在open事件中增加下面一行代码:

idle(120)//2分种没有鼠标或键盘消息触发idle事件
在idle事件中写下面的代码用于打开屏幕保护窗口
open(w_save_screen)
至此一个完整的屏幕保护功能就实现了。

----四.更进上步的说明

----本例子较为简单,如启动屏幕保护的时间只能限制在2分钟,不够灵活,
其实这一缺点也容易克服,方法是:把启动时间定义为一个全局变量,将其
保存在一配置文件中,由用户自己设置启动时间,甚至可以关闭屏幕保护功能
,每次应用程序启动时从配置文件中读取这一参数,然后传给idle()函数。




--
※ 来源:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: gnet124.szptt.net.cn]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店