Atlanta Custom Software Development 

 
   Search        Code/Page
 

User Login
Email

Password

 

Forgot the Password?
Services
» Web Development
» Maintenance
» Data Integration/BI
» Information Management
Programming
  Database
Automation
OS/Networking
Graphics
Links
Tools
» Regular Expr Tester
» Free Tools

SplitSubMenu - Split a submenu with vertical bars

Total Hit ( 2858)

Rate this article:     Poor     Excellent 

 Submit Your Question/Comment about this article

Rating


 


Click here to copy the following block
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

Private Declare Function GetMenu Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, _
  ByVal nPos As Long) As Long
Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As _
  Long
Private Declare Function GetMenuItemInfo Lib "user32" Alias "GetMenuItemInfoA" _
  (ByVal hMenu As Long, ByVal un As Long, ByVal b As Long, _
  lpMenuItemInfo As MENUITEMINFO) As Long
Private Declare Function SetMenuItemInfo Lib "user32" Alias "SetMenuItemInfoA" _
  (ByVal hMenu As Long, ByVal un As Long, ByVal bool As Boolean, _
  lpcMenuItemInfo As MENUITEMINFO) As Long

Private Const MIIM_TYPE = &H10
Private Const RGB_STARTNEWCOLUMNWITHVERTBAR = &H20&
Private Const MFT_STRING = 0

' Split a menu with one or more vertical lines
' Return True if successful
'
' HWND is the handle of the parent window
' ITEMSINSECTION is the max number of items in each
'    section created by the vertical lines
' MENUPOS is a list of arguments that point to the menu item to be split
'  the first argument is the top-level menu
'    (0 = the left-most top-level menu)
'  the second argument, if specified, is the position
'  of the submenu inside the top-level menu
'    (0 = the submenu is the first item in the top-level menu)
'  and so on
'
' For example, suppose you want to split the File menu
' (the left-most toplevel menu) in groups of 10 items
'   SplitMenu Me.hWnd, 10, 0
' the following statement splits the 5th submenu of the
' Edit menu (which is the 2nd toplevel menu)
'   SplitMenu Me.hWnd, 10, 1, 4

Function SplitSubMenu(ByVal hWnd As Long, ByVal itemsInSection As Long, _
  ParamArray menuPos() As Variant) As Boolean
  Dim hMenu As Long
  Dim itemCount As Long
  Dim itemInfo As MENUITEMINFO
  Dim index As Long
  Dim ret As Long
  
  ' get the handle of the menu bar
  hMenu = GetMenu(hWnd)
  ' get the handle of the specified menu
  For index = 0 To UBound(menuPos)
    hMenu = GetSubMenu(hMenu, menuPos(index))
  Next
  
  ' get the number of items in this submenu
  itemCount = GetMenuItemCount(hMenu)
  
  ' init the MENUITEMINFO structure
  itemInfo.cbSize = Len(itemInfo)
  
  For index = itemsInSection To itemCount Step itemsInSection
    ' we only want to retrieve the menu type
    itemInfo.fMask = MIIM_TYPE
    ' retrieve caption as well
    itemInfo.fType = MFT_STRING
    itemInfo.dwTypeData = Space$(128)
    itemInfo.cch = Len(itemInfo.dwTypeData)
    ' get information about the specified menu item
    ' (True means that 2nd arg is the item's position)
    ret = GetMenuItemInfo(hMenu, index, True, itemInfo)
    ' exit if unsuccessful
    If ret = 0 Then Exit Function
    
    ' set the new style for this item
    itemInfo.fType = itemInfo.fType Or RGB_STARTNEWCOLUMNWITHVERTBAR
    ret = SetMenuItemInfo(hMenu, index, True, itemInfo)
    ' exit if unsuccessful
    If ret = 0 Then Exit Function
  Next
  
  ' True if successful
  SplitSubMenu = True
  
End Function


Submitted By : Nayan Patel  (Member Since : 5/26/2004 12:23:06 PM)

Job Description : He is the moderator of this site and currently working as an independent consultant. He works with VB.net/ASP.net, SQL Server and other MS technologies. He is MCSD.net, MCDBA and MCSE. In his free time he likes to watch funny movies and doing oil painting.
View all (893) submissions by this author  (Birth Date : 7/14/1981 )


Home   |  Comment   |  Contact Us   |  Privacy Policy   |  Terms & Conditions   |  BlogsZappySys

© 2008 BinaryWorld LLC. All rights reserved.