home *** CD-ROM | disk | FTP | other *** search
- DefInt A-Z
-
- 'Window API Function Declarations
- '
- Declare Function GetMenu% Lib "user" (ByVal hwnd%)
- Declare Function GetSubMenu% Lib "user" (ByVal hMenu%, ByVal nPos%)
- Declare Function GetMenuItemID% Lib "user" (ByVal hMenu%, ByVal nPos%)
- Declare Function ModifyMenu% Lib "user" (ByVal hMenu%, ByVal nPosition%, ByVal wFlags%, ByVal wIDNewItem%, ByVal lpNewItem&)
- Declare Function SetMenuItemBitmaps% Lib "user" (ByVal hMenu%, ByVal nPosition%, ByVal wFlags%, ByVal hBitmapUnchecked%, ByVal hBitmapChecked%)
- Declare Function TrackPopupMenu Lib "user" (ByVal hMenu, ByVal r1, ByVal X, ByVal Y, ByVal r2, ByVal hwnd, ByVal r3&)
- Declare Function GetSystemMenu Lib "user" (ByVal hwnd%, ByVal revert%) As Integer
- Const MF_BITMAP = &H4
-
- Const CLR_MENUBAR = &H80000004
-
- Const TRUE = -1, FALSE = 0
-
- Dim TextItems$(4), LastSelection%, CurrentText%, hMenu%
-
- Sub Form_Load ()
-
- '* Obtain handle to the Forms top level menu
-
- hMenu% = GetMenu(hwnd)
-
- Static_Bitmaps_To_Menus
-
- '* Initial String with text displayed when menus are selected.
- '* (Just so something happens when a menu is selected.)
-
- TextItems$(0) = "Writing Tools"
- TextItems$(1) = "Fonts"
- TextItems$(2) = "Books/Notes"
- TextItems$(3) = "Printers"
- TextItems$(4) = "Computers"
-
- '* Set "Dynamic" menus submenus initial Menu text values
- '* to Fontname + Fontsize of each menu item
-
- For I% = 0 To 4
- MSubMenu(I%).Caption = picture3(I%).FontName + Str$(picture3(I%).FontSize) + " Pnt"
- Next I%
-
- End Sub
-
- Sub SubMenu_Click (Index As Integer)
-
- Static LastSelection%
-
- '* Set text to that of selected menu item and
- '* display the new text
-
- CurrentText% = Index
- Form_Paint
-
- '* Uncheck last selected item and check seledted item
-
- SubMenu(LastSelection%).Checked = FALSE 'Check selected menu
- SubMenu(Index).Checked = TRUE 'UnCheck last selected menu
-
- LastSelection% = Index 'Save current selection
-
- End Sub
-
- Sub MSubMenu_Click (Index As Integer)
-
- Static LastSelection%
-
- '* Reset forms FontSize to selected fontsize
- '* and redisplay current text
-
- FontSize = picture3(Index).FontSize
- Form_Paint
-
- '* Uncheck last selected item and check selected item
-
- MSubMenu(LastSelection%).Checked = FALSE
- MSubMenu(Index).Checked = TRUE
-
- LastSelection% = Index
-
- End Sub
-
- Sub Create_Dynamic_Menu_Bitmaps ()
-
- For I% = 0 To 4
-
- '* Set the width and height of the Picture controls
- '* based on their corresponding Menu items caption,
- '* and the Picture controls Font and FontSize.
- '* DoEvents() is neccessary to make new dimension
- '* values to take affect prior to exiting this Sub.
-
- picture3(I%).Width = picture3(I%).TextWidth(MSubMenu(I%).Caption)
- picture3(I%).Height = picture3(I%).TextHeight(MSubMenu(I%).Caption)
- X% = DoEvents()
-
- '* Set Backcolor of Picture control to that of the
- '* current system Menu Bar color, so Dynamic bitmaps
- '* will appear as normal menu items when menu bar
- '* color is changed via the control panel
-
- picture3(I%).BackColor = CLR_MENUBAR
-
- '* Print Text onto Picture control. This text will
- '* become the bitmap.
-
- picture3(I%).Print MSubMenu(I%).Caption
-
- Next I%
-
- '* Obtain handle Second submenu
-
- hSubMenu% = GetSubMenu(hMenu%, 1)
-
- '* - Set picture controls backgroup picture (Bitmap) to its Image.
- '* Can't use the Image bitmap directly for some reason.
- '* - Get ID of sub menu
- '* - Replace menu text with bitmap from corresponding picture control
- '* - Replace bitmap for menu check mark with custom check mark bitmap
-
- For I% = 0 To 4
- picture3(I%).Picture = picture3(I%).Image
- menuId% = GetMenuItemID(hSubMenu%, I%)
- X% = ModifyMenu(hMenu%, menuId%, MF_BITMAP, menuId%, CLng(picture3(I%).Picture))
- X% = SetMenuItemBitmaps(hMenu%, menuId%, 0, 0, CLng(picture2.Picture))
- Next I%
-
- End Sub
-
- Sub Form_Paint ()
- Cls
- Print TextItems$(CurrentText%)
- End Sub
-
- Sub CreateDynamic_Click ()
- CreateDynamic.enabled = FALSE
- Create_Dynamic_Menu_Bitmaps
- End Sub
-
- Sub Static_Bitmaps_To_Menus ()
-
- '* Obtain handle to first submenu
-
- hSubMenu% = GetSubMenu(hMenu%, 0)
-
- '* - Get ID of each sub menu
- '* - Replace menu text with bitmap from corresponding picture control
- '* - Replace bitmap for menu check mark with custom check mark bitmap
-
- For I% = 0 To 4
- menuId% = GetMenuItemID(hSubMenu%, I%)
- X% = ModifyMenu(hMenu%, menuId%, MF_BITMAP, menuId%, CLng(picture1(I%).Picture))
- X% = SetMenuItemBitmaps(hMenu%, menuId%, 0, 0, CLng(picture2.Picture))
- Next I%
-
- SubMenu(1).enabled = 0
- hMenu% = GetSystemMenu(hwnd, 0)
- menuId% = &HF120
- X% = ModifyMenu(hMenu%, menuId%, MF_BITMAP, menuId%, CLng(picture3(0).Picture))
-
- End Sub
-
- Sub Form_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single)
-
- ScaleMode = 3
- InPixels = ScaleWidth
- ScaleMode = 1
- IX = (X + Left) \ (ScaleWidth \ InPixels)
- IY = (Y + (Top + (Height - ScaleHeight - (Width - ScaleWidth)))) \ (ScaleWidth \ InPixels)
- R = TrackPopupMenu(GetSubMenu(hMenu%, Button - 1), 0, IX, IY, 0, hwnd, 0)
-
- End Sub
-
-