VB打造超酷個性化菜單(一)
發表時間:2024-02-22 來源:明輝站整理相關軟件相關文章人氣:
[摘要]VB打造超酷個性化菜單(一) 眾所周知,MS Office 2003推出已經有一段時間了,但我們依然不會忘記Office XP剛剛推出時其令人耳目一新的菜單給我們留下的深刻印象。突起的懸浮式圖標,不同尋常的菜單項填充方式,不僅讓辦公一族們贊不絕口,更讓廣大的程序員和編程愛好者對這種風格的菜...
VB打造超酷個性化菜單(一)
眾所周知,MS Office 2003推出已經有一段時間了,但我們依然不會忘記Office XP剛剛推出時其令人耳目一新的菜單給我們留下的深刻印象。突起的懸浮式圖標,不同尋常的菜單項填充方式,不僅讓辦公一族們贊不絕口,更讓廣大的程序員和編程愛好者對這種風格的菜單的制作產生了濃厚的興趣。所以,在這篇文章里,我們就來好好地研究研究用VB怎么制作這種風格的菜單,在文章的最后,我將給出源代碼的下載地址。事實上,在了解其原理以后,不論是用VB、VC還是Delphi,都能夠制作出XP風格的菜單。不僅如此,我們還可以制作出更加充滿個性的另類風格的菜單,比如3D立體風格、漸變風格、多彩風格等等。只有想不到的,沒有做不到的。Follow me!
現在,我想有必要說一說我們現在要做的事情。事實上,我們只要做一個菜單類就行了。但誰都會明白,只做一個菜單類是不夠的,我們需要一個程序,或者更詳細的說,是一個窗體,來測試我們的菜單類。在我個人的開發過程中,我是先寫的菜單類,后寫的測試窗體,但為了讓大家先領略一下寫好的菜單類在應用時是多么的方便,所以讓我們先來看看測試窗體:
(1)打開VB,新建“標準EXE”工程。
(2)­­下面是窗體的控件:
組件名稱
屬性
值
Form
Name
Caption
frmMain
菜單例子
Frame
Name
Caption
fraStyle
菜單風格
Label
Name
Caption
lblHelp
在窗體空白處單擊鼠標右鍵
OptionButton
Name
Caption
Index
opnStyle
Window 標準
0
OptionButton
Name
Caption
Index
opnStyle
XP 風格
1
OptionButton
Name
Caption
Index
opnStyle
3D 立體風格
2
OptionButton
Name
Caption
Index
opnStyle
漸變風格
3
OptionButton
Name
Caption
Index
opnStyle
多彩風格
4
其實就是在窗體上添加了一個Frame,然后在Frame里添加OptionButton控件數組,用來設置菜單風格,還有一個Label,上面只顯示一行提示文字,非常簡單。
(3)窗體代碼:
Option Explicit
Private Declare Function GetCursorPos Lib "user32.dll" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
X As Long
Y As Long
End Type
Dim menu As cMenu
Private Sub Form_Load()
' 初始化菜單并添加菜單項
Set menu = New cMenu
menu.CreateMenu
menu.AddItem "open", LoadPicture("images\open.ico"), "打開", MIT_STRING
menu.AddItem "save", LoadPicture("images\save.ico"), "保存", MIT_STRING
menu.AddItem "print", LoadPicture("images\print.ico"), "打印", MIT_STRING
menu.AddItem "find", LoadPicture("images\find.ico"), "查找", MIT_STRING
menu.AddItem "sep1", LoadPicture(), "", MIT_SEPARATOR
menu.AddItem "undo", LoadPicture("images\undo.ico"), "撤消", MIT_STRING
menu.AddItem "redo", LoadPicture("images\redo.ico"), "重復", MIT_STRING
menu.AddItem "sep2", LoadPicture(), "", MIT_SEPARATOR
menu.AddItem "cut", LoadPicture("images\cut.ico"), "剪切", MIT_STRING
menu.AddItem "copy", LoadPicture("images\copy.ico"), "復制", MIT_STRING
menu.AddItem "paste", LoadPicture("images\paste.ico"), "粘貼", MIT_STRING
menu.AddItem "sep3", LoadPicture(), "", MIT_SEPARATOR
menu.AddItem "check", LoadPicture("images\check.ico"), "一個 CheckBox", MIT_CHECKBOX
menu.AddItem "exit", LoadPicture("images\exit.ico"), "退出", MIT_STRING
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
' 單擊鼠標右建彈出菜單
If Button = vbRightButton Then
Dim pos As POINTAPI
GetCursorPos pos
menu.PopupMenu pos.X, pos.Y, POPUP_LEFTALIGN Or POPUP_TOPALIGN
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
' 釋放資源, 卸載窗體
Set menu = Nothing
Dim frm As Form
For Each frm In Forms
Unload frm
Next
End Sub
Private Sub opnStyle_Click(Index As Integer)
' 設置菜單風格
Select Case Index
Case 0 ' Windows 標準
menu.Style = STYLE_WINDOWS
Case 1 ' XP 風格
menu.Style = STYLE_XP
Case 2 ' 3D 立體風格
menu.Style = STYLE_3D
Case 3 ' 漸變風格
menu.Style = STYLE_SHADE
Case 4 ' 多彩風格
menu.Style = STYLE_COLORFUL
End Select
End Sub
代碼中創建了一個cMenu類的對象,我們的編程重點將會放在cMenu類上,上面的代碼只是簡單地調用cMenu。在后面的文章中,我們會看到其實cMenu有多達30個方法和屬性供我們調用,它的Style屬性只提供了5種內置風格,在實際應用中,我們可以利用cMenu類提供的方法和屬性制作出各種各樣風格的菜單,為自己的程序錦上添花。
(4)運行結果:
這篇文章只是拋磚引玉,讓大家先睹為快,提前體驗一下這個菜單類的魅力。在下一篇中,我們將繼續討論個性化菜單的制作,不一樣的是,我們的重點將是那個cMenu類。 :)
<>