在用Authorware制作多媒體作品時(shí),我們希望展示窗口和普通窗口一樣可以最小化、關(guān)閉、拖動(dòng)。要實(shí)現(xiàn)這一目的,最簡(jiǎn)單的方法是在設(shè)置文件屬性時(shí),保留Title Bar,但這樣會(huì)影響作品的美觀。如何制作自己的標(biāo)題欄,使之和整個(gè)作品搭配協(xié)調(diào),并且可以實(shí)現(xiàn)標(biāo)題欄的功能呢?
下面讓我們來(lái)做一個(gè)類似“金山毒霸2002”的窗口(如圖1)。將“金山毒霸2002”的窗口截取下來(lái),用Photoshop修改成你滿意的樣子,保存作為作品的背景。再制作最小化和關(guān)閉的按鈕圖形以備用。
圖1 類似“金山毒霸2002”的窗口
新建文件
在Authorware中新建一個(gè)文件。單擊“Modify”菜單,選擇“File —Properties…”單擊。在彈出的“文件屬性”對(duì)話框中選擇“Playback”標(biāo)簽,將“Size”項(xiàng)設(shè)定為“Variable”(可變的),取消“Title Bar”(標(biāo)題欄)和“Menu Bar”(菜單欄)的復(fù)選。
窗口設(shè)置
拖一個(gè)“顯示”圖標(biāo)到流程線上,命名為“背景”。將制作好的背景圖片導(dǎo)入。
拖一個(gè)“計(jì)算”圖標(biāo)到流程線上,命名為“重設(shè)窗口大小”,雙擊,在其中輸入程序:
ResizeWindow(593, 406)
MoveWindow(100, 100)
第一句的作用是將窗口大小設(shè)置成合適大小(以背景圖片的大小為準(zhǔn))。第二句的作用是將窗口移動(dòng)到屏幕的合適位置。
最小化及關(guān)閉功能
在流程線上放置一個(gè)“交互”圖標(biāo),命名為“窗口控制”。在其右側(cè)放置兩個(gè)“計(jì)算”圖標(biāo),響應(yīng)類型都設(shè)為“Button”(按鈕響應(yīng)),分別命名為“最小化”、“關(guān)閉”。在它們的分支屬性對(duì)話框中“Scope”(響應(yīng)范圍)項(xiàng)復(fù)選“Perpetual”(永久),“Branch”(分支)項(xiàng)選擇“Return”(返回)。編輯這兩個(gè)響應(yīng)的按鈕樣式,用制作好的圖片代替默認(rèn)的樣式并調(diào)整其位置。
在“最小化”圖標(biāo)中輸入程序:
ShowWindowAsync(WindowHandle, 6)
這里調(diào)用Windows API函數(shù)ShowWindowAsync實(shí)現(xiàn)將窗口最小化。保存時(shí),系統(tǒng)會(huì)彈出對(duì)話框,提示選擇此函數(shù)的來(lái)源,選擇Winapi.u32。
在“關(guān)閉”圖標(biāo)中輸入程序:
quit(0)
作用是退出本程序。
窗口移動(dòng)功能
在這里我們要實(shí)現(xiàn)當(dāng)用戶拖動(dòng)自定義標(biāo)題欄時(shí),窗口隨之移動(dòng)的功能。
在交互圖標(biāo)“窗口控制”右側(cè)放置一個(gè)“組群”圖標(biāo),響應(yīng)類型為“Hot Spot”(熱區(qū)響應(yīng)),命名為“移動(dòng)窗口”,在分支屬性對(duì)話框中“Scope”(響應(yīng)范圍)項(xiàng)復(fù)選“Perpetual”(永久),“Branch”(分支)項(xiàng)選擇“Return”(返回)。設(shè)定其響應(yīng)范圍包圍背景的上部分,這就是我們的標(biāo)題欄范圍(如圖2)。
圖2 這就是我們的標(biāo)題欄
雙擊“移動(dòng)窗口”圖標(biāo),在其中放置一個(gè)“交互”圖標(biāo),命名為“move window”。在此交互圖標(biāo)右側(cè)放置兩個(gè)“計(jì)算”圖標(biāo),響應(yīng)類型都為“Conditional”(條件響應(yīng)),響應(yīng)條件分別為MouseDown和~MouseDown。設(shè)置MouseDown圖標(biāo)分支的屬性,“Automatic”為“When True”,“Branch”為“Try Again”。設(shè)置~ MouseDown圖標(biāo)分支的屬性,“Automatic”為“When True”,“Branch”為“Exit Interaction”。
在MouseDown圖標(biāo)中輸入程序:
ReleaseCapture()
SendMessage( WindowHandle, 161, 2, 0)
這里同樣是調(diào)用Windows API函數(shù)實(shí)現(xiàn)窗口可拖動(dòng)的功能。當(dāng)系統(tǒng)提示選擇這兩個(gè)函數(shù)的來(lái)源時(shí),選擇Winapi.u32。
~MouseDown圖標(biāo)內(nèi)容為空。
整個(gè)程序就完成了,最后的流程如圖3。
我們看一下最后的效果。單擊“最小化”按鈕可將窗口最小化到任務(wù)欄,在任務(wù)欄上單擊可恢復(fù);單擊“關(guān)閉”按鈕可退出本程序;拖動(dòng)自定義的標(biāo)題欄可移動(dòng)窗口的位置。達(dá)到了預(yù)期的效果。
圖3 這個(gè)程序的流程圖
以上程序在Windows 98 SE、Authorware 6.0環(huán)境下通過(guò)。