• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

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

        創建位圖菜單

        創建位圖菜單

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

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

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

        樣例程序

        在Visual Basic中開始一個新的工程,采用缺省的方法建立Form1。
        創建一個新的模塊,采用缺省的方法建立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,Face2.ico,Face3.
        ico,Face4.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個臉譜圖標所形成的位圖子菜
        單項,單擊“文件”\“退出”菜單可退出應用程序。 

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

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 亚洲国产超清无码专区| 亚洲尹人九九大色香蕉网站| 亚洲天堂中文字幕在线| 亚洲综合久久1区2区3区| 色www免费视频| 国产精品黄页在线播放免费| 亚洲嫩模在线观看| 国产一级片免费看| 亚洲国产精品尤物yw在线| 婷婷国产偷v国产偷v亚洲| **aaaaa毛片免费| 狠狠综合久久综合88亚洲| 亚洲欧美国产精品专区久久| 午夜国产精品免费观看| 亚洲国产香蕉碰碰人人| 国产免费无码一区二区| 精品亚洲永久免费精品| 七色永久性tv网站免费看| 色播亚洲视频在线观看| 8x成人永久免费视频| 亚洲综合色丁香麻豆| 免费毛片a在线观看67194| 国产亚洲中文日本不卡二区| 在线不卡免费视频| 亚洲av永久中文无码精品综合 | 亚洲成AV人片在线观看ww| 污视频在线免费观看| 亚洲国产精品久久久久秋霞影院 | 99视频在线免费看| 亚洲成a人片7777| 亚洲成人免费在线观看| 亚洲一级毛片免费看| 全黄a免费一级毛片人人爱| 美美女高清毛片视频黄的一免费| 亚洲人成无码网站久久99热国产| 国产免费AV片在线观看 | 日韩一卡2卡3卡4卡新区亚洲| 久久免费观看国产99精品| 老子影院午夜伦不卡亚洲| 亚洲AV成人片色在线观看高潮 | 中文字幕无码视频手机免费看|