通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 my小屋
联系我们
设为首页
加入收藏

 

qq,asp,php,jsp,xml,sql,.net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | q q 专栏 | 建站经验 | 在线工具 | 站长club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>网络媒体>>authorware>>正文 新版上线![旧版]
注:打开慢时请稍等

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

http://www.iyit.net  日期:2006-5-29 9:28:38  来源:网络转载   点击:
参加讨论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_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,"¯omedia")

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所示。



图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,其它的分支都类似的设置。



图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,存盘后执行一下我们的范例效果吧,下面是它的一些执行效果截图:



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



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



图5.13下拉式菜单效果截图3(bmp菜单)


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



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



图 5.16 修改后的菜单项

编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:authorware实战开发专题之制作windows标准菜单方法(3)
下一篇:authorware实战开发专题之制作windows标准菜单方法
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
authorware实战开发专题之制作windows标 authorware实战开发专题之制作windows标 怎样在aw中调用windows程序
director 制作具有win xp 风格的菜单( director 制作具有win xp 风格的菜单( 用flash mx制作弹出windows窗口
flash模拟winamp动态视觉效果 在网页调用 windows 控件两例 微软 windows 徽标做法一例
winmysqladmin 1.1以明文形式存放mysql 模似windows xp 左侧的菜单效果(2) 模似windows xp 左侧的菜单效果(3)
windows 2000活动目录详解之安装配置篇 windows 2000活动目录详解之基础篇 如何在服务器端调用winzip命令行对上传
关于win2k3中利用asp上传文件的问题 windows2000服务器账号登陆身份验证 win2003下apache+php5+mysql4+phpmyadm
win2000下php服务器安装攻略 在windows中安装apache2和php4的权威指 在win平台上让你 apache 2.0.45支持php
php 在windows 2003 enterprise server apache2.0.39 php4.2.3在windowsxp下模 在windows下面从源代码编译php的步骤
最新更新 热点排行 推荐新闻
authorware7.0基础与实例教程 连载 第
authorware7.0基础与实例教程 连载 2.
authorware7.0基础与实例教程 连载 2.
authorware7.0基础与实例教 连载 2.4 
authorware7.0基础与实例教程 连载 2.
内存为何有“两面性”
内存为何有“两面性”
内存为何有“两面性”
authorware7.0基础与实例教程 连载 第
authorware7.0基础与实例教程 连载 2.
authorware7.0基础与实例教程 连载 2.
authorware7.0基础与实例教 连载 2.4 
authorware7.0基础与实例教程 连载 2.
authorware7.0基础与实例教程 连载 第
authorware7.0基础与实例教程 连载 第
authorware7.0基础与实例教程 连载 第
authorware7.0基础与实例教程 连载 2.
authorware7.0基础与实例教程 连载 2.
authorware7.0基础与实例教 连载 2.4 
authorware7.0基础与实例教程 连载 2.
优秀公益广告作品欣赏(8)
java数据类型转换
windows xp专业版iis连接数的更改
新开放qq免费挂级网站
优秀公益广告作品欣赏(7)
免费在qq上看在线电影电视听音乐
qq最新版下载 2006 beta2 体验新感受 
office2007简体中文版浮出水面 美图抢
qq珊瑚虫外挂4.0版本发布!
免费把qq炫铃设为本机qq的系统提示音
内存为何有“两面性”
内存为何有“两面性”
内存为何有“两面性”
amd水货盒装cpu识别方法
ip地址资源2012年枯竭 部署ipv6很紧迫
古老问题有新解:世上先有鸡蛋后有鸡
dreamweaver mx 2004从零开始(1)
利用css改善网站可访问性
如何让mm的脸通透可人
msn8.0下载
 友情链接
设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
copyrights © 2004-2006 iyit.net all rights reserved.
网站合作、广告联系qq:147007642、466949678
易特网络技术 点击这里给我发消息