菜單控制
在菜單上增加圖標 聲明: DeclareFunctionGetMenuLibuser32?(ByValhwndAsLong)AsLong DeclareFunctionGetSubMenuLibuser32?(ByValhMenuAsLong,ByValnPosAsLong)AsLong DeclareFunctionGetMenuItemIDLibuser32?(ByValhMenuAsLong,ByValnPosAsLong)AsLong Decl
在菜單上增加圖標
聲明:
Declare Function GetMenu Lib "user32"?(ByVal hwnd As Long) As Long
Declare Function GetSubMenu Lib "user32"?(ByVal hMenu As Long, ByVal nPos As Long) As Long
Declare Function GetMenuItemID Lib "user32"?(ByVal hMenu As Long, ByVal nPos As Long) As Long
Declare Function SetMenuItemBitmaps Lib "user32"?(ByVal hMenu As Long, ByVal nPosition As Long,?ByVal wFlags As Long, ByVal hBitmapUnchecked As Long, ?ByVal hBitmapChecked As Long) As Long
Public Const MF_BITMAP = &H4&
Type MENUITE
MINFO
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
clearcase/" target="_blank" >cch As Long
End Type
Declare Function GetMenuItemCount Lib "user32"?(ByVal hMenu As Long) As Long
Declare Function GetMenuItemInfo Lib "user32"?Alias "GetMenuItemInfoA" (ByVal hMenu As Long,?ByVal un As Long, ByVal b As Boolean,?lpMenuItemInfo As MENUITEMINFO) As Boolean
Public Const MIIM_ID = &H2
Public Const MIIM_TYPE = &H10
Public Const MFT_STRING = &H0&
使用: 在 Form1 中增加一個 PictureBox1, AutoSize 為 True, 放一個小 Bmp (不是 Icon!推薦 13*13)。
Private Sub Command1_Click()
'Get the menuhandle of your app
hMenu& = GetMenu(Form1.hwnd)
'Get the handle of the first submenu (Hello)
hSubMenu& = GetSubMenu(hMenu&, 0)
'Get the menuId of the first entry (Bitmap)
hID& = GetMenuItemID(hSubMenu&, 0)
'Add the bitmap
SetMenuItemBitmaps hMenu&, hID&, MF_BITMAP, Picture1.Picture, Picture1.Picture
'You can add two bitmaps to a menuentry
'One for the checked and one for the unchecked
'state.
End Sub
菜單項的動態裝入
菜單項的動態裝入是指菜單項的個數不固定. 例子就是文件菜單中最近打開的文件的列表。在第一次打開文件之前,該列表是空的,并且不在文件菜單中出現;打開一個文件后,該列表不再是空的,并且文件菜單中出現代表被打開文件的菜單項。
具體的實現過程如下:
在文件菜單里增加一個菜單項,標題任意,并假設菜單項的Name屬性是opened_files_ list;
更改菜單項opened_files_list的可見屬性,使 opened_files_list.Visible=False
更改菜單項opened_files_list的下標屬性,使 opened_files_list.Index=0
在程序中控制菜單項opened_files_list的動態裝入。
假設要顯示打開過的第二個文件的文件名,并且該文件名存放在一個文件名數組opened _file_name里。以下的代碼就實現了這一功能:
Load opened_files_list(1)
opened_files_list(1).Caption="&2"+opened_file_name(1)
opened_files_list(1).Visible=True
需要注意的是,對于下標為0的菜單項,不能用Load方法。因為在程序執行時,該菜單項就 已經被裝入到內存里了;另外,在菜單項的標題屬性字符里的"&"字符具有特殊的含義,它的作 用是在顯示該屬性字符串的同時,并不顯示"&"本身,而緊跟"&"的字符在顯示時具有下劃線, 并且該字符成為熱鍵。
如果下標不為0的菜單項不再需要,為了減少對內存資源的占用,可以用Unload方法把它 從內存卸出;同樣地,不能用Unload卸出下標為0的菜單項。
原文轉自:http://www.anti-gravitydesign.com
国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97
|