Authorware菜单的改进摘要:利用Authorware外部扩展函数,对Authorware中的菜单进行改进,在Authorware中实现了多级菜单和右键弹出菜单。关键词:Authorware;外部扩展函数;多级菜单;弹出菜单0引言Authorware提供了Pull-DownMenu”这种交互方式,利用它可以制作出菜单。不过,与常见的多级Windows标准菜单相比,它的菜单大为逊色,而右键弹出菜单就更无法制作。其实,在Authorware的安装程序中,Macromedia公司为我们准备了一些外部扩展函数,利用它们,可以制作出多级Windows标准菜单和右键弹出菜单。1必需的外部扩展函数这里我们要借助Authorware的外部扩展函数:Winapi.u32和tMsControls.u32来制作多级标准Windows菜单和右键弹出菜单,这两个外部扩展函数是免费U32(UserCode),在Authorware安装目录里可以找到。Winapi.u32的导入方法如下:单击window菜单中的function项,显示Loadfunction操作窗口;在文件名一栏输入Winapi.u32,单击“打开按纽”,显示“CustomfunctionsinWINAPI.U32;按住Ctrl键,在name:一栏中选对应的函数后单击Load按钮即完成。tMsControls.u32函数的导入方法相同。所需的Winapi.u32函数与功能描述:GetMenu(WindowHandle):获取窗体菜单的句柄GetSubMenu(menuhandle,npos):获取用户菜单的句柄RemoveMenu(menuhandle,position,flag):从窗体中擦除指定菜单DrawMenuBar(WindowHandle):显示窗体菜单InsertMenu(submenuhandlel,positon,flag,submenuhandle2,newsubmenuname):向submenuhandl增加一个新条目,位置position,名字newsubmenuname,增加方式由flag决定tMsControls.u32必需的部分函数与功能描述:tMsCreatePopupList(windowHandle):创建一个弹出菜单,控制并返回该菜单的句柄tMsAddltem(ControlHandie。menultemNo,submenultemNo,menuText):菜单中增加一个条目tMsDisplayControl(ControlHandle。X,Y。Width。Height,Return):在指定位置显示菜单2制作多级标准菜单2.1原有File菜单的擦除在用Authorware的菜单交互制作菜单时,Authorware总会在菜单栏上加一个File菜单。这个File”菜单是多余的,所以先去掉这个File菜单。在主流程线上拖一个交互图标,命名为File,在其右侧放一个群组图标(内容为空),在弹出的ResponseType,’对话框中,选择“Pull-DownMenu”(菜单交互)。双击群组图标上方的小方块,弹出属性对话框,在“Response”选项卡中,将Perpetual复选项选中。在交互图标的下方,放一个擦除图标,双击打开擦除图标的属性对话框,则同时交互图标的演示窗口也会被打开。用鼠标单击交互图标演示窗口标题栏上的“File”菜单,演示窗口中的File菜单会随之消失,点击确认完成。如图1所示。2.2多级菜单的制作制作步骤如下:(1)建立“文件”和“编辑”菜单。在流程线上拖放一个交互图标,命名为“文件”,在其右侧放一个群组图标,在弹出的“ResponseType对话框中,选择Pull-DownMenu”,将这个组图标命名为“新建”。双击群组图标上方的矩形色块,在弹出的“Properties:Response对话框中,点击Response选项卡,选中其中的“Perpetual”复选项,并将“Branch”的值选为“Return”。继续添两个这样的群组图标,分别命名为“保存”、“退出”。(2)建立“块操作”菜单。按同样的方法,在主流程线上再放一个交互图标,其右侧也放两个群组图标,分别命名为“撤消”、“查找”。各项设置同上面的步骤一样。这个菜单是要作为下一级菜单插入到“编辑”菜单中的。(3)添加程序代码。在主流程线下方加一个计算图标,命名为“menuscript”,双击打开窗口,输入如下内容: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,”块操作”)所用变量初始值赋为空即可,运行结果如图2所示,设计图如图3所示。3制作右键弹出菜单在流程线上拖放一个交互图标,命名为“popupmenu”,在其右侧放一个群组图标,在弹出的“ResponseType”对话框中,选择“Conditional”。将这个组图标命名为“RightMouseDown=TRUE”。双击群组图标上方的矩形色块,在弹出的Properties:Response”对话框中,点击“Response”选项卡,选中其中的“Perpetual”复选项,并将“Branch”的值选为“Continue”。双击群组图标,打开它,在流程线的下方加一个计算图标,命名为“popupmenuscript”。双击打开输入窗口,输入如下内容:popupHandle:~MsCreatePopupList(WindowHandIeltMsAddltam(popupHandle,1,0,“复制”)tMsAddltem(popupHandIe,2,0,“剪切”)tMsAddltem(popupHandIe,3,O,“粘贴”)popresult:=tMsDisplayControl(popupHandle,CursorX,Cursory,120,100,0)最后,将所用到的变量初始值赋为空即可。设计图如图4所示。这样,当用户进行鼠标右键操作时:条件为真,则系统执行计算图标里的代码后并弹出菜单,在鼠标右键点击处,弹出一个设定好的弹出式菜单,并将用户所选择的菜单项返回给变量popresult。程序运行结果如图5所示。4打包运行软件制作完成后,要对其进行package。方法是依次点击菜单“FilePubhsh---*Package”,在弹出“PackageFile”对话框的“PackageFile:”下拉列表中选择ForWindowsXP,NTand98Variant,然后点击SaveFile(s)&Pac’Kage”按钮。Authorware会把打包后的执行文件放到源程序所在的目录下,并且打包后的文件与源程序文件同名。如果需要把执行文件异机演示,不要忘了把两个外部扩展函数Winapi.u32和tMsCOntrols.u32复制到执行文件所在的目录下。5结束语Authorware中的菜单交互功能有限,实现多级标准菜单和右键弹出菜单的方法有很多种。本文仅用外部扩展函数对其进行改进,使其能在使用时更加方便灵活。使用SDK工具对现有软件进行开发是软件编程人员经常遇到的情况,它也为我们进一步改善软件功能提供了一种解决方法。