999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

淺談Authorware中菜單交互的制作技巧

2009-04-29 00:00:00談Authorware中菜單交互的制作技巧","SubTitle":"","Author":"李
電腦知識與技術 2009年26期

摘要:多級菜單和右鍵彈出式菜單是Windows程序中必不可少的交互界面。該文在利用Authorware中的“菜單”交互響應制作菜單的基礎上,談談利用其它方法實現多級菜單和右鍵彈出式菜單的制作技巧。

關鍵詞:Authorwar;多級下拉菜單;右鍵彈出式菜單

中圖分類號:TP317文獻標識碼:A文章編號:1009-3044(2009)26-7503-04

On Fabrication Skills of Menu Interaction in Authorware

LI Min

(Jingchu University of Technology, Jingmen 448000, China)

Abstract: Javascript and right-click popup menu are essential interface in windows system. Based on the fabrication of menu interation in authorware, the paper mainly discuss some possible ways to achieve the fabrication skills of javascript and right-click popup menu.

Key words: authorware; javascript; right-click popup menu

交互性是多媒體課件的靈魂,為了實現課件的交互功能,Authorware提供了十一種常見的交互方式。其中利用菜單交互類型,很容易實現制作一個標準的Windows風格的菜單,但利用它來制作子菜單或右鍵彈出式菜單卻是件麻煩的事情。為了找到更好的解決辦法,經過多次編程實驗,總結出了一些方法。本文就個人在用Authorware制作課件時的經驗來談談Authorware中菜單交互的一些制作技巧。

1 制作多級下拉菜單

1.1 實現的主要技術

我們需要使用winapi.u32文件下的一些函數,這些函數的含義大致介紹如下:

1) GetSubMenu函數

格式:HMENU GetSubMenu(HMENU hMenu,int nPos);

說明:該函數取得被指定菜單激活的下拉式菜單或子菜單的句柄。

參數:hMenu:菜單句柄。

nPos:激活下拉式菜單或子菜單的菜單項相對于零的位置。

2) RemoveMenu函數

格式:BOOL RemoveMenu(HMENU hMenu,UINT uPosition,UINT uFlgs);

說明:該函數從指定菜單刪除一個菜單項或分離一個子菜單。

參數:hMenu:將被修改的菜單的句柄。

UPosition:指定將被刪除的菜單項,其含義由參數uFlages決定。

uFlags:指定參數uPosition如何解釋。

3) DrawMenuBar函數

格式:BOOL DrawMenuBar(HWND hWnd);

說明:該函數重畫指定菜單的菜單條。

參數:hWnd:其菜單條需要被重畫的窗口的句柄。

1.2 創建程序流程

圖1為制作多級下拉菜單的程序流程,圖2為制作多級下拉菜單的效果。

1.3 實現的主要步驟及部分程序源代碼

第一個交互圖標是去掉Authorware自行建立的“文件”菜單,我們可以看到在程序運行時,演示窗口的菜單欄上總會有一個“File”菜單。這與我們的作品總是那么不協調,我們可以采用制作一個同名下拉菜單,然后將其擦除這一技巧,從而達到消除這個多余菜單的目的。具體方法如下:

1) 拖一個交互圖標到流程線上,命名為“File”,若Authorware是中文版本,則命名為“文件”。在交互圖標右側,放一個空的群組圖標,命名為“Empty”,將響應類型改為下拉菜單。雙擊群組圖標上方的響應標志,在其屬性框內,選擇“永久”,否則多個菜單無法同時出現在菜單欄上。

2) 再拖動一個擦除圖標,命名為“擦除系統菜單”,將系統自建立的文件菜單擦除。運行程序。

第二個交互圖標是創建的一級菜單,雙擊組圖標上方的那個矩形色塊,在彈出的“屬性”對話框中,點擊“響應”選項卡,選中其中的“范圍”復選項,并將“分支”的值選為“返回”。第三個交互圖標是創建的二級菜單,各項設置同上面的步驟一樣。唯一的不同,就是要把交互圖標的命名刪除,也就是說要讓這個交互圖標的名字為空。

在主流程線的下方加一個計算圖標,命名為“制作多級菜單”,雙擊打開其輸入窗口,輸入如下內容:

