首页 | CG软件 | CG信息 | CG教程 | 三维作品 | 设计理论 | CG加油站 | 设计鉴赏 | 社区图库 | Flash | 专题 | 顶客 | 论坛 | 博客 | 导航 | 下载 | 高级搜索
RSS
热门: 3D Total  RPC  Evermotion  效果图  创意  装修  优秀作品  Vray  艺术  欣赏

Authorware实战开发专题之制作Windows标准菜单方法(2)

来源:汕大4U2V工作室 作者: 时间:2007-09-30 点击:
制作   专题   开发   实战   Authorware   5.2 利用Budmenu.u32制作Windows“特色”菜单

  利用tMsControls.u32制作的Windows标准菜单有个局限性,就是只能制作最多两级的弹出式子菜单,而制作三级以上的子菜单它就“黔驴技穷”了,下面再介绍一个制作Windows标准弹出式菜单的扩展函数:Budmenu.u32。Budmenu.u32目前的最新版本是1.2 Beta1,和tMsControls.u32比较,Budmenu.u32只提供弹出式菜单的支持,但是它有一些自己的“特色”:可以制作BMP图片菜单(1.2 Beta 1版本才支持),真正支持任意多级弹出式子菜单,而且菜单项支持Checked(Unchecked)属性,快捷键设置,更酷的是允许用户修改菜单项的显示文字,心动不如行动呀,马上把“入住” Budmenu.u32的函数大员介绍给大家:

创建弹出式菜单句柄

Menu := mCreatePopupMenu()

添加菜单项

ok := mAppendMenu( Menu, Flags , MenuID , MenuText )

设置消息钩子与Authorware通信

ok := mMenuHookOn( WindowHandle )

显示菜单,x,y为显示菜单的坐标值

ok := mTrackPopupMenu( Menu , Flags , x , y , Reserved , WindowHandle , Reserved )

判断菜单项的选择

LastMenuID := mGetLastMenuID()

设置菜单项的选中属性,Check参数有MF_CHECKED、MF_UNCHECKED属性

ok := mCheckMenuItem( Menu , ID , Check )

检测并获取菜单项的选中状态属性

ok := mGetMenuState( Menu , Id , Flags )

设置菜单项的允许/禁止,Enable参数有MF_ENABLED、MF_DISABLED、MF_GRAYED属性

ok := mEnableMenuItem( Menu , ID , Enable )

删除菜单项或者子菜单

ok := mDeleteMenu( Menu , ID , Flags )

修改存在菜单项的显示文字

ok := mModifyMenu( Menu , ID , Flags , ID , MenuText )

设置菜单项的Alt快捷键,例如&Introduction快捷键就为Alt+I,菜单显示效果为Introduction

ok := mAppendMenu( SelectMenu , 0 , 100 , \\"&Introduction\\" )

导入BMP图片文件作为菜单项,这是1.2Beta1版本的新功能

mLoadBitmapFile( theFile )

从外部UCD导入BMP图片资源,Budmenu.u32内部提供了8个小图片,如下图5.7所示。

mLoadBitmapResource( resourceFile, resourceNumber )

添加BMP图片菜单项

mAppendBitmapMenu( Menu , Flags , ID , Bitmap)

设置菜单项的Checked标志为指定的BMP图片资源

mSetMenuItemBitmaps(Menu, ID, Flags, BitmapUnchecked, BitmapChecked)

释放BMP图片资源

mFreeBitmapResource( bitmap )

释放BMP图片文件

mFreeBitmapFile( bitmap )

Authorware实战开发专题之制作Windows标准菜单方法(2)

图5.7 Budmenu.u32自带的BMP图片资源
  Budmenu.u32扩展函数是基于Windows API函数开发的Authorware扩展函数,因此利用它来制作弹出式菜单的时候,首先必须对一些固定变量进行声明赋值,它们的名称和值列表如下:

MF_POPUP := 16

MF_BYCOMMAND := 0

MF_BYPOSITION := 1024

MF_SEPARATOR := 2048

MF_ENABLED := 0

MF_GRAYED := 1

MF_DISABLED := 2

MF_UNCHECKED := 0

MF_CHECKED := 8

MF_USECHECKBITMAPS := 512

MF_STRING := 0

MF_BITMAP := 4

MF_OWNERDRAW := 256

MF_MENUBARBREAK := 32

MF_MENUBREAK := 64

MF_UNHILITE := 0

