论文部分内容阅读
摘 要:本文探讨了在Authorware多媒体课件开发中,如何调用Windows API 函数的方法。并结合声卡检测具体实例来说明。最后给出了相关的注意问题。
关键词:Authorware;课件;API函数
中图分类号: G 434文献标识码: B文章编号:1673-8454(2008)06-0051-02
目前,用于制作课件的主要工具Authorware的最新版本为Authorware7.0,但是,在Authorware中有很多复杂的功能都很难实现。如检测声卡和调节分辨率等。通常人们借助于开发第三方的UCD函数来解决这些问题。但是,这些UCD函数通常需要购买,或者附加一定条件的试用,从而给广大的课件制作者带来不便。这里我们介绍如何在Authorware(以Authorware7.0为例)中调用Windows系统的API(应用程序接口)函数来方便和自由地实现一些功能。
一、Windows API 与 Authorware
API是指“应用程序编程接口”,即Application Programming Interface的缩写。它是Windows 内部的极其重要的组成部分,是Windows提供给程序员的一些用C语言编写并由操作系统自身调用的一系列函数,Windows的API主要是一系列复杂的函数、消息的集合。它可以看作是Windows系统为在其下运行的各种开发系统提供的开放式通用功能增强接口,是对高级语言功能的最重要的扩充。几乎所有用高级语言的标准功能不能处理的问题都可以用调用API接口函数的方法来解决。尤其在一些直接和硬件交互的低级操作中,调用API接口的函数往往是唯一可行的办法。因此,调用API接口并结合多线程的编程技术,已成为Windows环境下最流行的一种高级技术。在Authorware中调用这些Windows操作系统函数可以实现许多Authorware中本身无法实现的任务。
Windows的API函数由许多“动态链接库”组成,在Windows系统中,核心的Windows API DLL有以下这些:
gdi32.dll 图形显示界面的API。
kernel32.dll 处理低级任务(比如内存和任务管理)的API。
user32.dll 处理窗口和消息的API。
另外,还有对于我们多媒体课件开发尤为重要的:winmm.dll 处理多媒体任务的API。
还不断有新的API出现来处理新的操作系统扩展,比如连接网络和新的外部设备等。一个DLL文件实质上就是一个函数库,如果需要调用某个函数,首先要搞清楚该函数所在的DLL,然后连接该库,再调用该函数。在Authorware中可以利用动态链接库直接使用Windows API函数库。在调用一个DLL函数之前,必须了解该函数的调用协议,主要包括函数的名称,参数的数目和类型以及返回值类型等。况且因为Windows API函数不是Authorware内部函数,所以在在调用这些函数之前必须要先载入,并加以声明。下面以一个实例来说明这个过程。
二、声卡检测
对于在Windows平台中开发多媒体课件来说,声音是一个非常重要的因素,特别是对于一些主要靠声音来传递教学信息的课件。这样就必须要求用户当前的机器上要安装有声卡(及其驱动程序)。如果普通用户在使用课件时,没有声音传出,这样使得学习者不知道问题出在哪儿,这样无疑会增加普通用户操作上的负担和困难,从而降低了软件的友好性和易用性。因此,我们可以在课件开始运行之前,调用一个函数来检测声卡及其驱动程序。如果检测不到声卡及其驱动,则提示用户,并强行退出。具体过程如下:
打开Authorware,新建一个文件,保存为“检测声卡程序.a7p”。
单击工具栏上的“functions window”按钮,弹出“Functions”窗口。
在“Functions”窗口中,单击Category栏最下方的“检测声卡程序.a7p”一项,这时“Functions”窗口下方的“load”按钮由灰色变成黑色,表明可以加载函数了。
单击“Functions”窗口下方的“load”按钮,弹出“load function”对话框,我们找到Windows系统目录(对于Windows98/95是“System”,对于Windows NT/XP 是“System32”),并选择系统目录下的Winmm.dll文件(如图1所示),单击“打开”按钮。
弹出“Windows API 函数装载设置”对话框,在“Function Name”中输入想要调用的DLL函数名,这里输入检测声卡播放WAV的函数“waveOutGetNumDevs”,在 “Arguments”中输入函数的参数类型为“Void”,在“Return”中输入返回值的类型“long”,也可以选择在“Description”输入关于函数的描述(如图2所示)。单击“load”按钮,此时,在窗口的下方出现“Successfully loaded waveOutGetNumDevs() ”提示信息。
单击“Done”按钮,完成函数的加载,在随后弹出的“load function”对话框中,单击“取消”按钮表示不再继续加载函数。函数waveOutGetNumDevs()就出现在了Authorware中的Functions窗口中了。
下面是要使用这个函数来检测声卡是否支持WAV文件的播放。
在课件主流程线,拖放一个计算图标,命名为“声卡检测”;
打开“声卡检测”计算图标,在其中输入如下简短程序
result:= waveOutGetNumDevs()
if result<=0 then
quit()
end if
保存关闭计算图标。
把这个“声卡检测”计算图标放到你的课件最开始部分,这样当系统声卡存在时,便能继续执行课件程序而不影响你的课件,但当系统不存在声卡,或声卡工作不正常时,就会自动退出课件。
三、注意的问题
1.参数转换规则
在Authorware调用API函数需要注意的时,Authorware和一般的高级编译语言或Windows所使用的数据类型不一致,需要进行参数类型的转换。Authorware里参数有VIOD、CHAR、BYTE、SHORT、WORD、LONG、DWORD、FLOAT、DOUBLE、POINTER 以及STRING等类型,于是在调用DLL函数时必须按一定的规则进行参数类型转换。表1列出了常用的类型及其转换规则。这个转换规则也适用于其它高级语言参数类型与Authorware之间的转换。
关于Authorware DLL调用中的返回类型转换与表中基本类似,不同之处是STRING类型返回值代表的是一串以“\0”结尾的字符串句柄。
2.正确填写函数调用各项值
要注意正确地填写函数的参数的类型及个数和函数的返回值类型。如果在调用中,输入了错误的参数类型,而并不给出错误的提示,并且在对话框下仍提示正确,但是不能正确地载入Authorware中或不能正确地使用。如果不能确定的话,请参阅Windows SDK 等相关技术开发文档。
3.注意函数名的书写问题
要注意区分函数名的大小写问题。
要注意正确地书写函数的名称。在API中函数是ChangeDisplay
Settings的形式,但是在Authorware 32位的版本中要输入为“ChangeDisplaySettingsA”或者是“ Change DisplaySettingsW”。
参考文献:
[1]袁海东.《深入Authorware 7.0编程》[M],北京:电子工业出版社,2004.
关键词:Authorware;课件;API函数
中图分类号: G 434文献标识码: B文章编号:1673-8454(2008)06-0051-02
目前,用于制作课件的主要工具Authorware的最新版本为Authorware7.0,但是,在Authorware中有很多复杂的功能都很难实现。如检测声卡和调节分辨率等。通常人们借助于开发第三方的UCD函数来解决这些问题。但是,这些UCD函数通常需要购买,或者附加一定条件的试用,从而给广大的课件制作者带来不便。这里我们介绍如何在Authorware(以Authorware7.0为例)中调用Windows系统的API(应用程序接口)函数来方便和自由地实现一些功能。
一、Windows API 与 Authorware
API是指“应用程序编程接口”,即Application Programming Interface的缩写。它是Windows 内部的极其重要的组成部分,是Windows提供给程序员的一些用C语言编写并由操作系统自身调用的一系列函数,Windows的API主要是一系列复杂的函数、消息的集合。它可以看作是Windows系统为在其下运行的各种开发系统提供的开放式通用功能增强接口,是对高级语言功能的最重要的扩充。几乎所有用高级语言的标准功能不能处理的问题都可以用调用API接口函数的方法来解决。尤其在一些直接和硬件交互的低级操作中,调用API接口的函数往往是唯一可行的办法。因此,调用API接口并结合多线程的编程技术,已成为Windows环境下最流行的一种高级技术。在Authorware中调用这些Windows操作系统函数可以实现许多Authorware中本身无法实现的任务。
Windows的API函数由许多“动态链接库”组成,在Windows系统中,核心的Windows API DLL有以下这些:
gdi32.dll 图形显示界面的API。
kernel32.dll 处理低级任务(比如内存和任务管理)的API。
user32.dll 处理窗口和消息的API。
另外,还有对于我们多媒体课件开发尤为重要的:winmm.dll 处理多媒体任务的API。
还不断有新的API出现来处理新的操作系统扩展,比如连接网络和新的外部设备等。一个DLL文件实质上就是一个函数库,如果需要调用某个函数,首先要搞清楚该函数所在的DLL,然后连接该库,再调用该函数。在Authorware中可以利用动态链接库直接使用Windows API函数库。在调用一个DLL函数之前,必须了解该函数的调用协议,主要包括函数的名称,参数的数目和类型以及返回值类型等。况且因为Windows API函数不是Authorware内部函数,所以在在调用这些函数之前必须要先载入,并加以声明。下面以一个实例来说明这个过程。
二、声卡检测
对于在Windows平台中开发多媒体课件来说,声音是一个非常重要的因素,特别是对于一些主要靠声音来传递教学信息的课件。这样就必须要求用户当前的机器上要安装有声卡(及其驱动程序)。如果普通用户在使用课件时,没有声音传出,这样使得学习者不知道问题出在哪儿,这样无疑会增加普通用户操作上的负担和困难,从而降低了软件的友好性和易用性。因此,我们可以在课件开始运行之前,调用一个函数来检测声卡及其驱动程序。如果检测不到声卡及其驱动,则提示用户,并强行退出。具体过程如下:
打开Authorware,新建一个文件,保存为“检测声卡程序.a7p”。
单击工具栏上的“functions window”按钮,弹出“Functions”窗口。
在“Functions”窗口中,单击Category栏最下方的“检测声卡程序.a7p”一项,这时“Functions”窗口下方的“load”按钮由灰色变成黑色,表明可以加载函数了。
单击“Functions”窗口下方的“load”按钮,弹出“load function”对话框,我们找到Windows系统目录(对于Windows98/95是“System”,对于Windows NT/XP 是“System32”),并选择系统目录下的Winmm.dll文件(如图1所示),单击“打开”按钮。
弹出“Windows API 函数装载设置”对话框,在“Function Name”中输入想要调用的DLL函数名,这里输入检测声卡播放WAV的函数“waveOutGetNumDevs”,在 “Arguments”中输入函数的参数类型为“Void”,在“Return”中输入返回值的类型“long”,也可以选择在“Description”输入关于函数的描述(如图2所示)。单击“load”按钮,此时,在窗口的下方出现“Successfully loaded waveOutGetNumDevs() ”提示信息。
单击“Done”按钮,完成函数的加载,在随后弹出的“load function”对话框中,单击“取消”按钮表示不再继续加载函数。函数waveOutGetNumDevs()就出现在了Authorware中的Functions窗口中了。
下面是要使用这个函数来检测声卡是否支持WAV文件的播放。
在课件主流程线,拖放一个计算图标,命名为“声卡检测”;
打开“声卡检测”计算图标,在其中输入如下简短程序
result:= waveOutGetNumDevs()
if result<=0 then
quit()
end if
保存关闭计算图标。
把这个“声卡检测”计算图标放到你的课件最开始部分,这样当系统声卡存在时,便能继续执行课件程序而不影响你的课件,但当系统不存在声卡,或声卡工作不正常时,就会自动退出课件。
三、注意的问题
1.参数转换规则
在Authorware调用API函数需要注意的时,Authorware和一般的高级编译语言或Windows所使用的数据类型不一致,需要进行参数类型的转换。Authorware里参数有VIOD、CHAR、BYTE、SHORT、WORD、LONG、DWORD、FLOAT、DOUBLE、POINTER 以及STRING等类型,于是在调用DLL函数时必须按一定的规则进行参数类型转换。表1列出了常用的类型及其转换规则。这个转换规则也适用于其它高级语言参数类型与Authorware之间的转换。
关于Authorware DLL调用中的返回类型转换与表中基本类似,不同之处是STRING类型返回值代表的是一串以“\0”结尾的字符串句柄。
2.正确填写函数调用各项值
要注意正确地填写函数的参数的类型及个数和函数的返回值类型。如果在调用中,输入了错误的参数类型,而并不给出错误的提示,并且在对话框下仍提示正确,但是不能正确地载入Authorware中或不能正确地使用。如果不能确定的话,请参阅Windows SDK 等相关技术开发文档。
3.注意函数名的书写问题
要注意区分函数名的大小写问题。
要注意正确地书写函数的名称。在API中函数是ChangeDisplay
Settings的形式,但是在Authorware 32位的版本中要输入为“ChangeDisplaySettingsA”或者是“ Change DisplaySettingsW”。
参考文献:
[1]袁海东.《深入Authorware 7.0编程》[M],北京:电子工业出版社,2004.