menuhandle:=GetMenu(WindowHandle)

subhandle1:=GetSubMenu(menuhandle,0)

subhandle2:=GetSubMenu(menuhandle,1)

RemoveMenu(menuhandle,1, 1024)

DrawMenuBar(WindowHandle)

InsertMenu(subhandle1,0,1040,subhandle2,\"菜單項1\")

當你保存此計算圖標的內容時,系統會詢問在哪里可以找到這些函數。這些函數都是Authorware自帶的,我們只需要找到Winapi.u32并打開就行了。

打包。這個效果您得打包以后才能看得到。在源文件中執行是看不到效果的,打包后執行一下打包后的文件就可以了。效果如圖2所示。

2 制作右鍵彈出式菜單

彈出式菜單是運行程序時右擊程序演示窗口,出現彈出式菜單。利用U32函數或單純用Authorware本身功能,均可以創建像Windows所有應用程序一樣的鼠標右擊時彈出式菜單。

2.1 利用U32函數制作右鍵彈出式菜單

2.1.1 實現的主要技術

使用Budmenu.u32文件下的一些函數,這些函數的含義大致介紹如下:

1) mAppendMenu函數

格式:ok:= mAppendMenu(menu,flags,menuID,menuText)

說明:該函數在菜單句柄menu指定的菜單底部添加一個菜單項。

參數:menu由mCreatePopupMenu函數返回的菜單句柄。

Flags與菜單相關的信息。(0 普通的菜單項。1使菜單項變灰并禁止選擇它。2 禁止選擇該菜單,但不變灰。16 創建一個子菜單。2048 創建一個分隔條)

menuID 標示菜單項的數字,由用戶自行安排,但是唯一的。

menuText 添加菜單項的文本。

2) mCreatePopupMenu函數

格式:menu:= mCreatePopupMenu()

說明:該函數創建菜單并返回一個菜單句柄。

3) mGetlastMenuID函數

格式:mGetlastMenuID()

說明:該函數用來檢查用戶選中了哪一個菜單項。

4) mTrackPopupMenu函數

格式:ok:= mTrackPopupMenu(menu,flags,x,y,reserved,windowHandle,reserved)

說明:該函數顯示菜單。

參數:flags 菜單所需的選項,通常情況下為0.

x,y菜單項的位置。

Reserved 其值必須為0.

2.1.2 實現的主要步驟及部分程序源代碼

首先將函數導入到程序中。打開函數窗口,在“Load Funtion”對話框中選擇Budmenu.u32文件,在彈出的對話框中選擇mAppendMenu, mCreatePopupMenu, ,mGetlastMenuID, mMenuHookOn, mTrackPopupMenu。

創建如圖3所示的程序流程。

在“右鍵彈出式菜單”計算圖標的代碼框中輸入以下程序:

LastMenuID := 1

rightMenu := mCreatePopupMenu()

