不知道大家有没有用过一个第三方的菜单生成工具ActiveBar.我主工程和active dll里边的菜单都是由它来生成。老师要求:主工程仅仅是一个公用界面,十一个子系统对应于11个active dll在主界面里面进行各个子系统的切换,并进行相应的界面变换。关键是,界面变换都是针对于主工程里面的公用界面进行。但是:''''''''''''''''''''''''''这是subProject2.clsChangeMenu,想直接加载它的界面菜单在主form上Public Sub ChangeMenu(abMenu As ActiveBar2LibraryCtl.ActiveBar2)
abMenu.Load "", "C:\Program Files\Data Dynamics\ActiveBar 2\Samples\VB6\Toolbars\toolbars.tb2", ddSOFile
End Sub'''''''''''''''''''''''''''这是主工程,公用form'''''''''''''
'''''''''''''''''''''''''''abMenu就是一个activebar对象,toolclick事件表示点击了相应按钮
Option Explicit
Dim clsTemp As New subProject2.clsChangeMenuPrivate Sub abMenu_ToolClick(ByVal Tool As ActiveBar2LibraryCtl.Tool)
'''''在这儿本来是想clsTemp.ChangeMenu(abMenu)  但是clsTemp.的话根本就没有changemenu出来
为什么啊?不能把控件作为参数来传递吗?
End Sub
不能用传参的方式来实现dll对主工程form控件的操作吗?
我主工程和dll里面都声明了activebar,怎样才能通过dll来对主工程里面的activebar进行操作呢???

解决方案 »

  1.   

    这个控件在3年前用过,2.0版本的。。不过当时只是边学习边封装,都封装成类以后才用的翻翻看看。。
    比较烂不知道当时怎么想的。哈哈。。
    一个类,主要用来设置一个POPMENU,类名为POPMENUSETUP
    Dim AB As ActiveBar2
    Dim MenuForms As Form
    Dim oTool As ActiveBar2LibraryCtl.Tool
    Dim oBand As ActiveBar2LibraryCtl.band
    Dim x As Long'创造弹出式菜单
    Public Sub 主菜单(ByVal MenuForm As Form, ByVal MenuName As String, ByVal MenuBmpPathName As String)    'Remove all existing tools an bands
        'Add band
    '左侧的总菜单
    '参数一:弹出式菜单名字、和标题
        Set oBand = MenuForm.AB.Bands.Add(MenuName)
        With oBand
            .Caption = "Context Menu"
            .Type = ddBTPopup
            .Picture = LoadPicture(MenuBmpPathName)
            .PopupBannerBackgroundColor = RGB(102, 151, 111)
        End With
    '菜单分隔条
        'Add tools
        'Separator
        Set oTool = MenuForm.AB.Tools.Add(0, "Separator")
        With oTool
            .Caption = ""
            .Category = "Format"
            .ControlType = ddTTSeparator
        End With
    Set MenuForms = MenuForm
    End SubPublic Sub 子菜单(ByVal MenuName As String, ByVal MenuCaption As String, ByVal MenuBmpPathName As String)'第一菜单项
        'Bold
        Set oTool = MenuForms.AB.Tools.Add(1, MenuName)
        With oTool
        '设置菜单标题
            .Caption = MenuCaption
            .Category = "Format"
            .ControlType = ddTTButton
        '设置菜单图标
            .SetPicture ddITNormal, LoadPicture(MenuBmpPathName)
        End With
        oBand.Tools.Insert -1, oTool'刷新
        MenuForms.AB.RecalcLayout
    End Sub恩,不得不说明一下,当时在窗体里面画好了一个ActiveBar2,然后命名为AB测试代码的时候不要忘记这样做。当时怎么想的来。。应该写成过程比较对。。以下在窗体Dim PopMenu As New PopMenuSeup
    Private Sub Form_Load()
    AB.AlignToForm = True
    AB.AutoSizeChildren = ddASProportional
    AB.AutoUpdateStatusBar = False
    '装载弹出式菜单主菜单
    PopMenu.主菜单 Me, "tbContext", App.Path & "\Images\context.bmp"
    '装载弹出式菜单子菜单
    PopMenu.子菜单 "tbOpen", "打开", App.Path & "\images\open.bmp"
    PopMenu.子菜单 "tbOpen1", "打开", App.Path & "\images\DELETE.bmp"
    PopMenu.子菜单 "tbOpen2", "打开", App.Path & "\images\open.bmp"
    End Sub
    Private Sub AB_MouseUp(Button As Integer, shift As Integer, x As Single, y As Single)
    '按下右键就弹出菜单
    If Button = vbRightButton Then
                AB.Bands("tbContext").PopupMenu 3
        End If
    End Sub将就看吧。哎。