摘要:全屏顯示多媒體課件能夠減少windows桌面的干擾,提高學(xué)習(xí)者的使用體驗(yàn),促進(jìn)學(xué)習(xí)效果。該文嘗試使用Cover.u32、alTools.u32、Budapi.u32外部函數(shù)庫(kù)和windows API函數(shù)等多種方式來(lái)實(shí)現(xiàn)全屏演示,以達(dá)到快捷有效地實(shí)現(xiàn)多媒體程序全屏演示的目的。
關(guān)鍵詞:Authorware;多媒體課件;演示窗口
中圖分類號(hào):TP37 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)18-4269-02
Realization of ful-L Screen Display of Multimedia Courseware
XU Jin
(College of Software Engineering of Lanzhou Institute Of Technology, Lanzhou 730050, China)
Abstract: Full screen display of multimedia software can reduce the interference of the windows desktop, improve the learning experience and learning effect. In order to achieve fast and effectively full screen demonstration purposes, this paper attempts to use a variety of ways such as Cover.u32, alTools.u32, Budapi.u32 external library and windows API function.
Key words: Authorware; Multimedia Courseware; Full screen display
計(jì)算機(jī)輔助教學(xué)以其信息量大,交互性強(qiáng)等優(yōu)點(diǎn),已成為現(xiàn)代教學(xué)技術(shù)的重要組成部分,而多媒體課件的質(zhì)量,直接影響到了教學(xué)效果。Authorware開(kāi)發(fā)的多媒體程序在打包后,其演示窗口的尺寸就不可以改變了,當(dāng)Windows系統(tǒng)的屏幕分辨率高于課件演示界面分辨率時(shí),演示窗口之外的內(nèi)容就會(huì)和展示內(nèi)容同時(shí)顯示出來(lái),這樣,在使用多媒體課件進(jìn)行教學(xué)時(shí),Windows桌面上課件窗口以外的多于部分可能會(huì)對(duì)課件內(nèi)容的演示造成干擾,影響學(xué)習(xí)效果。因此,對(duì)于多媒體課件的演示,需要進(jìn)行全屏演示。在Authorware中,如果要實(shí)現(xiàn)課件的全屏播放,一般是在設(shè)計(jì)之初修改文件屬性,在“回放”選項(xiàng)卡的“大小”選項(xiàng)中設(shè)置“使用全屏”。這樣設(shè)置之后在課件運(yùn)行的時(shí)候窗口就會(huì)擴(kuò)展到整個(gè)屏幕。但是這種方法有一個(gè)弊端,就是如果運(yùn)行環(huán)境的分辨率和設(shè)計(jì)環(huán)境的分辨率不同,課件運(yùn)行時(shí)會(huì)有畫(huà)面只能局部顯示或畫(huà)面不能全屏顯示的情況,會(huì)極大地影響演示效果。解決方法有二種:將演示窗口之外變?yōu)楹谏托薷娘@示器的分辨率。
1 將演示窗口之外變?yōu)楹谏?/p>
1.1 使用外部函數(shù)庫(kù)Cover.u32
可以使用外部函數(shù)庫(kù)Cover.u32中的函數(shù)將展示窗口以外變?yōu)楹谏?/p>
實(shí)現(xiàn)方法:首先導(dǎo)入外部函數(shù)庫(kù)Cover.u32中的所有函數(shù);然后在程序的開(kāi)始,添加一個(gè)計(jì)算圖標(biāo),輸入代碼:“cover( )”,該函數(shù)可以將演示窗口之外變成黑色;最后要在程序的退出時(shí)添加一個(gè)計(jì)算圖標(biāo),輸入代碼:“uncover( )”,該函數(shù)可以取消對(duì)窗口之外的覆蓋。
1.2 將演示窗口永久提前
使用該方法時(shí),在win7系統(tǒng)下有時(shí)會(huì)出現(xiàn)課件演示窗口也被覆蓋,全屏為黑屏的情況,這時(shí),就需要使用Budapi.u32函數(shù)庫(kù)中的函數(shù)baSetWindowState()將演示窗口永久提前。
實(shí)現(xiàn)方法:首先導(dǎo)入外部函數(shù)庫(kù)Budapi.u32中的函數(shù)baSetWindowState();然后在上述cover()函數(shù)的后面添加代碼:“baSetWindowState( WindowHandle, "StayOnTop" )”,該函數(shù)可以將演示窗口永久提前。
還可以使用winapi.u32函數(shù)庫(kù)中的函數(shù)setwindowpos(windowhandle,-1,0,0,0,0,3)將窗口永久提前,如果不想讓窗口保持永久提前狀態(tài),那么再使用setwindowpos(windowhandle,-2,0,0,0,0,3)恢復(fù)即可。
2 修改顯示器的分辨率
不同的計(jì)算機(jī)有不同的分辨率,為了使制作好的多媒體作品可以在不同的計(jì)算機(jī)上演示,并保證演示內(nèi)容全屏,那么可以通過(guò)改變顯示器的分辨率的方法來(lái)對(duì)演示內(nèi)容進(jìn)行比例縮放,提高演示效果。修改顯示器分辨率時(shí)要注意,程序運(yùn)行開(kāi)始時(shí)要記錄顯示器的原始顯示參數(shù),程序運(yùn)行后在結(jié)束時(shí)要恢復(fù)顯示器的原始顯示參數(shù)。
2.1 使用外部函數(shù)庫(kù)alTools
外部函數(shù)庫(kù)alTools中的函數(shù)alChangeRes(),可以用來(lái)修改分辨率。
實(shí)現(xiàn)方法:首先在演示程序開(kāi)始時(shí)添加一個(gè)計(jì)算圖標(biāo),在其中添加以下代碼:
userx:=ScreenWidth
usery:=ScreenHeight
usercolor:=ScreenDepth
alChangeRes(1024,768,32)
以上代碼是使用變量userx、usery和usercolor來(lái)分別記錄顯示器的原始分辨率和位深度,函數(shù)alChangeRes(1024,768,32)的功能是設(shè)置顯示器的分辨率為1024*768。
最后在演示程序退出時(shí)在計(jì)算圖標(biāo)中添加代碼“alChangeRes(userx,usery,usercolor)”,該代碼可以恢復(fù)顯示器的原始狀態(tài)。endprint
2.2 使用外部函數(shù)庫(kù)Budapi.u32
外部函數(shù)庫(kù)Budapi.u32包含了信息函數(shù)、系統(tǒng)函數(shù)、文件函數(shù)、 Windows 函數(shù)和注冊(cè)表函數(shù)。這里使用函數(shù)來(lái)baSetDisplay實(shí)現(xiàn)全屏演示。
實(shí)現(xiàn)方法:
1) 程序開(kāi)始時(shí)判斷并修改顯示器分辨率
在演示程序開(kāi)始時(shí)添加一個(gè)計(jì)算圖標(biāo),其中添加以下代碼:
WriteExtFile(RecordsLocation^"skcyh.ini","演示設(shè)置") ——在有文件跳轉(zhuǎn)的情況下采用寫文件的方式記錄原來(lái)系統(tǒng)的顯示參數(shù),如果是單個(gè)文件的演示則可以省略
userx:=ScreenWidth
usery:=ScreenHeight
usercolor:=ScreenDepth
——以上代碼是使用變量userx、usery和usercolor來(lái)分別記錄顯示器的原始分辨率和位深度。
baWriteIni("顯示分辨率","width", userx, RecordsLocation^"skcyh.ini")
baWriteIni("顯示分辨率","Height", usery, RecordsLocation^"skcyh.ini")
baWriteIni("顯示分辨率","Depth", usercolor, RecordsLocation^"skcyh.ini")
——以上代碼是使用用函數(shù)baWriteIni()寫配置文件,將顯示器的原始分辨率寫入文件skcyh.ini
if ((userx<>1024)(usery<>768)(usercolor<>32)) then
setdisplay:=1
baSetDisplay(1024,768,32)
else
setdisplay:=0
end if
——以上代碼段用來(lái)檢測(cè)并設(shè)置目標(biāo)顯示參數(shù),如果顯示器的原始分辨率不是1024*768、32位位深度,則設(shè)置顯示器分辨率為該參數(shù);變量setdisplay為開(kāi)關(guān)參數(shù),記錄了系統(tǒng)顯示參數(shù)的變化情況,值為1時(shí)表示顯示器分辨率進(jìn)行了修改,值為0時(shí)表示顯示器分辨率沒(méi)有進(jìn)行修改。
2) 程序結(jié)束時(shí)恢復(fù)顯示器分辨率
程序結(jié)束時(shí)在計(jì)算圖標(biāo)中添加以下代碼:
userx:=baReadIni("顯示分辨率","width",userx,RecordsLocation^"skcyh.ini")
usery:=baReadIni("顯示分辨率","Height",usery,RecordsLocation^"skcyh.ini")
usercolor:=baReadIni("顯示分辨率","Depth",usercolor,RecordsLocation^"skcyh.ini")
——以上代碼用來(lái)從配置文件skcyh.ini中讀取記錄的原始顯示參數(shù)
if setdisplay=1 then
baSetDisplay(userx, usery, usercolor)
end if
——以上代碼段用來(lái)恢復(fù)原始顯示參數(shù),當(dāng)開(kāi)關(guān)參數(shù)setdisplay為1時(shí)顯示器的顯示參數(shù)進(jìn)行過(guò)修改,所以使用baSetDisplay()函數(shù)來(lái)恢復(fù)顯示參數(shù)。
Quit() ——退出程序
3 結(jié)束語(yǔ)
運(yùn)行結(jié)果表明,以上幾種方法可以快速有效的實(shí)現(xiàn)多媒體程序的全屏演示效果。將演示窗口之外全部變黑的優(yōu)點(diǎn)是可以保持演示程序的設(shè)計(jì)原貌,缺點(diǎn)是當(dāng)顯示器分辨率大于程序設(shè)計(jì)分辨率時(shí),不能有效利用顯示器桌面的全部空間;修改顯示器分辨
率的優(yōu)點(diǎn)是可以將演示內(nèi)容全屏顯示,但有時(shí)演示內(nèi)容會(huì)因分辨率放大而產(chǎn)生略微的變形。設(shè)計(jì)者在制作時(shí)可以結(jié)合演示內(nèi)容和使用環(huán)境選擇有效的方法來(lái)進(jìn)行全屏演示的設(shè)置。如果需要演示內(nèi)容全屏顯示,那么使用修改顯示器分辨率的方法可以達(dá)到較好的演示效果;演示程序中涉及到多個(gè)文件跳轉(zhuǎn)時(shí)就需要通過(guò)寫和讀配置文件的方法來(lái)設(shè)置分辨率;但由于各種原因,可能不能隨意修改顯示器的分辨率時(shí),則只能使用將演示窗口外圍設(shè)置為黑色,并將演示窗口永久提前的方法來(lái)達(dá)到較好的演示效果。這些方法中使用Budapi.u32函數(shù)庫(kù)中的函數(shù)會(huì)更加方便且穩(wěn)定。
參考文獻(xiàn):
[1] 袁海東.深入Authorware7.0編程[M].北京:電子工業(yè)出版社,2004.
[2] 徐瑾,王逢娟.多媒體作品創(chuàng)意設(shè)計(jì)與實(shí)現(xiàn)[M].北京:北京師范大學(xué)大學(xué)出版社,2009.
[3] 畢廣吉.Authorware變量、函數(shù)、控件手冊(cè)與范例[M].北京:電子工業(yè)出版社,2003.endprint