首页 考试吧论坛 Exam8视线 考试商城 网络课程 模拟考试 考友录 实用文档 求职招聘 论文下载
2011中考 | 2011高考 | 2012考研 | 考研培训 | 在职研 | 自学考试 | 成人高考 | 法律硕士 | MBA考试
MPA考试 | 中科院
四六级 | 职称英语 | 商务英语 | 公共英语 | 托福 | 雅思 | 专四专八 | 口译笔译 | 博思 | GRE GMAT
新概念英语 | 成人英语三级 | 申硕英语 | 攻硕英语 | 职称日语 | 日语学习 | 法语 | 德语 | 韩语
计算机等级考试 | 软件水平考试 | 职称计算机 | 微软认证 | 思科认证 | Oracle认证 | Linux认证
华为认证 | Java认证
公务员 | 报关员 | 银行从业资格 | 证券从业资格 | 期货从业资格 | 司法考试 | 法律顾问 | 导游资格
报检员 | 教师资格 | 社会工作者 | 外销员 | 国际商务师 | 跟单员 | 单证员 | 物流师 | 价格鉴证师
人力资源 | 管理咨询师考试 | 秘书资格 | 心理咨询师考试 | 出版专业资格 | 广告师职业水平
驾驶员 | 网络编辑
卫生资格 | 执业医师 | 执业药师 | 执业护士
会计从业资格考试会计证) | 经济师 | 会计职称 | 注册会计师 | 审计师 | 注册税务师
注册资产评估师 | 高级会计师 | ACCA | 统计师 | 精算师 | 理财规划师 | 国际内审师
一级建造师 | 二级建造师 | 造价工程师 | 造价员 | 咨询工程师 | 监理工程师 | 安全工程师
质量工程师 | 物业管理师 | 招标师 | 结构工程师 | 建筑师 | 房地产估价师 | 土地估价师 | 岩土师
设备监理师 | 房地产经纪人 | 投资项目管理师 | 土地登记代理人 | 环境影响评价师 | 环保工程师
城市规划师 | 公路监理师 | 公路造价师 | 安全评价师 | 电气工程师 | 注册测绘师 | 注册计量师
缤纷校园 | 实用文档 | 英语学习 | 作文大全 | 求职招聘 | 论文下载 | 访谈 | 游戏
您现在的位置: 考试吧(Exam8.com) > 计算机等级考试 > 计算机二级 > VB > 复习资料 > 正文

计算机等级考试二级VB:VB中实现菜单分割

来源:考试吧Exam8.com) 2010-8-19 16:33:59 考试吧:中国教育培训第一门户 模拟考场
计算机等级考试二级VB:VB中实现菜单分割。

  在VB中要实现这一功能还是比较方便的,下面举例说明。

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

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

  Option Explicit

  ′菜单信息结构说明

  Private Type MENUITEMINFO

  cbSize As Long

  fMask As Long

  fType As Long

  fState As Long

  wID As Long

  hSubMenu As Long

  hbmpChecked As Long

  hbmpUnchecked As Long

  dwItemData As Long

  dwTypeData As String

  cch As Long

  End Type

  '所需的API函数和常数

  Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long

  Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) _

  As Long

  Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, _

  ByVal nPos As Long) As Long

  Private Declare Function GetMenuItemInfo Lib "user32" Alias _

  "GetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, _

  ByVal b As Boolean, lpmii As MENUITEMINFO) As Long

  Private Declare Function SetMenuItemInfo Lib "user32" Alias _

  "SetMenuItemInfoA" (ByVal hMenu As Long, ByVal uItem As Long, _

  ByVal fByPosition As Long, lpmii As MENUITEMINFO) As Long

  Const MIIM_TYPE = &H10

  Const RGB_STARTNEWCOLUMNWITHVERTBAR = &H20&

  Const MFT_STRING = &H0&

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

  Private Sub Command1_Click()

  Dim rv As Long

  Dim hSubMenu As Long

  Dim mnuItemCount As Long

  Dim mInfo As MENUITEMINFO

  Dim pad As Long

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

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

  mnuItemCount=GetMenuItemCount(hSubMenu)

  '将子菜单项分成两部分

  If mnuItemCount Mod 2<>0 Then pad=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)

  If rv Then MsgBox "分割完毕"

  End Sub

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

  程序运行环境:中文WIN95,VB 5.0。

  相关推荐:2010年9月计算机等级考试精华备考资料汇总
       2010年计算机等级考试二级公共基础知识教程
       考试吧:2010年计算机等考二级VB预测题汇总
       2010年全国计算机等级考试全攻略(一至四级)
文章搜索
版权声明:如果计算机等级考试网所转载内容不慎侵犯了您的权益,请与我们联系800@exam8.com,我们将会及时处理。如转载本计算机等级考试网内容,请注明出处。