same何意?是知和Delphi的实现方法Same,还是Same想知道:)

解决方案 »

  1.   

    使用ActiveBar 2.0
    http://pinmo.com.cn/vbsite/down/ocx/form/ab2eval.EXE
    http://www.bestcracks.com/hjlkjhHJKiuy56j2khGkjg/d/vb4_actbar2.zip
      

  2.   

    VB 亦自带 CoolBar 控件哦!
      

  3.   

    用active bar吧,效果是一样的。
      

  4.   

    www.21code.com上有此类的例子代码
      

  5.   

    windows common controls 6.0中的toolbar和coolbar一样可以实现
    您要的功能
      

  6.   

    是的.
    please
    http://www.csdn.net/expert/topic/596/596127.xml?temp=.3724787
      

  7.   

    我有一个思路:设计两个窗体:FrmMain与FrmMenu
    在FrmMenu上建立好菜单
    在在FrmMain的CoolBar中连接一个PictureBox运行时:
    用“SetWindowRgn”使FrmMenu只显示菜单区域
    用“SetParent”把FrmMenu的父设为 FrmMain的CoolBar中的PictureBox
      

  8.   

    288794() 那个?好像不是。
    你看过 MSDN 没有,里面介绍的就是 Coolbar + Toolbar 来做这种菜单的,
    不信你可以使用 Spy++ 来查看 Explorer 的菜单条,看它是不是 Toolbar,zyl910(910:分儿,我来了!) 
    你的思路不错,可是效果就不敢恭维,我曾经做过的。
      

  9.   

    288794 ,~{2;4m#,2;4m#,C;?4WPO8#,=qLlIO~}MSDN~{8z~}Delphi~{T4BkU[LZAK4s0kLl#,;X9}H%R;?4#,:G:G#,Tg?4Ge>M2;SC7Q>"AK#:#)~}~{5+JG#,Hg9{NRC;TY4N?44m#,DcDG6N4zBkJG8D1d~}Toolbar~{5D~}Style~{#,2;OTJ>~}Image~{#,NRR*Wv5D6+Nw;9:\6`#:~}
       1.~{2;OTJ>OB@-<}M7#,<4HCVwLe04E%:MOB@-<}M704E%R;Le#,RQJ5OV#:~}
          SendMessage hToolbar, TB_SETEXTENDEDSTYLE, 0, BTNS_WHOLEDROPDOWN
       2.~{=+KySP5D2K5%04E%~}Style~{<S@`KFSZ~}Delphi~{VP~}Grouped~{JtPT#,2ED\1mOV5CUfOs2K5%#,7qTrTZ~}hover~{W4L,W*5=AmR;8v04E%2;1d;/!#8z~}Delphi~{T4Bk#,JGSC~}TB_SETBUTTONINFO~{#,FdVP~}
    Private Type TBBUTTONINFO
        cbSize As Long
        dwMask As Long
        idCommand As Long
        iImage As Long
        fsState As Byte
        fsStyle As Byte
        cx As Integer
        lParam As Long
        pszText As String
        cchText As Long
    End Type
    ~{=a995D~}fsStyle or TBSTYLE_GROUP(&H4)~{NR2ISCOH~}TB_GETBUTTONINFO~{#,H;:sP^8D8C=a99#,TY7"KM~}TB_SETBUTTONINFO~{#,2;3IOkTuC46<V4PP2;3I9&#:#(~}~{E<6T~}VB~{Uf5D2;Jl#,8USCAK<8Ll#,8DFp@4J5TZM74s#,;9Gk~}288794~{@O4s6`6`0oC&#,6`P;6`P;#!~}
      

  10.   

    288794,~{2;4m#,2;4m#,C;?4WPO8#,=qLlIO~}MSDN~{8z~}Delphi~{T4BkU[LZAK4s0kLl#,;X9}H%R;?4#,:G:G#,Tg?4Ge>M2;SC7Q>"AK#:#)~}~{5+JG#,Hg9{NRC;TY4N?44m#,DcDG6N4zBkJG8D1d~}Toolbar~{5D~}Style~{#,2;OTJ>~}Image~{#,NRR*Wv5D6+Nw;9:\6`#:~}
       1.~{2;OTJ>OB@-<}M7#,<4HCVwLe04E%:MOB@-<}M704E%R;Le#,RQJ5OV#:~}
          SendMessage hToolbar, TB_SETEXTENDEDSTYLE, 0, BTNS_WHOLEDROPDOWN
       2.~{=+KySP5D2K5%04E%~}Style~{<S@`KFSZ~}Delphi~{VP~}Grouped~{JtPT#,2ED\1mOV5CUfOs2K5%#,7qTrTZ~}hover~{W4L,W*5=AmR;8v04E%2;1d;/!#8z~}Delphi~{T4Bk#,JGSC~}TB_SETBUTTONINFO~{#,FdVP~}
    Private Type TBBUTTONINFO
        cbSize As Long
        dwMask As Long
        idCommand As Long
        iImage As Long
        fsState As Byte
        fsStyle As Byte
        cx As Integer
        lParam As Long
        pszText As String
        cchText As Long
    End Type
    ~{=a995D~}fsStyle or TBSTYLE_GROUP(&H4)~{NR2ISCOH~}TB_GETBUTTONINFO~{#,H;:sP^8D8C=a99#,TY7"KM~}TB_SETBUTTONINFO~{#,2;3IOkTuC46<V4PP2;3I9&#:#(~}~{E<6T~}VB~{Uf5D2;Jl#,8USCAK<8Ll#,8DFp@4J5TZM74s#,;9Gk~}288794~{@O4s6`6`0oC&#,6`P;6`P;#!~}
      

  11.   

    ~{2;4m#,2;4m#,C;?4WPO8#,=qLlIO~}MSDN~{8z~}Delphi~{T4BkU[LZAK4s0kLl#,;X9}H%R;?4#,:G:G#,Tg?4Ge>M2;SC7Q>"AK#:#)~}~{5+JG#,Hg9{NRC;TY4N?44m#,DcDG6N4zBkJG8D1d~}Toolbar~{5D~}Style~{#,2;OTJ>~}Image~{#,NRR*Wv5D6+Nw;9:\6`#:~}
       1.~{2;OTJ>OB@-<}M7#,<4HCVwLe04E%:MOB@-<}M704E%R;Le#,RQJ5OV#:~}
          SendMessage hToolbar, TB_SETEXTENDEDSTYLE, 0, BTNS_WHOLEDROPDOWN
       2.~{=+KySP5D2K5%04E%~}Style~{<S@`KFSZ~}Delphi~{VP~}Grouped~{JtPT#,2ED\1mOV5CUfOs2K5%#,7qTrTZ~}hover~{W4L,W*5=AmR;8v04E%2;1d;/!#8z~}Delphi~{T4Bk#,JGSC~}TB_SETBUTTONINFO~{#,FdVP~}
    Private Type TBBUTTONINFO
        cbSize As Long
        dwMask As Long
        idCommand As Long
        iImage As Long
        fsState As Byte
        fsStyle As Byte
        cx As Integer
        lParam As Long
        pszText As String
        cchText As Long
    End Type
    ~{=a995D~}fsStyle or TBSTYLE_GROUP(&H4)~{NR2ISCOH~}TB_GETBUTTONINFO~{#,H;:sP^8D8C=a99#,TY7"KM~}TB_SETBUTTONINFO~{#,2;3IOkTuC46<V4PP2;3I9&#:#(~}~{E<6T~}VB~{Uf5D2;Jl#,8USCAK<8Ll#,8DFp@4J5TZM74s#,;9Gk~}288794~{@O4s6`6`0oC&#,6`P;6`P;#!~}
      

  12.   

    taking over almost any new application which has toolbars - and I can see why. I mean, it's got style, a simple look and adds an attractive side to your application.  Visual Basic 5.0 didn't bring these controls in as a part of its new control set, but you can do it yourself with the old Common Controls Toolbar, and an API call. 1. Create a new project, and add the Common Controls ActiveX control to it.
    2. Draw the Toolbar onto a form. Add your buttons.
    3. Place the following into the General Declarations section:     Private Declare Function FindWindowEx Lib "user32" _
        Alias "FindWindowExA" (ByVal hWndParent As Long, ByVal _
        hWndChildWindow As Long, ByVal lpClassName As String, _
        ByVal lpsWindowName As String) As Long    Const TB_SETSTYLE = WM_USER + 56
        Const TB_GETSTYLE = WM_USER + 57    Const WM_USER = &H400    Const TBSTYLE_FLAT = &H800
           4. Add this Sub to the General Declarations Section as well:     Public Sub SetTBar97(TBar As Toolbar)
            Dim lTBarStyle As Long, lTBarHwnd As Long
            lTBarHwnd = FindWindowEx(TBar.hWnd, 0&, _
            "ToolbarWindow32", vbNullString)
            lTBarStyle = SendMessage(lTBarHwnd, TB_GETSTYLE, _
            0&, 0&)
            lTBarStyle = lTBarStyle Or TBSTYLE_FLAT
            SendMessage lTBarHwnd, TB_SETSTYLE, 0, lTBarStyle
            TBar.Refresh
        End Sub
           5. Add a Module and add this to it:     Declare Function SendMessage Lib "user32" Alias _
        "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As _
        Long, ByVal wParam As Long, lParam As Any) As Long
           6. You can make the Toolbars Office 97 Style with: SetTBar97 Toolbar1 Toolbar1, of course, being your toolbar control's name.
      

  13.   

    另外:
    你还可以去下载一个spdbdock.ocx控件,它是一个被称作“入坞”的控件,
    这样你可以把菜单放在一个窗体中,然后在程序启动时让它“入坞”即可。
      

  14.   

    288794,不错,不错,没看仔细,今天上MSDN跟Delphi源码折腾了大半天,回过去一看,呵呵,早看清就不用费劲了:)但是,如果我没再次看错,你那段代码是改变Toolbar的Style,不显示Image,我要做的东西还很多:
       1.不显示下拉箭头,即让主体按钮和下拉箭头按钮一体,已实现:
          SendMessage hToolbar, TB_SETEXTENDEDSTYLE, 0, BTNS_WHOLEDROPDOWN
       2.将所有的菜单按钮Style加类似于Delphi中Grouped属性,才能表现得真象菜单,否则在hover状态转到另一个按钮不变化.跟Delphi源码,是用TB_SETBUTTONINFO,其中    Private Type TBBUTTONINFO
            cbSize As Long
            dwMask As Long
            idCommand As Long
            iImage As Long
            fsState As Byte
            fsStyle As Byte
            cx As Integer
            lParam As Long
            pszText As String
            cchText As Long
        End Type结构的fsStyle需要or一下TBSTYLE_GROUP(&H4)我采用先TB_GETBUTTONINFO,然后修改该结构,再发送TB_SETBUTTONINFO,不成想怎么都执行不成功:(偶对VB不熟,刚用了几天,改起来实在头大,还请288794老大多多帮忙,多谢多谢!
      

  15.   

    说明:昨晚发了三回,不知怎么回事,全是乱码,还不让发,楼上的朋友帮助重发了一次。wwfang(方耀东) :搞错了,我不是要Toolbar,我要Menu Bar,上面已经说得很明白了。Toolbar,在VB6里可以直接设为Flat,只是还不全。现在问题的焦点是:怎样让几个菜单按钮同组(Grouped = True)
      

  16.   

    mis98ZB () 这位大大可能就是搞这个,你可以找一下他.
    我是在网吧上的网回去帮你测试一下,等着吧......
      

  17.   

    在哪儿能找到mis98ZB大虾呀?谢谢288794。
      

  18.   

    一、怎样得到ToolBar中的菜单的句柄?
    二、怎样是它能像真正的菜单一样:可以用左右方向键移动菜单?
      

  19.   

    参见:
    wwfang(方耀东):
    lTBarHwnd = FindWindowEx(TBar.hWnd, 0&, "ToolbarWindow32", vbNullString)
    288794(): 
    htool=findwindowEX(Toolbar1.hwnd,0&,"msvb_lib_toolbar",vbNullstring)经过我机器上测试,288794()的参数是可行的,即"msvb_lib_toolbar",照一些资料上说的"ToolbarWindow32"不行;即使第三个参数也设置成vbNullstring,也能得到正确的句柄。
      

  20.   

    昨晚回去看了 MSDN,看来用 VB 实现确实是有点困难,但在技术上也不是实现不
    了的,要用到的技术很多,子类化,鼠标钩子,键盘钩子......
    我靠!看来有时间要花时间来封装它......
    同志们,多多努力吧......ToolbarWindow32 是版本 5 的 ToolBar 使用。
      

  21.   

    mis98ZB,发短信息找他吧,好象很久没有浮出水面了.
      

  22.   

    我觉得最简单的还是用coolbar和toolbar。
      

  23.   

    子类化这两天我也琢摸过,是VB中的消息接收机制,考虑用于控制菜单的重画等等,确实比较麻烦。不过我现在不用处理接收消息,只发消息,所以用不到那么麻烦的技术,思路有的,就是没调试好:
        1.发送TB_GETBUTTONINFO,得到TBBUTTONINFO结构
        2.TBBUTTONINFO.fsStyle中加入TBSTYLE_GROUP风格
        3.发送TB_SETBUTTONINFO,重设TBBUTTONINFO结构ayuu(ayuu),伙计,就是用coolbar和toolbar,做Menu Bar。
      

  24.   

    不行啊,MSDN 就是这样介绍的,要不然你如何处理 Alt 等键盘事件。
      

  25.   

    vb同样可以CoolBar + toolbar
      

  26.   

    前提只要VB你装了SP5
    你用Coolbar + Toolbar跟Delphi中是一样的
    引用 mircrosoft windows comman ctroal 5.0版
      

  27.   

    说Coolbar + Toolbar能做Menu Bar的大虾,不妨做一个给我看看,就像IE或资源管理器那样的菜单栏,能在Coolbar上移动的那种——我作了很多尝试了,不行!SP5装的有!!
    我的信箱:[email protected]
      

  28.   

    我记得以前VB版还讨论过这个问Coolbar + toolbar来做菜单..当时做法是toolbar里面放置按钮,然后根据不同按钮来弹出popupmenu..
    并不需要 你说的  <<avant(千寻)  "考虑用于控制菜单的重画等等">>
    不需要重画!
    至于模仿效果还有人写出程序了,忘记他名字和帖子了..做得不错.确实是子类化窗体以后做到的...至于点击菜单以后移动鼠标要模拟菜单那样自动弹出.好像是hitTest来做的..SetCapture和ReleaseCapture也是必须的..
      

  29.   

    试来试去,从原理到实现到结果细节做的最好的还是vbsmart.com给的免费ocx,可惜没有源码——有些小问题,中文显示的不是太好,有源码就好了:)那一套不用ocx作XP效果的控件,基本是垃圾,每一个上头都放Timer,狂耗资源!一阵儿就死翘翘!我试着改了一个XPButton,效率好多了,又懒的改别的。你在它作的菜单上来回移动鼠标,哈哈……瑞星的XP菜单也有这个问题,猛移鼠标,它就废了!太累,不玩儿这个了,再过一天结贴子。