zoukankan      html  css  js  c++  java
  • 用代码实现toolbar弹出ButtonMenus(VB)

    代码如下:

    Option Explicit

    Private Type TBBUTTON

        iBitmap As Long

        idCommand As Long

        fsState As Byte

        fsStyle As Byte

        bReserved1 As Byte

        bReserved2 As Byte

        dwData As Long

        iString As Long

    End Type

    Private Type NMHDR

        hwndFrom As Long

        idfrom As Long

        code As Long

    End Type

    Private Type NMTOOLBAR

        hdr As NMHDR

        iItem As Long

        tbBtn As TBBUTTON

        cchText As Long

        lpszString As Long

    End Type

    Private Const TBN_FIRST = -700&

    Private Const TBN_DROPDOWN = (TBN_FIRST - 10)

    Private Const WM_USER = &H400

    Private Const TB_GETBUTTON As Long = (WM_USER + 23)

    Private Const WM_NOTIFY As Long = &H4E&

    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

    Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)

        If Button.Index = 4 Then '假如toolbar上的第4个按钮有buttonmenu,同时其样式为5

            showbuttonmenu Toolbar1, Button.Index - 1

        End If

    End Sub

    Private Sub showbuttonmenu(Toolbar1 As MSComctlLib.Toolbar, ByVal Buttonindex As Long)       

        'buttonindex从0开始

        Dim tButton As TBBUTTON

        Dim tNotify As NMTOOLBAR

        Dim lResult As Long

        Dim mhwnd As Long

        Dim lCommandId As Long

        mhwnd = FindWindowEx(Toolbar1.hwnd, 0, "msvb_lib_toolbar", vbNullString)

        lResult = SendMessage(mhwnd, TB_GETBUTTON, Buttonindex, tButton)

        lCommandId = tButton.idCommand

        With tNotify

            .hdr.code = TBN_DROPDOWN

            .hdr.hwndFrom = mhwnd

            .iItem = lCommandId

        End With

        lResult = SendMessage(Toolbar1.hwnd, WM_NOTIFY, 0, tNotify)

    End Sub

     

    本文转自:http://rainstormmaster.cnblogs.com/archive/2006/03/24/357795.html

  • 相关阅读:
    宋体、新宋体、仿宋体
    单例模式————你就是我的唯一
    极乐净土代码——第一辑
    泛函是个什么概念
    http和https的区别
    get和post的区别
    浏览器输入URL按回车后都经历了什么?
    求两个列表的交集、并集、差集
    使用lamdba函数对list排序
    乐观锁和悲观锁的区别
  • 原文地址:https://www.cnblogs.com/bluemaplestudio/p/1675174.html
Copyright © 2011-2022 走看看