MF_HILITE := 128

  对Budmenu.u32函数有一些了解后,我们马上开工,制作一个有“特色”的Windows标准下拉菜单及鼠标右键弹出式菜单。范例的程序流程图如下图5.8所示:

Authorware实战开发专题之制作Windows标准菜单方法(2)

图5.8 Budmenu.u32范例程序流程图

(1)变量定义

  如图5.8的程序流程中,“变量定义”计算图标的代码如上述的固定变量列表,主要是对一些必须的固定变量进行赋值
(2)为创建下拉弹出式菜单编写代码

在“创建菜单”计算图标写入如下代码:

--以下代码定义菜单标识ID

MN_LOGIN:=100

MN_RELOGIN:=101

MN_LOGOUT:=102

MN_WIN:=200

MN_Unix:=201

MN_MEDIA:=202

MN_DB:=203

MN_ADOBE:=300

MN_MM:=301

MN_AW:=400

MN_DR:=401

MN_FL:=402

MN_PR:=403

MN_PS:=404

MN_BMP:=500

MN_HELP:=501

---以下代码创建系统登陆菜单

SYSMenu:=mCreatePopupMenu()

mAppendMenu(SYSMenu,0,MN_LOGIN,\\"登陆(&L)\\")

mAppendMenu(SYSMenu,0,MN_RELOGIN,\\"注销(&R)\\")

mAppendMenu(SYSMenu,0,MN_LOGOUT,\\"退出(&E)\\")

---以下代码创建三级子菜单

TubMenu1:=mCreatePopupMenu()

TubMenu2:=mCreatePopupMenu()

mAppendMenu(TubMenu1,0,MN_AW,\\"Authorware\\"^Tab^\\"Ctrl+A\\")

mAppendMenu(TubMenu1,0,MN_DR,\\"Director \\"^Tab^\\"Ctrl+D\\")

mAppendMenu(TubMenu1,0,MN_FL,\\"Flash \\"^Tab^\\"Ctrl+F\\")

mAppendMenu(TubMenu2,0,MN_PS,\\"&Photoshop\\"^Tab^\\"Ctrl+P\\")

mAppendMenu(TubMenu2,0,MN_PR,\\"&PremIEre \\"^Tab^\\"Ctrl+E\\")

mCheckMenuItem(TubMenu1,MN_AW,MF_CHECKED) ---设置菜单项为Checked

mEnableMenuItem(TubMenu2,MN_PR,MF_GRAYED) ---设置菜单项为灰色不可用

---以下代码创建二级子菜单

SubMenu:=mCreatePopupMenu()

mAppendMenu(SubMenu,MF_POPUP,TubMenu1,\\"&Macromedia\\")

mAppendMenu(SubMenu,MF_POPUP,TubMenu2,\\"&Adobe\\")

---创建版面选择菜单

BBSMenu:=mCreatePopupMenu()

mAppendMenu(BBSMenu,0,MN_WIN,\\"Windows NT\\")

mAppendMenu(BBSMenu,0,MN_UNIX,\\"Unix Linux\\")

mAppendMenu(BBSMenu,MF_SEPARATOR,0,\\"\\")

mAppendMenu(BBSMenu,MF_POPUP,SubMenu,\\"Multimedia\\")

mAppendMenu(BBSMenu,MF_SEPARATOR,0,\\"\\")

mAppendMenu(BBSMenu,0,MN_DB,\\"DataBase\\")

mCheckMenuItem(BBSMenu,MN_DB,MF_CHECKED)

---创建系统帮助菜单

AboutMenu := mCreatePopupMenu()

bmPic:=mLoadBitmapFile(FileLocation^\\"4U2V.bmp\\" )---导入BMP图片作为菜单

mAppendMenu(AboutMenu,0,MN_HELP,\\" 关于...\\")

mAppendBitmapMenu(AboutMenu,0,MN_BMP,bmPic)

  值得注意的是Budmenu.u32和tMsControls.u32不同,Budmenu.u32是靠标志符ID来标识每个菜单项的,因此必须给每个菜单项一个唯一的标识符ID。
(3)显示菜单

  为显示图标“工具栏”导入一个工具栏的背景图,接着添加交互“显示菜单”如图5.8所示。在交互“显示菜单”的右边添加“系统登陆”按钮响应交互分支,它们的二级程序流程图如下图5.9所示。

Authorware实战开发专题之制作Windows标准菜单方法(2)