mAppendMenu( rightMenu , 0 , 20 , \"一級菜單項1\")

mAppendMenu( rightMenu , 0 , 21, \"一級菜單項2\")

mAppendMenu( rightMenu , 0 , 22 , \"一級菜單項3\")

mMenuHookOn( WindowHandle )

Message:=\"單擊右鍵調出快捷菜單\"

在“LastMenuID>1”計算圖標的代碼窗口中輸入以下程序:

if LastMenuID= 20 then Message:=\"一級菜單項1\"

if LastMenuID= 21 then Message:=\"一級菜單項2\"

if LastMenuID= 22 then Message:=\"一級菜單項3\"

Message:=\"你選擇的菜單項是:\"^Message

if LastMenuID= 0then Message:=\"沒有選擇\"

LastMenuID := 1

在“激活”的計算圖標的代碼窗口中輸入以下程序:

mTrackPopupMenu( rightMenu , 0 , CursorX + WindowLeft , CursorY + WindowTop, 0 , WindowHandle , 0 )

在“返回”計算圖標的代碼窗口中輸入以下程序:

LastMenuID := mGetLastMenuID()

在交互圖標里輸入以下文本:

利用U32函數制作右鍵彈出式菜單

{Message}

2.1.3 實現的效果

運行程序時右擊程序演示窗口,出現彈出式菜單,選擇一個菜單項后返回選擇的結果。如圖4所示。

2.2 用Authorware制作右鍵彈出式菜單

只使用Authorware本身的功能,同樣可以創建像Windows所有應用程序一樣的鼠標右擊時彈出的菜單。實現的關鍵有二,一是在按鈕響應的按鈕位置屬性中使用表達式,而不是一個具體的數值。二是使用DisplayLeft系統變量和DisplayTop系統變量,用它們來保存指定對象在演示窗口中的位置。

2.2.1 實現的主要步驟及部分程序源代碼

創建如圖5所示的程序流程。在“一級菜單”的交互圖標中導入“框架.bmp”。修改所有按鈕的形式,均為只有標題文字沒有外框的形式。

設置各自圖標的主要屬性。如表1。

同理,可以自行設置更多的一級菜單項。

2.2.2 實現如圖6的效果

圖5為用Authorware制作右鍵彈出式菜單的程序流程,圖6是用Authorware制作的右鍵彈出菜單的效果。

3 制作右鍵彈出式二重菜單

在前面制作右鍵彈出式菜單都是一級菜單,我們可以進一步改善上面的步驟制作右鍵彈出式二重菜單。同樣也有兩種方法。

3.1 用U32函數制作右鍵彈出式二重菜單

制作大致流程同前,只是在導入函數時需要添加一些函數。這些函數的用法大致介紹如下:

1) mCheckMenuItem函數

格式:ok:= mCheckMenuItem(menu,ID,check)

說明:該函數設置一個菜單項有無檢查標志(即有無對鉤)。

參數:menu 菜單句柄

ID 菜單項的ID值。

Check 該參數有兩種取值。(0 清除檢查標志。8 設置檢查標志)

2) mEnableMenuItem函數

格式:ok:= mEnableMenuItem(menu,ID,enable)

說明:該函數允許或禁止一個菜單項。

參數:menu 菜單句柄

ID 單項的ID值。

Enable 該參數可以是以下值。(0 允許該菜單項。1 禁止選擇該菜單項,并使其變灰。2禁止選擇該菜單項,但不使它變灰。)

在“右鍵彈出式二重菜單”計算圖標的代碼窗口中重新輸入以下程序:

LastMenuID := 1

rightMenu := mCreatePopupMenu()

mAppendMenu( rightMenu , 0 , 20 , \"一級菜單項1\")

rightsubmenu := mCreatePopupMenu()

mAppendMenu( rightsubmenu , 0 , 30 , \"二級菜單項1\")

mAppendMenu( rightsubmenu , 0 , 31 , \"二級菜單項2\")

mAppendMenu( rightsubmenu , 0 , 32 , \"二級菜單項3\")

mAppendMenu( rightsubmenu , 0 , 33 , \"二級菜單項4\")

mAppendMenu( rightsubmenu , 2048 , 0,\"\")

mAppendMenu( rightsubmenu , 0,34 , \"二級菜單項5\" )

mCheckMenuItem( rightsubmenu , 32 ,8 )

mEnableMenuItem( rightsubmenu , 33 ,1)

mAppendMenu( rightMenu , 16 , rightsubmenu , \"一級菜單項2\")

mAppendMenu( rightMenu , 0 , 22 , \"一級菜單項3\")

mMenuHookOn( WindowHandle )

Message:=\"單擊右鍵調出快捷菜單\"

在“LastMenuID>1”計算圖標的代碼窗口中重新輸入以下程序:

if LastMenuID= 30 then Message:=\"二級菜單項1\"

if LastMenuID= 31 then Message:=\"二級菜單項2\"

if LastMenuID= 32 then Message:=\"二級菜單項3\"

if LastMenuID= 33 then Message:=\"二級菜單項4\"

if LastMenuID= 34 then Message:=\"二級菜單項5\"

if LastMenuID= 20 then Message:=\"一級菜單項1\"

if LastMenuID= 22 then Message:=\"一級菜單項3\"

Message:=\"你選擇的菜單項是:\"^Message

if LastMenuID= 0then Message:=\"沒有選擇\"

LastMenuID := 1

實現效果如圖7所示。

3.2 用Authorware制作右鍵彈出式二重菜單

在前例的基礎上繼續添加二級菜單,制作大致流程同前。只是在“一級菜單”下要建立二級菜單的某個菜單項的群組圖標里再建立一個交互圖標命名為“二級菜單”,在此交互圖標的演示窗口中導入同一個圖片“框架.bmp”。再設置二級菜單中每一個菜單項的屬性,如表2。

同理,可以自行設置更多的二級菜單項。實現效果如圖8所示。

4 結束語

一個好的課件布局形式,不僅要內容層次清晰,美觀,更重要的是應具有簡單、直觀、容量大,而占用屏幕面積小等優點。本文中,我們通過Authorware提供的各種圖標和交互功能以及函數實現了Windows菜單中的下拉菜單、右鍵彈出式菜單,多級菜單等常見菜單。當然,實現方法也不只是上述一種,例如用Authorware提供的tMsControls.u32也可以制作Windows標準菜單。

參考文獻:

[1] 樸相珍.用Authorware制作Windows三級菜單[J].電腦學習,2008(5).

[2] 倪應華.Authorware中右鍵二重菜單導航設計與實現[J].浙江師范大學學報,2004,27(2).

[3] 畢廣吉.authorware多媒體開發程序設計與典型實例[M].北京:人民郵電出版社,2004.

[4] 翁永平.Authorware菜單制作全攻略[J].中小學電腦報,2003(46).

主站蜘蛛池模板: 亚洲免费人成影院| 欧洲日本亚洲中文字幕| 国产迷奸在线看| 亚洲专区一区二区在线观看| 國產尤物AV尤物在線觀看| 日韩无码视频专区| 国产又色又刺激高潮免费看| 中文字幕无码制服中字| 91色爱欧美精品www| 国产精品亚洲精品爽爽| 色婷婷丁香| 无码高清专区| 嫩草影院在线观看精品视频| 五月婷婷精品| 一本大道香蕉中文日本不卡高清二区 | 国产一区在线观看无码| 国产成人91精品| 伊人五月丁香综合AⅤ| 爆操波多野结衣| 丝袜国产一区| 国产亚洲视频免费播放| 综合网天天| 亚洲aaa视频| 又粗又大又爽又紧免费视频| 伊在人亚洲香蕉精品播放| 国产在线视频欧美亚综合| 亚洲国产理论片在线播放| 国产主播在线一区| 久久99精品国产麻豆宅宅| 国产二级毛片| 丁香婷婷久久| 大香网伊人久久综合网2020| 日本一本正道综合久久dvd| 久久精品日日躁夜夜躁欧美| Jizz国产色系免费| 国产电话自拍伊人| 国产情侣一区二区三区| 欧美性天天| 久久久久青草线综合超碰| 99久久99视频| 男女精品视频| 国产人碰人摸人爱免费视频| 在线精品欧美日韩| 美女视频黄又黄又免费高清| 国产精品蜜臀| 91网红精品在线观看| 国产毛片高清一级国语 | 91麻豆精品视频| 狠狠色丁香婷婷综合| 亚洲另类第一页| 亚洲视频在线网| 99无码中文字幕视频| 久久国产成人精品国产成人亚洲| 视频一区视频二区中文精品| 色噜噜狠狠色综合网图区| 欧美怡红院视频一区二区三区| 久久综合五月婷婷| 亚洲欧美日韩中文字幕在线| 99在线观看国产| 国产真实乱子伦精品视手机观看 | jizz亚洲高清在线观看| 欲色天天综合网| 午夜激情福利视频| 亚洲人成网站在线播放2019| 无码 在线 在线| 国产亚洲欧美日韩在线一区二区三区| 中字无码av在线电影| 亚洲狼网站狼狼鲁亚洲下载| 国产香蕉在线视频| 日韩一区二区三免费高清| 天天综合网色中文字幕| 欧洲亚洲欧美国产日本高清| 久久亚洲国产一区二区| 国产玖玖视频| 99视频在线免费| 91国内在线观看| 免费人成在线观看成人片| 午夜少妇精品视频小电影| 国产三级韩国三级理| 亚洲成人在线免费| 国产欧美专区在线观看| 精品无码一区二区三区电影|