摘要:利用Authorware外部擴展函數(shù),對Authorware中的菜單進行改進,在Authorware中實現(xiàn)了多級菜單和右鍵彈出菜單。
關(guān)鍵詞:Authorware;外部擴展函數(shù);多級菜單;彈出菜單
0引言
Authorware提供了\"Pull-Down Menu”這種交互方式,利用它可以制作出菜單。不過,與常見的多級Windows標準菜單相比,它的菜單大為遜色,而右鍵彈出菜單就更無法制作。其實,在Authorware的安裝程序中,Macromedia公司為我們準備了一些外部擴展函數(shù),利用它們,可以制作出多級Windows標準菜單和右鍵彈出菜單。
1必需的外部擴展函數(shù)
這里我們要借助Authorware的外部擴展函數(shù):Winapi.u32和tMsControls.u32來制作多級標準Windows菜單和右鍵彈出菜單,這兩個外部擴展函數(shù)是免費U32(UserCode),在Authorware安裝目錄里可以找到。Winapi.u32的導(dǎo)入方法如下:單擊\"window\"菜單中的\"function\"項,顯示\"Load function\"操作窗口;在文件名一欄輸入Winapi.u32,單擊“打開按紐”,顯示“Custom functions inWINAPI.U32\";按住Ctrl鍵,在\"name:\"一欄中選對應(yīng)的函數(shù)后單擊\"Load\"按鈕即完成。tMsControls.u32函數(shù)的導(dǎo)入方法相同。
所需的Winapi.u32函數(shù)與功能描述:
GetMenu(WindowHandle):獲取窗體菜單的句柄
GetSubMenu(menuhandle,npos):獲取用戶菜單的句柄
RemoveMenu(menuhandle,position,flag):從窗體中擦除指定菜單
DrawMenuBar(WindowHandle):顯示窗體菜單
InsertMenu(submenuhandlel,positon,flag,submenuhandle2,
newsubmenuname):向submenuhandl增加一個新條目,位置
position,名字newsubmenuname,增加方式由flag決定
tMsControls.u32必需的部分函數(shù)與功能描述:
tMsCreatePopupList(windowHandle):創(chuàng)建一個彈出菜單,控制并
返回該菜單的句柄
tMsAddltem(ControlHandie。menultemNo,submenultemNo,
menuText):菜單中增加一個條目
tMsDisplayControl(ControlHandle。X,Y。Width。Height,Return):
在指定位置顯示菜單
2制作多級標準菜單
2.1原有File菜單的擦除
在用Authorware的菜單交互制作菜單時,Authorware總會在菜單欄上加一個\"File\"菜單。這個\"File”菜單是多余的,所以先去掉這個\"File\"菜單。
在主流程線上拖一個交互圖標,命名為\"File\",在其右側(cè)放一個群組圖標(內(nèi)容為空),在彈出的\"Response Type,’對話框中,選擇“Pull-Down Menu”(菜單交互)。雙擊群組圖標上方的小方塊,彈出屬性對話框,在“Response”選項卡中,將\"Perpetual\"復(fù)選項選中。
在交互圖標的下方,放一個擦除圖標,雙擊打開擦除圖標的屬性對話框,則同時交互圖標的演示窗口也會被打開。用鼠標單擊交互圖標演示窗口標題欄上的“File”菜單,演示窗口中的\"File\"菜單會隨之消失,點擊確認完成。如圖1所示。
2.2多級菜單的制作
制作步驟如下:
(1)建立“文件”和“編輯”菜單。在流程線上拖放一個交互圖標,命名為“文件”,在其右側(cè)放一個群組圖標,在彈出的“Response Type\"對話框中,選擇\"Pull-Down Menu”,將這個組圖標命名為“新建”。雙擊群組圖標上方的矩形色塊,在彈出的“Properties:Response\"對話框中,點擊\"Response\"選項卡,選中其中的“Perpetual”復(fù)選項,并將“Branch”的值選為“Return”。繼續(xù)添兩個這樣的群組圖標,分別命名為“保存”、“退出”。
(2)建立“塊操作”菜單。按同樣的方法,在主流程線上再放一個交互圖標,其右側(cè)也放兩個群組圖標,分別命名為“撤消”、“查找”。各項設(shè)置同上面的步驟一樣。這個菜單是要作為下一級菜單插入到“編輯”菜單中的。
(3)添加程序代碼。在主流程線下方加一個計算圖標,命名為“menu script”,雙擊打開窗口,輸入如下內(nèi)容:
menuhandle:=GetMenu(WindowHandIe)
file_handle:=GetSubMenu(menuhandIe,0)
edit_handle::GetSubMenu(menuhandIe,1)
block_handle::GetSubMenu(menuhandIe,2)
RemoveMenu(menuhandle,2.1024)
DrawMenuBar(WindowHandIe)
InsertMenu(edit_handle,1,1040,block_handIe,”塊操作”)
所用變量初始值賦為空即可,運行結(jié)果如圖2所示,設(shè)計圖如圖3所示。
3制作右鍵彈出菜單
在流程線上拖放一個交互圖標,命名為“popupmenu”,在其右側(cè)放一個群組圖標,在彈出的“Response Type”對話框中,選擇“Conditional”。將這個組圖標命名為“RightMouseDown=TRUE”。雙擊群組圖標上方的矩形色塊,在彈出的\"Properties:Response”對話框中,點擊“Response”選項卡,選中其中的“Perpetual”復(fù)選項,并將“Branch”的值選為“Continue”。雙擊群組圖標,打開它,在流程線的下方加一個計算圖標,命名為“popupmenu script”。雙擊打開輸入窗口,輸入如下內(nèi)容:popupHandle:~MsCreatePopupList(WindowHandIeltMsAddltam(popupHandle,1,0,“復(fù)制”)tMsAddltem(popupHandIe,2,0,“剪切”)tMsAddltem(popupHandIe,3,O,“粘貼”)popresult:=tMsDisplayControl(popupHandle,CursorX,Cursory,120,100,0)
最后,將所用到的變量初始值賦為空即可。設(shè)計圖如圖4所示。
這樣,當用戶進行鼠標右鍵操作時:條件為真,則系統(tǒng)執(zhí)行計算圖標里的代碼后并彈出菜單,在鼠標右鍵點擊處,彈出一個設(shè)定好的彈出式菜單,并將用戶所選擇的菜單項返回給變量popresult。程序運行結(jié)果如圖5所示。
4打包運行
軟件制作完成后,要對其進行package。方法是依次點擊菜單“File Pubhsh---*Package”,在彈出“Package File”對話框的“Package File:”下拉列表中選擇\"For Windows XP,NT and 98Variant\",然后點擊\"Save File(s)Pac’Kage”按鈕。Authorware會把打包后的執(zhí)行文件放到源程序所在的目錄下,并且打包后的文件與源程序文件同名。如果需要把執(zhí)行文件異機演示,不要忘了把兩個外部擴展函數(shù)Winapi.u32和tMsCOntrols.u32復(fù)制到執(zhí)行文件所在的目錄下。
5結(jié)束語
Authorware中的菜單交互功能有限,實現(xiàn)多級標準菜單和右鍵彈出菜單的方法有很多種。本文僅用外部擴展函數(shù)對其進行改進,使其能在使用時更加方便靈活。使用SDK工具對現(xiàn)有軟件進行開發(fā)是軟件編程人員經(jīng)常遇到的情況,它也為我們進一步改善軟件功能提供了一種解決方法。
(注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文。)