论文部分内容阅读
摘要:利用Authorware外部扩展函数,对Authorware中的菜单进行改进,在Authorware中实现了多级菜单和右键弹出菜单。
关键词:Authorware;外部扩展函数;多级菜单;弹出菜单
0引言
Authorware提供了"Pull-Down Menu”这种交互方式,利用它可以制作出菜单。不过,与常见的多级Windows标准菜单相比,它的菜单大为逊色,而右键弹出菜单就更无法制作。其实,在Authorware的安装程序中,Macromedia公司为我们准备了一些外部扩展函数,利用它们,可以制作出多级Windows标准菜单和右键弹出菜单。
1必需的外部扩展函数
这里我们要借助Authorware的外部扩展函数:Winapi.u32和tMsControls.u32来制作多级标准Windows菜单和右键弹出菜单,这两个外部扩展函数是免费U32(UserCode),在Authorware安装目录里可以找到。Winapi.u32的导入方法如下:单击"window"菜单中的"function"项,显示"Load function"操作窗口;在文件名一栏输入Winapi.u32,单击“打开按纽”,显示“Custom functions inWINAPI.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",在其右侧放一个群组图标(内容为空),在弹出的"Response Type,’对话框中,选择“Pull-Down Menu”(菜单交互)。双击群组图标上方的小方块,弹出属性对话框,在“Response”选项卡中,将"Perpetual"复选项选中。
在交互图标的下方,放一个擦除图标,双击打开擦除图标的属性对话框,则同时交互图标的演示窗口也会被打开。用鼠标单击交互图标演示窗口标题栏上的“File”菜单,演示窗口中的"File"菜单会随之消失,点击确认完成。如图1所示。
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/jsjs/jsjs200703/jsjs20070323-1-l.jpg)
2.2多级菜单的制作
制作步骤如下:
(1)建立“文件”和“编辑”菜单。在流程线上拖放一个交互图标,命名为“文件”,在其右侧放一个群组图标,在弹出的“Response Type"对话框中,选择"Pull-Down Menu”,将这个组图标命名为“新建”。双击群组图标上方的矩形色块,在弹出的“Properties:Response"对话框中,点击"Response"选项卡,选中其中的“Perpetual”复选项,并将“Branch”的值选为“Return”。继续添两个这样的群组图标,分别命名为“保存”、“退出”。
(2)建立“块操作”菜单。按同样的方法,在主流程线上再放一个交互图标,其右侧也放两个群组图标,分别命名为“撤消”、“查找”。各项设置同上面的步骤一样。这个菜单是要作为下一级菜单插入到“编辑”菜单中的。
(3)添加程序代码。在主流程线下方加一个计算图标,命名为“menu script”,双击打开窗口,输入如下内容:
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”,在其右侧放一个群组图标,在弹出的“Response Type”对话框中,选择“Conditional”。将这个组图标命名为“RightMouseDown=TRUE”。双击群组图标上方的矩形色块,在弹出的"Properties:Response”对话框中,点击“Response”选项卡,选中其中的“Perpetual”复选项,并将“Branch”的值选为“Continue”。双击群组图标,打开它,在流程线的下方加一个计算图标,命名为“popupmenu script”。双击打开输入窗口,输入如下内容:popupHandle:~MsCreatePopupList(WindowHandIeltMsAddltam(popupHandle,1,0,“复制”)tMsAddltem(popupHandIe,2,0,“剪切”)tMsAddltem(popupHandIe,3,O,“粘贴”)popresult:=tMsDisplayControl(popupHandle,CursorX,Cursory,120,100,0)
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/jsjs/jsjs200703/jsjs20070323-2-l.jpg)
最后,将所用到的变量初始值赋为空即可。设计图如图4所示。
这样,当用户进行鼠标右键操作时:条件为真,则系统执行计算图标里的代码后并弹出菜单,在鼠标右键点击处,弹出一个设定好的弹出式菜单,并将用户所选择的菜单项返回给变量popresult。程序运行结果如图5所示。
4打包运行
软件制作完成后,要对其进行package。方法是依次点击菜单“File Pubhsh---*Package”,在弹出“Package File”对话框的“Package File:”下拉列表中选择"For Windows XP,NT and 98Variant",然后点击"Save File(s)&Pac’Kage”按钮。Authorware会把打包后的执行文件放到源程序所在的目录下,并且打包后的文件与源程序文件同名。如果需要把执行文件异机演示,不要忘了把两个外部扩展函数Winapi.u32和tMsCOntrols.u32复制到执行文件所在的目录下。
5结束语
Authorware中的菜单交互功能有限,实现多级标准菜单和右键弹出菜单的方法有很多种。本文仅用外部扩展函数对其进行改进,使其能在使用时更加方便灵活。使用SDK工具对现有软件进行开发是软件编程人员经常遇到的情况,它也为我们进一步改善软件功能提供了一种解决方法。
(注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。)
关键词:Authorware;外部扩展函数;多级菜单;弹出菜单
0引言
Authorware提供了"Pull-Down Menu”这种交互方式,利用它可以制作出菜单。不过,与常见的多级Windows标准菜单相比,它的菜单大为逊色,而右键弹出菜单就更无法制作。其实,在Authorware的安装程序中,Macromedia公司为我们准备了一些外部扩展函数,利用它们,可以制作出多级Windows标准菜单和右键弹出菜单。
1必需的外部扩展函数
这里我们要借助Authorware的外部扩展函数:Winapi.u32和tMsControls.u32来制作多级标准Windows菜单和右键弹出菜单,这两个外部扩展函数是免费U32(UserCode),在Authorware安装目录里可以找到。Winapi.u32的导入方法如下:单击"window"菜单中的"function"项,显示"Load function"操作窗口;在文件名一栏输入Winapi.u32,单击“打开按纽”,显示“Custom functions inWINAPI.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",在其右侧放一个群组图标(内容为空),在弹出的"Response Type,’对话框中,选择“Pull-Down Menu”(菜单交互)。双击群组图标上方的小方块,弹出属性对话框,在“Response”选项卡中,将"Perpetual"复选项选中。
在交互图标的下方,放一个擦除图标,双击打开擦除图标的属性对话框,则同时交互图标的演示窗口也会被打开。用鼠标单击交互图标演示窗口标题栏上的“File”菜单,演示窗口中的"File"菜单会随之消失,点击确认完成。如图1所示。
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/jsjs/jsjs200703/jsjs20070323-1-l.jpg)
2.2多级菜单的制作
制作步骤如下:
(1)建立“文件”和“编辑”菜单。在流程线上拖放一个交互图标,命名为“文件”,在其右侧放一个群组图标,在弹出的“Response Type"对话框中,选择"Pull-Down Menu”,将这个组图标命名为“新建”。双击群组图标上方的矩形色块,在弹出的“Properties:Response"对话框中,点击"Response"选项卡,选中其中的“Perpetual”复选项,并将“Branch”的值选为“Return”。继续添两个这样的群组图标,分别命名为“保存”、“退出”。
(2)建立“块操作”菜单。按同样的方法,在主流程线上再放一个交互图标,其右侧也放两个群组图标,分别命名为“撤消”、“查找”。各项设置同上面的步骤一样。这个菜单是要作为下一级菜单插入到“编辑”菜单中的。
(3)添加程序代码。在主流程线下方加一个计算图标,命名为“menu script”,双击打开窗口,输入如下内容:
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”,在其右侧放一个群组图标,在弹出的“Response Type”对话框中,选择“Conditional”。将这个组图标命名为“RightMouseDown=TRUE”。双击群组图标上方的矩形色块,在弹出的"Properties:Response”对话框中,点击“Response”选项卡,选中其中的“Perpetual”复选项,并将“Branch”的值选为“Continue”。双击群组图标,打开它,在流程线的下方加一个计算图标,命名为“popupmenu script”。双击打开输入窗口,输入如下内容:popupHandle:~MsCreatePopupList(WindowHandIeltMsAddltam(popupHandle,1,0,“复制”)tMsAddltem(popupHandIe,2,0,“剪切”)tMsAddltem(popupHandIe,3,O,“粘贴”)popresult:=tMsDisplayControl(popupHandle,CursorX,Cursory,120,100,0)
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/jsjs/jsjs200703/jsjs20070323-2-l.jpg)
最后,将所用到的变量初始值赋为空即可。设计图如图4所示。
这样,当用户进行鼠标右键操作时:条件为真,则系统执行计算图标里的代码后并弹出菜单,在鼠标右键点击处,弹出一个设定好的弹出式菜单,并将用户所选择的菜单项返回给变量popresult。程序运行结果如图5所示。
4打包运行
软件制作完成后,要对其进行package。方法是依次点击菜单“File Pubhsh---*Package”,在弹出“Package File”对话框的“Package File:”下拉列表中选择"For Windows XP,NT and 98Variant",然后点击"Save File(s)&Pac’Kage”按钮。Authorware会把打包后的执行文件放到源程序所在的目录下,并且打包后的文件与源程序文件同名。如果需要把执行文件异机演示,不要忘了把两个外部扩展函数Winapi.u32和tMsCOntrols.u32复制到执行文件所在的目录下。
5结束语
Authorware中的菜单交互功能有限,实现多级标准菜单和右键弹出菜单的方法有很多种。本文仅用外部扩展函数对其进行改进,使其能在使用时更加方便灵活。使用SDK工具对现有软件进行开发是软件编程人员经常遇到的情况,它也为我们进一步改善软件功能提供了一种解决方法。
(注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。)