ビットマップアイコンメニュー

<戻る

ここに載せてあるソースコードは、参考のために載せてあります

サンプルコードは、一番下にLZHとしてあります




Option Explicit

'13×13の画像しか使えません
'このサンプルの画像は、16×16の画像を使っているので
'うまくいってませんが、13×13の画像を自作すれば問題ないでしょう。

Private Sub cmdMenuChange_Click()
    CreateBitmapMenu Me.hWnd
End Sub


Sub CreateBitmapMenu(ByVal hWnd As Long)
    Dim hMenu As Long, hSubMenu As Long, hID As Long
    Dim MainMenu_MaxCount As Long, SubMenu_MaxCount As Long
    Dim jMain As Long, jSub As Long
    Dim lngImageCount As Long, picImage As Picture
    Dim Image_MaxCount As Long
    
    'イメージリストのイメージ数を代入します
    Image_MaxCount = ilsMenuIcon.ListImages.Count
    
    'フォームのメニューハンドルを取得します
    hMenu = GetMenu(hWnd)
    
    '親メニューの数を取得します
    MainMenu_MaxCount = GetMenuItemCount(hMenu)
    
    '親メニューがない(メニューが存在しない)場合は、内部を処理しません
    If Not (MainMenu_MaxCount = -1) Then
        
        '親メニューの数だけループします
        For jMain = 0 To MainMenu_MaxCount - 1
            
            '親メニューのハンドルを取得します
            hSubMenu = GetSubMenu(hMenu, jMain)
            
            '子メニューがない場合は、内部を処理しません
            If Not (hSubMenu = -1) Then
                
                '子メニューの数を取得します
                SubMenu_MaxCount = GetMenuItemCount(hSubMenu)
                
                '子メニューの数だけループします
                For jSub = 0 To SubMenu_MaxCount - 1
                    
                    '子メニューのIDを取得します
                    hID = GetMenuItemID(hSubMenu, jSub)
                                        
                    'イメージリストのインデックス値を増やしていきます
                    lngImageCount = lngImageCount + 1
                    
                    'イメージが足りない場合は、サブプロシージャから出ます
                    If lngImageCount > Image_MaxCount Then Exit Sub
                    
                    'イメージリストの指定イメージのタグが "X" なら、
                    'その子メニューにビットマップアイコンを表示しません
                    If Not (ilsMenuIcon.ListImages(lngImageCount).Tag = "X") Then
                        
                        'イメージの代入です
                        Set picImage = ilsMenuIcon.ListImages(lngImageCount).Picture
                        
                        '子メニューにビットマップアイコンを表示します
                        '題4引数は、メニューのCheckdが False のビットマップです
                        '題5引数は、その逆です
                        SetMenuItemBitmaps hMenu, hID, MF_BITMAP, picImage, 0
                        
                    End If
                Next
            End If
        Next
    End If
End Sub



<戻る

Sample51.lzh


http://www.vector.co.jp/authors/VA015521/