仇壮丽
摘 要:本文总结了三种在播放PowerPoint课件时显示系统时间的简单方法:利用第三方时钟软件嵌入Flash动画,通过VBA调用Windows API函数显示时间。
关键词:PowerPoint;Flash动画;时间显示;VBA
中图分类号:G434文献标识码:B 文章编号:1673-8454(2009)12-0066-03
引言
PowerPoint是教学过程中使用得最多的多媒体软件,由于它使用简单,容易上手,得到了绝大多数教师的青睐。在用PowerPoint进行教学的过程中,很多教师提出了播放时显示系统时间,以便掌握教学进度的要求,由于PowerPoint并不提供相应的功能,笔者通过探索,总结出三种简单、可行的方法。
一、利用独立的第三方时钟软件
要在播放课件的时候显示系统时间,要求第三方软件具有前端显示的功能(Always on top)。在这里,笔者推荐一款免费的时钟软件。该软件用汇编语言编写,短小精巧,可以随意移动时钟窗口位置。下载地址:http://211.90.241.130:22366/mysoft/clock.zip。
在播放幻灯片之前,先运行该软件。运行效果如图1所示(右上角显示当前时间):
二、与Flash动画结合起来显示时间
这种方法是在幻灯片母版中插入能显示时间的Flash动画。具体步骤如下:
1.用Flash制作一个能显示时间的动画
(1)用Flash新建一个文档,将其大小设置为“110×40”像素。
(2)在第一帧用文本工具添加一个文本对象,设置其文本类型为“动态文本”,字体为“arial”,字号为“20”,并将其“变量名”设置为“mytime”。
(3)打开“动作”面板,在专家模式下输入以下代码:
NowTime = new Date();
hour = NowTime.getHours();
if(length(hour) < 2)
hour = '0' + hour;
minutes = NowTime.getMinutes();
if(length(minutes) < 2)
minutes = '0' + minutes;
seconds = NowTime.getSeconds();
if(length(seconds) < 2)
seconds = '0' + seconds;
mytime = hour + ":" + minutes+ ":" + seconds;
(4)在该帧之后插入一个关键帧,打开动作面板,输入以下代码:
gotoAndPlay(1)
(5)导出影片至“C: ime.swf”备用。
2.在PowerPoint中插入Flash动画
在PowerPoint中插入Flash动画有多种方法,这里介绍比较简单的一种:
(1)将幻灯片试图切换为母版视图。
(2)从“视图”→“工具栏”中显示“控件工具箱”,在“其他控件”选择“Shockwave Flash Object”,然后在幻灯片母版的右上角绘制一个矩形,作为Flash动画的显示区域。
(3)选中该控件,单击“控件工具箱”上的“属性”按钮,打开属性对话框。
(4)将该控件的“movie”属性设置为“C: ime.swf”,“play”属性设置为“True”,“quality”属性设置为“1”。
至此,已成功在PowerPoint中插入Flash动画,由于是针对母版进行的操作,每一张幻灯片在播放的时候都会动态显示当前时间。具体效果如图2所示(右上角显示系统时间):
三、用PowerPoint内置的VBA编程实现时间动态显示
由于PowerPoint没有提供计时器控件,因此,需要调用API函数实现时间的动态显示。Shyam Pillai介绍了利用PowerPoint 2000提供的AddressOf操作调用API函数的方法。利用该方法,可以通过调用Windows的SetTimer和KillTimer函数实现时间的动态显示。具体方法如下:
1.建立TimerOnOff宏
在PowerPoint中打开“Visual Basic编辑器”,新建一个“模块”,并输入以下代码:
Option Explicit
Declare Function SetTimer Lib "user32" _
(ByVal hwnd As Long, _
ByVal nIDEvent As Long, _
ByVal uElapse As Long, _
ByVal lpTimerFunc As Long) As Long
Declare Function KillTimer Lib "user32" _
ByVal hwnd As Long, _
ByVal nIDEvent As Long) As Long
Public TimerID As Long
Public bTimerState As Boolean
Sub TimerOnOff()
If bTimerState = False Then
TimerID = SetTimer(0, 0, 1000, AddressOf TimerProc)
If TimerID = 0 Then
MsgBox "Unable to create the timer", vbCritical + vbOKOnly, "Error"
Exit Sub
End If
bTimerState = True
Else
TimerID = KillTimer(0, TimerID)
If TimerID = 0 Then
MsgBox "Unable to stop the timer", vbCritical + vbOKOnly, "Error"
End If
bTimerState = False
End If
End Sub
Sub TimerProc(ByVal hwnd As Long, _
ByVal uMsg As Long, _
ByVal idEvent As Long, _
ByVal dwTime As Long)
ActivePresentation.SlideMaster.HeadersFooters.Footer.Text = Format(Time, "hh:nn:ss")
End Sub
2.设置启动TimerOnOff宏的界面
打开“控件工具箱”,在幻灯片的第一页绘制一个命令按钮,将其“Caption”属性设置为“打开/关闭时钟”,并为其click事件编写如下代码:
call TimerOnOff
至此,在放映幻灯片时,用鼠标单击该按钮,就可以启动动态时钟,该时钟会在每张幻灯片的页脚显示当前时间。具体效果如图3所示(下方显示系统时间):
四、结束语
本文所提出的PowerPoint显示时间的三种方法中,第一种方法最简单,使用之前只需经过简单的设置就能达到目的;第二种方法用Activex在PowerPoint母版中嵌入Flash动画,该动画需要与幻灯片同在;第三种方法使用了VBA编程和Windows的API函数,相对复杂一点,但这是唯一不需要第三方软件支持的方法,在手头缺乏第三方软件时,这也是一个不错的选择。但唯一不足之处就是需要设置“宏”的安全性等级,在打开课件时需要“启用宏”,此外PowerPoint不能自动运行宏,因此需要在演示开始之前手动打开时钟。从“工具”→“宏”中选择TimerOnOff宏后,点击运行即可,本文实例中采用命令按钮来实现。当然,不管使用哪种方法,由于时钟使用的是本地计算机的系统时间,因此均需在演示开始前校正系统时间。