日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

當前位置:雨林木風下載站 > 技術開發(fā)教程 > 詳細頁面

創(chuàng)建位圖菜單

創(chuàng)建位圖菜單

更新時間:2022-05-07 文章作者:未知 信息來源:網絡 閱讀次數(shù):

----創(chuàng)建位圖菜單其實非常簡單,它需要用到Windows應用程序編程接口(API)的
一些菜單函數(shù)和位圖函數(shù),你需要將這些函數(shù)的聲明包含在你的應用程序的標準模
塊中,具體的內容請參見樣例程序。步驟如下:

使用函數(shù)GetSubMenu來提取子菜單項的句柄,并通過使用函數(shù)CreateCompatibleDC
來創(chuàng)建一個兼容的設備環(huán)境描述表;
在一個循環(huán)過程中通過使用CreateCompatibleBitmap函數(shù),SelectObject函數(shù)以及
BitBlt函數(shù)來分別將針對各個菜單項所載入的位圖選入到兼容設備環(huán)境中;
通過ModifyMenu函數(shù)繪制真正的位圖菜單選項;
使用DeleteDC函數(shù)來釋放設備環(huán)境,以便其他的程序可以使用它們。
----提取位圖可以有多種方法,在本樣例程序中在窗體上設置了四個圖形框控件,
使用它們載入4個預設的圖標來作為菜單選項位圖的源文件,當然你也可以使用其
他的方法,例如使用LoadPicture函數(shù)來從磁盤裝載位圖。

樣例程序

在Visual Basic中開始一個新的工程,采用缺省的方法建立Form1。
創(chuàng)建一個新的模塊,采用缺省的方法建立Module1.Bas。
將如下的聲明語句和常量添加到Module1.Bas模塊中:
Option Explicit
Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long,
ByVal nPos As Long) As Long
Declare Function GetMenuItemID Lib "user32" (ByVal hMenu As Long,
ByVal nPos As Long) As Long
Declare Function ModifyMenu Lib "user32" Alias "ModifyMenuA"
(ByVal hMenu As Long,ByVal nPosition As Long, ByVal wFlags As Long,
ByVal wIDNewItem As Long, ByVal lpString As Any) As Long
Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As
Long
Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
Declare Function CreateCompatibleBitmap Lib "gdi32"
(ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long,
ByVal hObject As Long) As Long
Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As
Long,
ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal
hSrcDC
As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As
Long
Public Const SRCCOPY = &HCC0020
Public Const MF_BYPOSITION = &H400&
Public Const MF_BITMAP = &H4&

注意上面的聲明語句需要書寫在一行內。
在Form1上添加4個圖形框控件,將它們的Name屬性設置為Picture1,將它們的
Index屬性依次設置為0,1,2,3,將它們的AutoRedrew屬性設置為True,將它們
的AutoResize屬性設置為Ture,以及將它們的Visable屬性設置為False。
將上面的4個圖形框控件的Picture屬性依次設置為Face1.ico,F(xiàn)ace2.ico,F(xiàn)ace3.
ico,F(xiàn)ace4.ico。
在Form1上添加第一個菜單項,將它的標題設置為“[&F]文件”,名稱設置為
mnuFile。在其下添加一個子菜單項,將它的標題設置為“[&E]退出”,名稱設置
為mnuExit。
在Form1上添加第二個菜單項,將它的標題設置為“[&A]臉譜”,名稱設置為
mnuFace。在其下添加4個子菜單項,分別將改4個子菜單項的名稱設置為“[N]正常”
,“[&S]微笑”,“ [&L]大笑”,以及“[&O]悲傷”。將它們的名稱設置為“
mnuFaceSel”,并相應將這4個子菜單項的索引設置為0,1,2,3。
將如下的代碼添加到Form1的Form_Load事件中:
Private Sub Form_Load()
Dim nLoopCtr As Integer
Dim lResult As Long
Dim hTempDC As Long
Dim nWidth As Integer
Dim nHeight As Integer
Dim lTempID As Long
Dim hMenuID As Long
Dim lItemCount As Long
Dim hBitmap As Long
nWidth = Picture1(nLoopCtr).Width \ Screen.TwipsPerPixelX
nHeight = Picture1(nLoopCtr).Height \ Screen.TwipsPerPixelY
hMenuID = GetSubMenu(GetMenu((Me.hwnd)), 1)
hTempDC = CreateCompatibleDC(Picture1(nLoopCtr).hdc)
For nLoopCtr = 0 To 3
hBitmap = CreateCompatibleBitmap(Picture1(nLoopCtr).hdc, nWidth,
nHeight)
lTempID = SelectObject(hTempDC, hBitmap)
lResult = BitBlt(hTempDC, 0, 0, nWidth, nHeight, (Picture1(
nLoopCtr).hdc), 0, 0, SRCCOPY)
lTempID = SelectObject(hTempDC, lTempID)
nuFaceSel(nLoopCtr).Caption = ""
lResult = ModifyMenu(hMenuID, nLoopCtr, MF_BYPOSITION Or
MF_BITMAP,
GetMenuItemID(hMenuID, nLoopCtr), hBitmap)
Next nLoopCtr
lResult = DeleteDC(hTempDC)
End Sub
將如下的代碼添加到“退出”子菜單的單擊事件中:
Private Sub mnuExit_Click(Index As Integer)
Select Case Index
Case 0
Unload Me
End Select
End Sub
運行該樣例程序,單擊“臉譜”菜單,則會看到由4個臉譜圖標所形成的位圖子菜
單項,單擊“文件”\“退出”菜單可退出應用程序。 

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

主站蜘蛛池模板: 日韩在线观 | 国产日韩精品欧美一区喷水 | 精品国产福利第一区二区三区 | 亚洲成人免费在线 | 国产高清www免费视频 | 在线免费视频一区二区 | 在线观看日批视频 | 欧美精品国产日韩综合在线 | 97久久免费视频 | 国产日本三级欧美三级妇三级四 | 久久欧美久久综合 | 色黄啪啪18周岁以下禁止观看 | 在线观看中文 | 色www永久免费视频 色吧久久 | 欧美韩国日本在线观看 | 免费大片在线观看www | 蜜桃视频在线观看视频网站 | 91视频a| 国内成人免费视频 | 亚洲精品二区中文字幕 | 婷婷免费高清视频在线观看 | 精品国产96亚洲一区二区三区 | 免费人成年短视频在线观看网站 | 四虎精品影院永久在线播放 | 乱中年女人伦中文字幕久久 | 国产精品久久久久免费视频 | 欧美激情人成日本在线视频 | 欧美一区二区三区高清不卡tv | 国产欧美日韩免费不卡 | 国产第六页| 在线免费观看黄网站 | 成人福利视频在线观 | 国产福利免费看 | 久99久精品视频免费观看v | 色综合美国色农夫网 | 欧美日韩一区二区三 | 曰曰摸天天摸人人看久久久 | 免费看国产精品麻豆 | 国产在线一区观看 | 欧美日韩一区二区三区在线播放 | 免费国产成人手机在线观看 |