Authorware实战开发专题(5-2)
作者:佚名 文章来源:互联网 点击数: 更新时间:2008-3-3
[专题五] 制作Windows标准菜单方法(5-2)
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 )

图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所示:

图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_M
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 )

图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所示:

图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_M






