万卷书>>电脑书籍>>程序设计>>pb程序设计>>PowerBuilder使用技巧集

WANJUANSHU.COM

如何实现PB应用程序的屏幕保护功能

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



 

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

 
上一页 WanJuanShu.COM 下一页
WANJUANSHU.COM 万卷书