在Authorware中自己创建知识对象实现对系统分辨率的自动检测和调整.docx
《在Authorware中自己创建知识对象实现对系统分辨率的自动检测和调整.docx》由会员分享,可在线阅读,更多相关《在Authorware中自己创建知识对象实现对系统分辨率的自动检测和调整.docx(19页珍藏版)》请在冰豆网上搜索。
![在Authorware中自己创建知识对象实现对系统分辨率的自动检测和调整.docx](https://file1.bdocx.com/fileroot1/2023-4/19/012fca5d-eceb-4f5a-9e74-0febb939a039/012fca5d-eceb-4f5a-9e74-0febb939a0391.gif)
在Authorware中自己创建知识对象实现对系统分辨率的自动检测和调整
在Authorware中自己创建知识对象实现对系统分辨率的自动检测和调整
田保红王红玉卢厚全
(山西医科大学汾阳学院现代教育技术中心)
摘要:
在不同的电脑上,浏览用Authorware制作的多媒体课件时发现,有时图像不能达到最佳显示效果,经过分析和研究发现,这主要是系统分辨率不同的原因。
为了解决此问题,我们设计了一个自动检测调整分辨率的程序,运行该程序,就能自动检测和调整系统的分辨率,程序设计好后,将它创建成一个知识对象,以便其它程序调用。
本文详细介绍了“自动检测和调整系统的分辨率”知识对象的制作过程。
关键词:
AuthorwarealChangeRes()函数MessageBox()函数自动检测调整分辨率知识对象
在不同的电脑上,浏览用Authorware制作的多媒体课件时会发现,有时图像显示不全,有时图像显示太小。
其主要原因是,用Authorware制作的课件,在固定的显示分辨率下运行,才能达到最佳显示效果,但不能保证所有的电脑系统都使用同一显示分辨率。
为了解决此问题,经过分析和研究,我们自己设计了一个自动检测调整分辨率的程序,在运行程序时,自动检测当前系统的显示分辨率是否符合最佳运行的要求,如果符合,出现对话框如图1所示,按下“确定”按钮,进入主程序;如果不符合,出现对话框如图2所示,如要调整,
按下“确定”按钮,程序将电脑当前显示分
辨率调整到符合最佳运行的要求,然后进入主程序,如不想调整,按下“取消”按钮,程序将忽略对电脑当前显示分辨率的调整,直接进入主程序;退出程序时按下“还原退出”按钮,再将分辨率还原到更改前的原始状态,然后退出。
程序设计好后,将它创建成一个知识对象,以便其它程序调用。
下面我们分两步介绍其设计过程:
一、自动检测调整分辨率程序的设计
1、我们以调整后的分辨率为800*600像素为例进行介绍,程序设计中,更改分辨率使用的函数为alTools.U32中的alChangeRes()函数,其格式为alChangeRes(Width,Height,bitpp)其中参数Width,Height,bitpp分别为屏幕横纵显示像素及显示色彩,如:
alChangeRes(800,600,32)即将系统显示模式更改为分辨率800*600,色彩为32位真色彩,显示对话框使用的函数是WINAPI.32中的MessageBox()函数。
新建一个文件,保存为“分辨率800,600.a6p”。
程序主流程如图3所示。
2、在“初始化”图标中输入以下内容:
“width:
=ScreenWidthheight:
=ScreenHeightdepth:
=ScreenDepthchange:
=FALSE”,将系统当前的显示模式存储下来,以备恢复显示模式时使用。
3、将第一个条件交互的交互条件设为:
ScreenWidth<>800|ScreenHeight<>600,在该交互分支下的计算图标中输入如下内容,“title:
="调整分辨率"hint1:
="当前系统分辨率为:
"^ScreenWidth^"*"^ScreenHeight^"*"^ScreenDepth^"!
"hint2:
="\r本程序在
800*600*32的分辩率下才能最优显示,\r按“确定”程序将为你调整到800*600*32后进入主程序,\r按“取消”程序保持原分辩率不变,直接进入主程序,\r请您选择。
"result:
=MessageBox(WindowHandle,hint1^hint2,title,81)ifresult=1thenalChangeRes(800,600,32)change:
=TRUEelseendif”。
运行程序后,若分辨率不等于800*600时,进入该条件交互,出现如图2所示的对话框,根据你的选择,决定是否更改分辨率,然后进入主程序。
4、将第二个条件交互的交互条件设为:
ScreenWidth=800|ScreenHeight=600,在该交互分支下的计算图标中输入如下内容,“title:
="调整分辨率"hint1:
="当前系统分辨率为:
"^ScreenWidth^"*"^ScreenHeight^"*"^ScreenDepth^"!
"hint2:
="\r本程序在当前系统分辨率下能最优显示,按“确定”进入主程序。
"result:
=MessageBox(WindowHandle,hint1^hint2,title,80)”,运行程序后,若分辨率等于800*600时,进入该条件交互,出现如图1所示的对话框,按下“确定”按钮,进入主程序。
5、“还原退出”按钮交互的属性设置如图4所示,将其范围属性设置“永久”,确保主程序执行过程中“还原退出”按钮始终处于可激活状态,需要退出时,按下该按钮后,将显示模式恢复到原始状态后退出。
在该交互分支下的计算图标中输入如下内容,“ifchange=TRUEthenalChangeRes(width,height,depth)endifQuit()”。
按下“Restart”按钮,运行程序,能实现自动检测调整分辨率的效果,至此自动检测调整分辨率程序的设计过程介绍完毕。
二、自动检测调整分辨率程序知识对象的创建
1、打开文件“分辨率800,600.a6p”
2、选择菜单“Insert/Icon/KnowledgeObjectIcon”在流程线最前面插入一个空“知识对像”图标,将图标命名为“分辨率800,600”如图5所示。
3、同时按下Ctrl和Alt键,然后双击知识对象图标,便可打开知识对象图标,如图6所示。
4、选中Level1中除“知识对像”图标外的所有图标,即未插入“分辨率800,600”知识对象图标时的所有图标,按下“剪切”按钮,在Level2中单击鼠标,按下“CTRL+V”键,将Level1中剪切掉的程序,粘贴到Level2中,如图7所示。
运行程序,可以实现自动检测调整分辨率的效果,该知识对象的功能已经实现。
5、打包为a6r文件:
选择菜单“File/Publish/Package”,出现“打包文件”对话框,如图8所示,选择“WithoutRuntime”和“ResolveBrokenLinksatRuntime”,然后单击“SaveFile(S)&Package”按钮,打开“PackageFileAs”对话框,如图9所示,在Authorware安装目录下的KnowledgeObjects文件夹中,新建一个“分辨率”文件夹并将打包文件保存在此目录下。
6、回到知识对象文件,打开“知识对象图标”的属性对话框如图10,单击“Wizard”
对话框右边的“浏览”按钮,打开“选择一个向导”对话框,选择刚才保存好的向导程序,按需要设置其它属性,为了安全起见,一般都选择“lockIconWhenSavedinModel”选项,即在保存模型时将文件锁定,不允许修改。
设置好的属性对话框如图11所示。
7、属性设置好后,接下来我们将知识对象保存为模块文件,首先选中知识对象图标。
选择“File/SAVEINMODEL”,打开“SAVEINMODEL”对话框,将文件保存在Authorware安装目录下的KnowledgeObjects文件夹中先前新建的“分辨率”文件夹中。
8、单击知识对象窗口中的“Refresh”按钮,激活分类下拉列表,就会发现多了一个“分
辨率”选项,如图12所示。
选择“分辨率”选项,里面正有我们刚制作的“分辨率800,600”知识对象,如图13所示。
新建一个*.a6p文件,将“分辨率800,600”知识对象拖放到流程线上,运行程序,能够自动检测调整分辨率,至此“检测调整分辨率知识对象”的全部过程就介绍完了。
我们知道,一个完整的知识对象应包含两个文件,一个是知识对象的模块文件,一个是知识对象的向导程序。
上述过程中,我们没有制作知识对象的向导程序,主要因为制作向导程序,是一个非常复杂的过程。
实际工作中,我们可以使用相同的方法,制作“分辨率640,800”、和“分辨率1024,768”的知识对象,同样也能满足需要,在课件主程序制作完成后,将相应的“检测调整分辨率”知识对象,加在课件主程序前面,即可实现系统分辨率的自动检测和调整,在不同的电脑上,浏览用Authorware制作的多媒体课件时,达到最佳显示效果。
参考文献:
[1]李恒、《Authorware6.0多媒体实例大制作》冶金电子工业出版社2002.4
[2]Authorware6.0帮助文件
MessageBox就是消息对话框,我们在运行程序时总不免要同消息对话框打交道,要在“确定”、“取消”等按钮中进行选择。
在Authorware中使用MessageBox对话框,不仅能起到提示、警告、交互的作用,而且使应用程序更符合Windows规范,并简化了编程过程,使用户产生亲切感。
在Authorware5.0以上版本可以直接使用知识对象“MessageBox”来调用Windows的消息对话框,若在Authorware4.0及以下版本中,则必须调用外部函数winapi.u32,选择载入MessageBox函数,从而调用Windows的消息对话框。
一、Autorware5.0以上中MessageBox函数的使用
在Authorware5.0以上版本中引入了“知识对象”功能,系统自身提供了许多函数功能,用户只需按知识对象的提示作出相应的选择,就能完成函数的使用,实现了可视化编程。
Step1:
选择“KnowledgeObjects”中的“MessageBox”知识对象,如图。
并把此知识对象用鼠标拖动到流水线处。
Step2:
在出现的“Buttons”对话框中选择一种按钮形式,本例选“Yes,No”,如图。
然后点击“Next”按钮。
Step3:
在“Icon”对话框中选择消息框中的图标,如图。
然后点击“Next”按钮。
Step4:
在“Caption/Message”对话框中选择消息框中的窗口名称和欲输入的消息框文字,如图。
然后点击“Next”按钮。
Step5:
在“ReturnedValue”对话框中选择消息框中的变量返回值,如图表示设置返回的变量为“Value”,其中“ButtonNumber”表示返回按钮的数字,“ButtonName”表示返回按钮的名称,如“Yes”。
然后点击“Next”按钮。
Step6:
这里将出现一个如图所示的要求建立变量的对话框,选择“是(Y)”按钮。
Step7:
设置完毕后,流水线中MessageBox对象的图标如图。
Step8:
运行程序,出现如图所所示的消息对话框。
怎么样?
简单吧!
那你也试试。
二、Autorware5.0以下中MessageBox函数的使用
1winapi.u32中MessageBox函数的调用
先把winapi.u32复制到源程序所在的相同目录中,然后选择“Window→Functions”或按快捷键Ctrl+Shift+F,出现如图1的界面,在“Category”选择相应Authorware程序名,未命名时就为[Untitled]。
图 1
再点击按钮“Load…”,在对话框中选择源程序目录下的winapi.u32,再在图2所示中的函数库中选择“MessageBox”函数,单击“Load”,此时函数已被载入,可用于计算图标中。
图2
2 MessageBox函数的基本格式
MessageBox函数的使用基本格式为:
int:
=MessageBox(HWNDhWnd,LPCSTRlpText,LPCSTRlpCaption,UINTuType)。
各量的含义分别为:
HWNDhWnd:
程序主窗口的窗口句柄,在Authoraware中为系统变量WindowHandle;LPCSTRlpText:
输入消息对话框正文;LPCSTRlpCaption:
输入消息对话框标题;UINTuType:
是一个字符串常量,该字符串的值决定消息对话框中按钮、图标等标志情况。
如为0显示“确定”按钮;为1显示“确定”、“取消”按钮;为4显示“是”、“否”按钮。
;Int:
一个变量名,用于记录MessageBox函数的返回值。
当用户选择了“确定”、“取消”、“终止”、“重试”、“忽略”、“是”、“否”按钮其返回值分别为1,2,3,4,5,6,7。
如在计算图标中输入“MessageBox(WindowHandle,"确定退出吗?
","测试程序",1)”,运行后显示为:
输入“MessageBox(WindowHandle,"\r版权所有,不得用于商业用途!
!
\r\r 程序设计:
汪纪苗 \r\r浙江省鄞县中学 浅浅工作室 ","《布朗运动模拟程序》1.1版",48)”显示为
其中“\r”的作用是换行,UINTuType=48是显示
和“确定”按钮。
3 挖掘MessageBox函数的潜力
利用MessageBox函数不但能显示标准的Window消息框,而且可利用函数运行后的返回值对用户的选择进行相应的响应,实现与用户的交互作用。
我们在编制多媒体程序时,在用户退出程序前一般需要选择“确定”或“取消”,此时我们就可利用MessageBox函数实现这种功能。
先在流水线上建立按钮交互,在“response”中设置成“Perpetual”、“Branch”中选中“Return”,这样以便让用户随时可以退出。
在交互后的群组图标的流程图如图,
在图标messagebox中输入:
“mess:
=MessageBox(WindowHandle,"按<确定>退出程序,确定退出吗?
\r\r程序设计:
汪纪苗 \r\rHttp:
//\r\rEmail:
nbwjm@","退出...",1)”。
交互图标选择“Conditional”,如图3建立“mess=1”和“mess=2”的二个分支,其中在计算图标“mess=1”中输入“Quit(0)”,群组图标“mess=2”为空。
最后,运行后得到如图4的消息对话框,选择“确定”后退出,选择“取消”仍返回原程序运行处。
图 3 图 4
运用上述方法还可制作程序的帮助系统等。
Authorware作为优秀的多媒体制作软件,运用它所包含的系统函数、外部函数,能轻松、快捷地实现相应的功能,其中MessageBox函数就是一种常见而实用的函数,为我们制作的多媒体程序增色不少。
4.1.8 用WINAPI.U32屏蔽功能键和
隐藏任务栏
1)新建一个文件,文件名为sample.a7p。
2)放置一计算图标于流程线上。
3)按【Ctrl+Shift+F】快捷键,打开“函数”窗口。
4)选择sample.a7p,单击【加载】钮,打开Winapi.us2文件,并引入其中的SystemParametersInfo()、FindWindow()和SetWindowpos()三个函数。
5)双击计算图标,在里面输入如下程序语句:
SystemParametersInfo(97,1,1,1)——屏蔽键盘所有功能键。
wnd:
=findwindow(″shell_traywnd″,″″)——捕捉任务栏窗口。
SetWindowpos(wnd,0,0,0,0,0,128)——隐藏任务栏窗口。
6)在程序的退出处放置一计算图标,双击计算图标,在里面写上:
l SystemParametersInfo(97,0,1,1)——恢复键盘所有功能键。
l wnd:
=FindWindow(″shell_traywnd″,″″)——捕捉任务栏窗口。
l SetWindowpos(wnd,0,0,0,0,0,64)——显示任务栏窗口。
我们还可以在运行程序前,通过Windows API函数捕捉所有的窗口,获得窗口的句柄,然后再向它们依次发送MW_QUIT消息,这样就可以在运行程序之前,关闭所有正在运行的程序,从而释放出更多的资源给你的多媒体作品。