明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

VB打造超酷個(gè)性化菜單(一)

[摘要]VB打造超酷個(gè)性化菜單(一) 眾所周知,MS Office 2003推出已經(jīng)有一段時(shí)間了,但我們依然不會(huì)忘記Office XP剛剛推出時(shí)其令人耳目一新的菜單給我們留下的深刻印象。突起的懸浮式圖標(biāo),不同尋常的菜單項(xiàng)填充方式,不僅讓辦公一族們贊不絕口,更讓廣大的程序員和編程愛好者對(duì)這種風(fēng)格的菜...
VB打造超酷個(gè)性化菜單(一)



眾所周知,MS Office 2003推出已經(jīng)有一段時(shí)間了,但我們依然不會(huì)忘記Office XP剛剛推出時(shí)其令人耳目一新的菜單給我們留下的深刻印象。突起的懸浮式圖標(biāo),不同尋常的菜單項(xiàng)填充方式,不僅讓辦公一族們贊不絕口,更讓廣大的程序員和編程愛好者對(duì)這種風(fēng)格的菜單的制作產(chǎn)生了濃厚的興趣。所以,在這篇文章里,我們就來好好地研究研究用VB怎么制作這種風(fēng)格的菜單,在文章的最后,我將給出源代碼的下載地址。事實(shí)上,在了解其原理以后,不論是用VB、VC還是Delphi,都能夠制作出XP風(fēng)格的菜單。不僅如此,我們還可以制作出更加充滿個(gè)性的另類風(fēng)格的菜單,比如3D立體風(fēng)格、漸變風(fēng)格、多彩風(fēng)格等等。只有想不到的,沒有做不到的。Follow me!

現(xiàn)在,我想有必要說一說我們現(xiàn)在要做的事情。事實(shí)上,我們只要做一個(gè)菜單類就行了。但誰都會(huì)明白,只做一個(gè)菜單類是不夠的,我們需要一個(gè)程序,或者更詳細(xì)的說,是一個(gè)窗體,來測試我們的菜單類。在我個(gè)人的開發(fā)過程中,我是先寫的菜單類,后寫的測試窗體,但為了讓大家先領(lǐng)略一下寫好的菜單類在應(yīng)用時(shí)是多么的方便,所以讓我們先來看看測試窗體:

(1)打開VB,新建“標(biāo)準(zhǔn)EXE”工程。

(2)­­下面是窗體的控件:



組件名稱
屬性


Form
Name

Caption
frmMain

菜單例子

Frame
Name

Caption
fraStyle

菜單風(fēng)格

Label
Name

Caption
lblHelp

在窗體空白處單擊鼠標(biāo)右鍵

OptionButton
Name

Caption

Index
opnStyle

Window 標(biāo)準(zhǔn)

0

OptionButton
Name

Caption

Index
opnStyle

XP 風(fēng)格

1

OptionButton
Name

Caption

Index
opnStyle

3D 立體風(fēng)格

2

OptionButton
Name

Caption

Index
opnStyle

漸變風(fēng)格

3

OptionButton
Name

Caption

Index
opnStyle

多彩風(fēng)格

4




其實(shí)就是在窗體上添加了一個(gè)Frame,然后在Frame里添加OptionButton控件數(shù)組,用來設(shè)置菜單風(fēng)格,還有一個(gè)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()

' 初始化菜單并添加菜單項(xiàng)

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"), "重復(fù)", MIT_STRING

menu.AddItem "sep2", LoadPicture(), "", MIT_SEPARATOR

menu.AddItem "cut", LoadPicture("images\cut.ico"), "剪切", MIT_STRING

menu.AddItem "copy", LoadPicture("images\copy.ico"), "復(fù)制", MIT_STRING

menu.AddItem "paste", LoadPicture("images\paste.ico"), "粘貼", MIT_STRING

menu.AddItem "sep3", LoadPicture(), "", MIT_SEPARATOR

menu.AddItem "check", LoadPicture("images\check.ico"), "一個(gè) 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)

' 單擊鼠標(biāo)右建彈出菜單

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)

' 設(shè)置菜單風(fēng)格

Select Case Index

Case 0 ' Windows 標(biāo)準(zhǔn)

menu.Style = STYLE_WINDOWS

Case 1 ' XP 風(fēng)格

menu.Style = STYLE_XP

Case 2 ' 3D 立體風(fēng)格

menu.Style = STYLE_3D

Case 3 ' 漸變風(fēng)格

menu.Style = STYLE_SHADE

Case 4 ' 多彩風(fēng)格

menu.Style = STYLE_COLORFUL

End Select

End Sub



代碼中創(chuàng)建了一個(gè)cMenu類的對(duì)象,我們的編程重點(diǎn)將會(huì)放在cMenu類上,上面的代碼只是簡單地調(diào)用cMenu。在后面的文章中,我們會(huì)看到其實(shí)cMenu有多達(dá)30個(gè)方法和屬性供我們調(diào)用,它的Style屬性只提供了5種內(nèi)置風(fēng)格,在實(shí)際應(yīng)用中,我們可以利用cMenu類提供的方法和屬性制作出各種各樣風(fēng)格的菜單,為自己的程序錦上添花。

(4)運(yùn)行結(jié)果:






























這篇文章只是拋磚引玉,讓大家先睹為快,提前體驗(yàn)一下這個(gè)菜單類的魅力。在下一篇中,我們將繼續(xù)討論個(gè)性化菜單的制作,不一樣的是,我們的重點(diǎn)將是那個(gè)cMenu類。 :)


<>