Authorware实战开发专题-- 制作Windows标准菜单方法

4/8/2006来源:Authorware教程人气:8169

我们知道,Authorware提供了Pull-Down Menu下拉式菜单制作的功能,可是如果我们要实现下拉式菜单下的分级菜单,下拉列表菜单和鼠标右键弹出式菜单等三种Windows常见的标准菜单,如何在Authorware中实现呢?继续看下去吧!

利用tMsControls.u32制作Windows标准菜单

  这里我们要借助Authorware的外部扩展函数:tMsControls.u32来制作Windows常见的标准菜单选项,它是Mediashoppe提供的一个免费U32(UserCode),可以在Authorware的安装目录里找到,功能强大。看看它的部分函数功能吧:

tMsCreateDropList(windowHandle) -----创建弹出式菜单的句柄

tMsCreatePopupList(windowHandle) -----创建下拉列表式菜单的句柄

tMsAddItem(ControlHandle, menuItemNo, submenuItemNo, menuText) -----创建菜单项

tMsGetItem(ControlHandle, menuItemNo, submenuItemNo) -----获取用户选择菜单

tMsDisplayControl(ControlHandle, X, Y, Width, Height, Return) -----显示菜单函数


  有了上面这些扩展函数就可以很轻松的搞定下拉列表菜单和鼠标右键弹出式菜单,而Pull-Down Menu下拉式菜单在Authorware系统就提供了。

1、执行界面预览,如图5.1和图5.2所示



图5.1下拉列表菜单执行效果



图5.2 右键弹出式菜单执行效果

2、程序的流程图如图5.3所示



图5.3 范例程序流程图

3、操作步骤:

1) 新建一个文件,并调入外部函数tMsControls.u32的相关扩展函数:

tMsCreateDropList(windowHandle)

tMsCreatePopupList(windowHandle)

tMsAddItem(ControlHandle,menuItemNo,submenuItemNo,menuText) tMsGetItem(ControlHandle, menuItemNo, submenuItemNo)

tMsDisplayControl(ControlHandle, X, Y, Width, Height, Return)


2)设置屏幕大小和背景

3)创建中文下拉式菜单,程序流程如图5.4



图5.4创建中文下拉式菜单程序流程

我们知道,如果我们把文件File的属性PRoperties的“menu bar”Options选上,如图5.5所示,则程序的运行窗口将出现一个“File”的下拉菜单,如果我们要制作全中文的菜单,当然要想办法把它“擦除”掉,而“File”下拉菜单是系统默认的,因此我们也建立一个和它同名的“File”下拉菜单,这样系统就认为这个“File”下拉菜单是用户所创建,理所当然我们可以用擦除图标把它擦除掉拉。其它的步骤请看图5.4。

图5.5 File文件的属性Properties范例设置

4)创建下拉列表菜单和鼠标右键响应菜单。

(1)在计算图标“creatmenu”里写入如下程序代码:

---- 下列代码创建弹出式菜单的句柄:

popupHandle:=tMsCreatePopupList(WindowHandle)

---- 下列代码创建弹出式菜单的菜单选项列表:

tMsAddItem(popupHandle, 1, 0, "作者介绍")

tMsAddItem(popupHandle, 2, 0, "联系作者")

tMsAddItem(popupHandle, 3, 0, "-") ---- 在选项 2和选项 3 之间创建一条分隔线

tMsAddItem(popupHandle, 4, 0, "软件说明")

tMsAddItem(popupHandle, 5, 0, "软件教程")

tMsAddItem(popupHandle, 6, 0, "-") ---- 在选项 5和选项 7 之间创建一条分隔线

tMsAddItem(popupHandle, 7, 0, "退出系统")


---- 下列代码为"软件教程"菜单项创建两个分隔开的子菜单选项,如不需要子菜单,可---- 以省略

tMsAddItem(popupHandle, 5, 1, "Authorware")

tMsAddItem(popupHandle, 5, 2, "-")----在子菜单Authorware和子菜单Director之间创建----一条分隔线

tMsAddItem(popupHandle, 5, 3, "Director")



---- 下列代码创建下拉列表式菜单的句柄:

droplisthandle:=tMsCreateDropList(WindowHandle)

---- 下列代码创建下拉列表式菜单的菜单选项列表:

tMsAddItem(droplisthandle, 1, 0, "请选择访问以下网站")

tMsAddItem(droplisthandle, 2, 0, "---------------------------")

tMsAddItem(droplisthandle, 3, 0, "郁 金 香 B B S ")

tMsAddItem(droplisthandle, 4, 0, "清 音 飞 扬")

tMsAddItem(droplisthandle, 5, 0, "魔 岩 工 作 室")


---- 下列代码是显示下拉列表式菜单

tMsDisplayControl(droplisthandle,17,80,50,50,0)

(2)加鼠标右键响应弹出菜单的永久条件交互和下拉列表菜单选择菜单的按钮响应。设置条件“RightMouseDown=TRUE”,其中“RightMouseDown”为系统变量,返回类型为“Continue”,并设置为永久交互,如图5.6所示。这样当用户进行鼠标右浆操作时,条件为真,执行计算图标里的代码后并弹出菜单,由用户选择:

---- 下列代码在鼠标右键点击处,弹出一个前边设定好的弹出式菜单,

---- 并将用户反馈(即用户所选择的菜单项)返回给变量popresult:

popresult:=tMsDisplayControl(popupHandle, CursorX, CursorY, 100, 120, 1)

---- 下面是当用户选择弹出式菜单执行的相关操作的代码:

if popresult="退出系统" then Quit() -----这里只是“退出系统”操作代码的样式范本



图5.6 右键响应弹出菜单的永久条件交互

而另一个“Continue”交互“GO”就是下拉列表菜单的相关操作,计算图标的代码如下:

----将用户反馈(即用户所选择的菜单项)返回给变量DropReturnVar:

DropReturnVar:=tMsGetItem(droplisthandle, 0, 0)

---- 下面是当用户选择菜单后执行相关操作的代码,只是简单显示一个交互消息框而已。

if DropReturnVar=3 then MessageBox(WindowHandle,"URL: http://bbs.stu.edu.cn ","郁金香BBS",64)

if DropReturnVar=4 then MessageBox(WindowHandle,"URL: http://www.music.stu.edu.cn ","清音飞扬",64)

if DropReturnVar=5 then MessageBox(WindowHandle,"URL: http://202.192.154.5/myhome/rock ","魔岩工作室",64)


5)存盘完成。

执行一下,看看效果吧。