龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

VC++实现拨号上网程序(2)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
三、在菜单中列出隐藏工具栏 如前所述,【视图/工具栏】菜单是不显示隐藏工具栏的,也不存在定制该菜单加入额外工具栏的方法,但这并不是说我们不

  三、在菜单中列出隐藏工具栏

  如前所述,【视图/工具栏】菜单是不显示隐藏工具栏的,也不存在定制该菜单加入额外工具栏的方法,但这并不是说我们不能将这些工具栏显示在自己创建的菜单中。接下来介绍的方法可以在【视图/工具栏】菜单下面加上一个【隐藏工具栏】菜单。图2显示的是Word中的【隐藏工具栏】菜单,在其他Office应用中也相似。

  首先我们需要一个宏AutoExec,该宏在Word启动的时候自动运行,调用AddHiddenToolBarsOption,后者在视图菜单的【工具栏】下面增加 【隐藏工具栏】 菜单。AutoExit在Word关闭的时候运行,调用RemoveHiddenToolBarsOption,删除【隐藏工具栏】菜单。

  Sub AutoExec()
  CustomizationContext = NormalTemplate
  AddHiddenToolBarsOption
  End Sub
  Sub AutoExit()
  CustomizationContext = NormalTemplate
  RemoveHiddenToolBarsOption
  End Sub
  Sub AddHiddenToolBarsOption()

  ' 在视图菜单的'工具栏'下面增加'隐藏工具栏'菜单项

  RemoveHiddenToolBarsOption
  With CommandBars(″View″)
  With .Controls.Add(Type:=msoControl弹出式, _
  Before:=.Controls(″工具栏(&T)″).Index + 1)
  .Caption = ″隐藏工具栏(&H)″
  .OnAction = ″ListHiddenToolbars″
  End With
  End With
  End Sub
  Sub RemoveHiddenToolBarsOption()
  On Error Resume Next
  CommandBars(″View″).Controls(″隐藏工具栏(&H)″).Delete
  End Sub

  ListHiddenToolbars在用户单击【隐藏工具栏】的时候运行,它的任务是:找出未在【视图/工具栏】菜单列出的工具栏,用这些工具栏的标题构造【隐藏工具栏】的子菜单。

  Sub ListHiddenToolbars()
  Dim ExistingBars As String
  Dim TBar As CommandBar
  Dim Ctl As CommandBarControl
  Dim HiddenBarList As CommandBarControl
  Set HiddenBarList = CommandBars.ActionControl

  那么,它是如何得知哪一个工具栏该显示或隐藏呢?首先,对于已经显示在【视图/工具栏】下的工具栏,ListHiddenToolbars用如下代码生成一个标题列表:

  With CommandBars(″View″).Controls(″工具栏(&T)″)
  For i = 1 To .Controls.Count - 1
  ExistingBars = ExistingBars & _
  .Controls(i).Caption & vbCr
  Next
  End With

  ' 清空新创建的子菜单

  For Each Ctl In HiddenBarList.Controls
  Ctl.Delete
  Next

精彩图集

赞助商链接