图5.9 “系统登陆”按钮响应交互分支流程图

  为了达到更加逼真和一致的效果,按钮最好自己设计成为和工具栏背景一样的风格,然后导入为自定义按钮。

计算图标“show popup”的代码如下:

mTrackPopupMenu(SYSMenu,0,ResponseLeft@\\"系统登陆\\"+WindowLeft,ResponseTop@\\"系统登陆\\"+ResponseHeight@\\"系统登陆\\"+WindowTop,0,WindowHandle,0)

计算图标“get menu ID”的代码如下:

LastMenuID:=mGetLastMenuID()

计算图标“unhighlight menu”的代码如下:

Checked@\\"系统登陆\\":=FALSE

  同理建立“版面选择”和“系统帮助”两个按钮相应分支,最简单的方法是拷贝“系统登陆”分支然后进行相应的修改。
(4)菜单的交互设计

  Budmenu.u32是基于WINDOWS API开发的扩展函数,要与Authorware程序通信需要设置消息钩子,图5.8中的计算图标“设置hook on”就起到这个作用,其计算代码为:mMenuHookOn(WindowHandle)。需要注意的是,在程序结束的时候必须用函数mMenuHookOff()停止消息钩子,否则会导致一些意想不到的麻烦。

  图5.8流程图中的“菜单交互”设计了一系列交互,其中“RightMouseDown”条件响应分支为产生鼠标右键弹出式菜单的交互分支(设置为永久交互),其代码如下:

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

LastMenuID:=mGetLastMenuID()

  “LastMenuID <> 0”条件响应分支是检测用户选择的具体菜单项,其二级流程图如下图5.10所示。其中“Set menu”交互就是相应的菜单项条件响应分支,例如“系统登陆”菜单中的“登陆”菜单项的交互条件就设置为:LastMenuID=MN_LOGIN,其它的分支都类似的设置。

Authorware实战开发专题之制作Windows标准菜单方法(2)

图5.10 LastMenuID <> 0条件响应分支二级流程图

  这里要注意一点的是每次交互完毕后都必须初始化LastMenuID值,即设置其值为“0”,否则程序不会自动更新纪录用户下次的菜单选择交互,因此在计算图标“reset LastMenuClicked”中编写代码:LastMenuID:=0,这一点和使用tMsControls.u32是截然不同的概念,使用过程中切记!

  “修改”按钮响应分支是修改菜单项的分支,核心代码如下,具体就不阐述了。

mModifyMenu(AboutMenu,MN_HELP,MF_BYCOMMAND,MN_HELP,EntryText)

  最后是“退出”按钮响应分支设计,其代码如下:

mMenuHookOff() ---取消消息钩子

mDestroyMenu(SYSMenu)

mDestroyMenu(BBSMenu)

mDestroyMenu(AboutMenu)

mFreeBitmapFile(bmPic)

Quit()
OK,存盘后执行一下我们的范例效果吧,下面是它的一些执行效果截图:

Authorware实战开发专题之制作Windows标准菜单方法(2)

图5.11 下拉式菜单效果截图1(ALT快捷键)

Authorware实战开发专题之制作Windows标准菜单方法(2)

图5.12下拉式菜单效果截图2(3级子菜单)

Authorware实战开发专题之制作Windows标准菜单方法(2)

图5.13下拉式菜单效果截图3(BMP菜单)
Authorware实战开发专题之制作Windows标准菜单方法(2)

图5.14 鼠标右键弹出式菜单截图

Authorware实战开发专题之制作Windows标准菜单方法(2)

图5.15 修改菜单项的显示文字

Authorware实战开发专题之制作Windows标准菜单方法(2)

图 5.16 修改后的菜单项
本文地址:http://www.cg3000.com/html/cgTutorials/Multimedia/Authorware/20070930/AuthorwareshizhankaifazhuantizhizhizuoWindowsbiaozhuncaidanfangfa_2__37997.shtml
上一篇:Authorware特效字专辑(一)
下一篇:AuthorWare Attain中一个打包设置选项的妙用
关键字:迅雷 快车 Baidu Authorware 实战 开发 专题 制作
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
图腾CG联盟免责声明:本网站转载纯粹出于为网民传递更多信息之目的,无任何商业目的。如本网站转载稿件涉及版权等问题,请作者速来函admincg3000@163.com联系,在此,我们首先向您表示诚挚的歉意,并将尽快予以改正。本网站上发表的内容只代表作者本人之观点,本网站只出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。
赞助广告