12.20 懶豬編程實例七:Visual Basic實現帶美麗圖標的菜單

一般在程序中,菜單是以文本形式來顯示的,如下圖所示,很單調和乏味的文字

懶豬編程實例七:Visual Basic實現帶美麗圖標的菜單

如果在菜單的前面加上圖標,那麼這個程序界面就顯得高大上了,怎麼加呢,說實話在VB裡面加這種圖標還算是比較麻煩的,它需要用到各種API函數進行調用,一大堆的莫名參數等著你去理解,很是頭疼,下面來看看你的頭是怎麼疼的吧

圖標菜單

這裡面用到了幾個關於菜單添加圖標的API函數,其中包括GetMenu、GetSubMenu、GetMenuItemID和SetMenuItemBitmaps,利用這幾個函數可以將圖標添加到菜單上

在編寫代碼前,我們要加入一個ImageList控件,這個控件是實現菜單圖標化的關鍵,沒它不行,大家可以在工具欄中找到這個控件圖標,放到窗體上即可。如果工具欄中沒有這個控件,還是老方法,通過"工程"菜單下的"部件"進行添加

懶豬編程實例七:Visual Basic實現帶美麗圖標的菜單

將ImageList控件添加到窗體後,右鍵屬性彈出窗口後,通過插入圖片添加四個我們需要用到的小圖像

懶豬編程實例七:Visual Basic實現帶美麗圖標的菜單

搞定之後,開始編寫代碼了,首先要聲明我們需要用到的幾個API函數,以便我們在程序中可以直接調用

懶豬編程實例七:Visual Basic實現帶美麗圖標的菜單

雙擊窗體進入到窗體加載代碼區域,編寫如下代碼

懶豬編程實例七:Visual Basic實現帶美麗圖標的菜單

代碼解釋

GetMenu負責獲得彈出菜單的句柄,說白了,就是靠它來判斷窗體上到底有沒有菜單控件,如果沒有則返回Null值,其中這裡面的hwnd參數就是來指定有菜單的窗口

GetSubMenu負責獲得彈出菜單的句柄,它有兩個參數,hmenu參數用來指定父菜單,npos菜單用來指定彈出菜單在主菜單中的位置

SetMenuItemBitmaps的作用就是把位圖搞過來,它的參數比較多,hmenu和npos參數功能和上面的一樣,wflags參數來決定npos參數指定的是ID還是順序編號,hBitmapUnchecked和hBitmapChecked就是指定菜單項的位圖了

知道這幾個函數的功能和參數的作用就不難理解窗體程序中加載的代碼了

menu1 = GetMenu(Me.hwnd):判斷有沒有菜單

menuid = GetMenuItemID(GetSubMenu(menu1, 0), i - 1):獲取菜單的ID數值

SetMenuItemBitmaps menu1, menuid, bitmap, ImageList1.ListImages(i).Picture, ImageList1.ListImages(i).Picture:將圖像通過FOR循環依次賦值給這個菜單

運行效果

可以很明顯的看到,文件菜單下的子菜單前面都有一個小的圖標了,當然這個是隨意選上去的,大家可以根據程序要實現的功能,到網絡上找一些比較漂亮的小圖像放上去,這樣會使程序界面看起來更美

懶豬編程實例七:Visual Basic實現帶美麗圖標的菜單

下一期教大家,如何在VC#中加入菜單圖標,方法要比VB更容易,值得期待!


分享到:


相關文章: