| 域名空间 下载中心 社区论坛 信息公告 my小屋 |
![]() |
联系我们 设为首页 加入收藏 |
|
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿 论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图 专题 | 应用软件 | 聊天通讯 | q q 专栏 | 建站经验 | 在线工具 | 站长club | 注 册 表 | 旧版 社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务 |
| 新版上线![旧版] | |||||
注:打开慢时请稍等
authorware实战开发专题之制作windows标准菜单方法(2)http://www.iyit.net 日期:2006-5-29 9:28:38 来源:网络转载 点击: |
利用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 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。 |
| 最新更新 | 热点排行 | 推荐新闻 | |||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
| 友情链接 | ||||||
| 设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接 |
| |||||||