电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 软件教学-> 媒体工具
vb中实现菜单分割_visualbasic教程
作者:网友供稿 点击:0
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
当一个菜单下子菜单项较多时,一打开菜单就出现了长长的菜单项,如果其他的菜单项下子菜单较少,就显得很不协调。现在的一些软件还允许用户在已有的菜单中添加菜单项,这都会造成子菜单项过多的情况,如果能像某些软件那样将较多的子菜单项分成两列显示就显得美观多了。在VB中要实现这一功能还是比较方便的,下面举例说明。

实现菜单分割这一功能需要使用API函数,思路是:首先获得菜单句柄,从而可得到其子菜单项数,然后将子菜单项数除以2,若子菜单项数为奇数,则将多余的一项划到第一部分,然后利用API函数SetMenuItemInfo重新设定菜单显示形式即可。

下面是一个例子。首先用菜单生成器制做一个包括9个子菜单项的菜单,然后,在总体声明部分声明用到的API函数和常数,这些可以从API说明文件中复制。

OptionExplicit

′菜单信息结构说明

PrivateTypeMENUITEMINFO

cbSizeAsLong

fMaskAsLong

fTypeAsLong

fStateAsLong

wIDAsLong

hSubMenuAsLong

hbmpCheckedAsLong

hbmpUncheckedAsLong

dwItemDataAsLong

dwTypeDataAsString

cchAsLong

EndType

′所需的API函数和常数

PrivateDeclareFunctionGetMenuLib″user32″-

(ByValhwndAsLong)AsLong

PrivateDeclareFunctionGetMenuItemCountLib″user32″-

(ByValhMenuAsLong)AsLong

PrivateDeclareFunctionGetSubMenuLib″user32″-

(ByValhMenuAsLong,ByValnPosAsLong)AsLong

PrivateDeclareFunctionGetMenuItemInfoLib″user32″-

Alias″GetMenuItemInfoA″(ByValhMenuAsLong,ByValunAsLong,-

ByValbAsBoolean,lpmiiAsMENUITEMINFO)AsLong

PrivateDeclareFunctionSetMenuItemInfoLib″user32″-

Alias″SetMenuItemInfoA″(ByValhMenuAsLong,ByValuItemAsLong,-

ByValfByPositionAsLong,lpmiiAsMENUITEMINFO)AsLong

ConstMIIM—TYPE=&H10

ConstRGB—STARTNEWCOLUMNWITHVERTBAR=&H20&

ConstMFT—STRING=&H0&

在窗体中添加一个命令按钮,Caption=“分割菜单”,双击写如下代码:

PrivateSubCommand1—Click()

DimrvAsLong

DimhSubMenuAsLong

DimmnuItemCountAsLong

DimmInfoAsMENUITEMINFO

DimpadAsLong

′获取菜单项句柄和子菜单项数

hSubMenu=GetSubMenu(GetMenu(Me.hwnd),0)

mnuItemCount=GetMenuItemCount(hSubMenu)

′将子菜单项分成两部分

IfmnuItemCountMod2<>0Thenpad=1

′取得当前菜单信息

mInfo.cbSize=Len(mInfo)

mInfo.fMask=MIIM—TYPE

mInfo.fType=MFT—STRING

mInfo.dwTypeData=Space$(256)

mInfo.cch=Len(mInfo.dwTypeData)

rv=GetMenuItemInfo(hSubMenu,(mnuItemCount\2)+pad,True,mInfo)

′按新格式显示菜单

mInfo.fType=RGB—STARTNEWCOLUMNWITHVERTBAR

mInfo.fMask=MIIM—TYPE

rv=SetMenuItemInfo(hSubMenu,(mnuItemCount\2)+pad,True,mInfo)

IfrvThenMsgBox″分割完毕″

EndSub

运行后按命令按钮,将发现子菜单项分成了两部分,左边五项,右边四项。

程序运行环境:中文WIN95,VB5.0。->


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·vb6在拖托盘中写入应用程序图标_visualbasic教程
·powerpoint确定圆心的技巧_媒体工具教程
·让media player classic在线播放更流畅_媒体工具教程
·教你如何自制全能播放器_媒体工具教程
·轻松揪出在线视频—影音嗅探专家_媒体工具教程
·我也做大容量dvd影碟 10集电视剧1张盘装_媒体工具教程
·七款常用视频播放软件的截图功能介绍_媒体工具教程
·豪杰发布超级解霸 v9测试版_媒体工具教程
·foobar2000 plus! 2005 贺鸡年大作-歌词集成压轴版_媒体工具教程
·影音处理小超人aurora media workshop_媒体工具教程

最新文章
·认识mpeg视频压缩标准及相关编码格式_媒体工具教程
·flvix flv流媒体视频转换下载一步完成_媒体工具教程
·pplive网络电视的常遇故障及解决办法_媒体工具教程
·photoshop四步让暗黄肤色变白_photoshop教程
·教你如何将dvd光盘电影完整搬到cd上_媒体工具教程
·小技巧:网络电视花屏解决方法_媒体工具教程
·按歌曲把整张cd中ape文件独立分割开_媒体工具教程
·光盘刻录全能助手alcohol 120%轻松体验_媒体工具教程
·轻松调整dvdrip压缩电影的字幕大小_媒体工具教程
·合并多个字幕到一部dvdrip压缩电影中_媒体工具教程


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号