带图标的程序菜单(1--002)

1、新建工程,创建默认窗体Form1,将name属性改为frm_main.

2、选择VB菜单中的“工具”--->“菜单编辑器”。要输入【】符号,搜狗拼音点最后一个符号,选“表情&符号”--->“特殊符号”;如果是万能五笔,在右下角万能五笔图标上点右键,选“输入特殊符号”--->“标点符号”.

3、只需创建第一个菜单及子项即可,后面的菜单没有执行代码的。

4、由于要为菜单添加图标,需要容纳图标的控件ImageList,在工具箱上右击,“部件”--->选取“Microsoft Windows Common Controls 6.0(SP6)”.接着将ImageList控件放到窗体上。为和书上代码一致,将其name改为ImageList2.

5、在ImageList2控件上右击选取“属性”,点选“图像”标签,点击“插入图片”按钮,依次插入bmp文件夹下的49、18、04、7这四个bmp文件

6、在代码视图下,点VB菜单的“外接程序”--->“API浏览器”;“文件”--->“加载文本文件”,选取Program Files---Microsoft Visual Studio---Common---Tools---Winapi文件夹下的WIN32API文件

7、API类型选“声明”,接下来的文本框中输入getmenu,右边选“私有”,点“添加”按钮;接着再输入getmenu得文本框中重新输入getsubmenu,点“添加”按钮;再次输入getmenuitemid、setmenuitembitmaps,重复上述步骤。最后点击“插入”按钮,

8、点击“清除”按钮,API类型选“常数”,接下来的文本框中输入mf_bitmap,点“添加”按钮,最后点击“插入”按钮,关闭该窗口。

9、在代码窗口中去掉Const MF_BITMAP = &H4&前的Public.

10、最后代码如下:

'以下代码是通过VB菜单的“外接程序”--->“API浏览器”添加的
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 GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long

Private 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
Const MF_BITMAP = &H4&


'为“进货管理”菜单下的子菜单添加图标

Private Sub Form_Load()
    Dim i As Integer    '子菜单项数变量
    Dim menu1 As Long   '菜单句柄
    Dim menuID As Long  '子菜单句柄
    menu1 = GetMenu(Me.hwnd) 'Me即为窗体,返回窗体上菜单的句柄
    For i = 1 To 4
        menuID = GetMenuItemID(GetSubMenu(menu1, 0), i - 1)
        SetMenuItemBitmaps menu1, menuID, MF_BITMAP, ImageList2.ListImages(i).Picture, ImageList2.ListImages(i).Picture
    Next
End Sub

猜你喜欢

转载自blog.csdn.net/itlife20081224/article/details/5558301