韩剧1988免费观看全集_久久影视三级福利片_亚洲视频在线观看免费_在线观看欧美日韩_国产亚洲激情在线_亚洲精品美女久久久_欧美国产日韩一区二区在线观看_91在线观看免费高清完整版在线观看_日韩av免费看_国产又爽又黄的激情精品视频_琪琪亚洲精品午夜在线_欧美性猛xxx_不卡毛片在线看_国产亚洲日本欧美韩国_91国内在线视频_精品国产福利视频

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

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

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

更新時(shí)間:2022-10-13 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

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



現(xiàn)在到了最關(guān)鍵,最精彩,也是最復(fù)雜的部分了。我們最關(guān)心的就是怎樣“畫”菜單,怎樣處理菜單事件,在MenuWndProc這個(gè)處理消息的函數(shù)里,我們要處理如下消息:WM_COMMAND(單擊菜單項(xiàng)),WM_MEASUREITEM(處理菜單高度和寬度),WM_MENUSELECT(選擇菜單項(xiàng)),WM_DRAWITEM(繪制菜單項(xiàng))。

打開上次建好的工程,添加一個(gè)標(biāo)準(zhǔn)模塊,并將其名稱設(shè)置為mMenu,代碼如下:

'**************************************************************************************************************

'* 本模塊配合 cMenu 菜單類模塊

'*

'* 版權(quán): LPP軟件工作室

'* 作者: 盧培培(goodname008)

'* (******* 復(fù)制請保留以上信息 *******)

'**************************************************************************************************************



Option Explicit



' -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- API 函數(shù)聲明 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-



Public 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 Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Public Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long

Public Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long

Public Declare Function CreatePopupMenu Lib "user32" () As Long

Public Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long

Public Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long

Public Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long

Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long

Public Declare Function DestroyMenu Lib "user32" (ByVal hMenu As Long) As Long

Public Declare Function DrawEdge Lib "user32" (ByVal hdc As Long, qrc As RECT, ByVal edge As Long, ByVal grfFlags As Long) As Long

Public Declare Function DrawIconEx Lib "user32" (ByVal hdc As Long, ByVal xLeft As Long, ByVal yTop As Long, ByVal hIcon As Long, ByVal cxWidth As Long, ByVal cyWidth As Long, ByVal istepIfAniCur As Long, ByVal hbrFlickerFreeDraw As Long, ByVal diFlags As Long) As Long

Public Declare Function DrawState Lib "user32" Alias "DrawStateA" (ByVal hdc As Long, ByVal hBrush As Long, ByVal lpDrawStateProc As Long, ByVal lParam As Long, ByVal wParam As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal n3 As Long, ByVal n4 As Long, ByVal un As Long) As Long

Public Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long

Public Declare Function FillRect Lib "user32" (ByVal hdc As Long, lpRect As RECT, ByVal hBrush As Long) As Long

Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long

Public Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long

Public Declare Function GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long

Public Declare Function GetMenuItemInfo Lib "user32" Alias "GetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, ByVal b As Long, lpMenuItemInfo As MENUITEMINFO) As Long

Public Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long

Public Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long

Public Declare Function InflateRect Lib "user32" (lpRect As RECT, ByVal x As Long, ByVal y As Long) As Long

Public Declare Function InsertMenuItem Lib "user32" Alias "InsertMenuItemA" (ByVal hMenu As Long, ByVal un As Long, ByVal bool As Boolean, ByRef lpcMenuItemInfo As MENUITEMINFO) As Long

Public Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long

Public Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long

Public Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, lpPoint As Long) As Long

Public Declare Function Rectangle Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long

Public Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long

Public Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long

Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Public Declare Function SetBkMode Lib "gdi32" (ByVal hdc As Long, ByVal nBkMode As Long) As Long

Public Declare Function SetMenuItemInfo Lib "user32" Alias "SetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, ByVal bool As Boolean, lpcMenuItemInfo As MENUITEMINFO) As Long

Public Declare Function SetTextColor Lib "gdi32" (ByVal hdc As Long, ByVal crColor As Long) As Long

Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long



Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)





' -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- API 常量聲明 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-



Public Const GWL_WNDPROC = (-4) ' SetWindowLong 設(shè)置窗口函數(shù)入口地址

Public Const SM_CYMENU = 15 ' GetSystemMetrics 獲得系統(tǒng)菜單項(xiàng)高度



Public Const WM_COMMAND = &H111 ' 消息: 單擊菜單項(xiàng)

Public Const WM_DRAWITEM = &H2B ' 消息: 繪制菜單項(xiàng)

Public Const WM_EXITMENULOOP = &H212 ' 消息: 退出菜單消息循環(huán)

Public Const WM_MEASUREITEM = &H2C ' 消息: 處理菜單高度和寬度

Public Const WM_MENUSELECT = &H11F ' 消息: 選擇菜單項(xiàng)



' ODT

Public Const ODT_MENU = 1 ' 菜單

Public Const ODT_LISTBOX = 2 ' 列表框

Public Const ODT_COMBOBOX = 3 ' 組合框

Public Const ODT_BUTTON = 4 ' 按鈕



' ODS

Public Const ODS_SELECTED = &H1 ' 菜單被選擇

Public Const ODS_GRAYED = &H2 ' 灰色字

Public Const ODS_DISABLED = &H4 ' 禁用

Public Const ODS_CHECKED = &H8 ' 選中

Public Const ODS_FOCUS = &H10 ' 聚焦



' diFlags to DrawIconEx

Public Const DI_MASK = &H1 ' 繪圖時(shí)使用圖標(biāo)的MASK部分 (如單獨(dú)使用, 可獲得圖標(biāo)的掩模)

Public Const DI_IMAGE = &H2 ' 繪圖時(shí)使用圖標(biāo)的XOR部分 (即圖標(biāo)沒有透明區(qū)域)

Public Const DI_NORMAL = DI_MASK Or DI_IMAGE ' 用常規(guī)方式繪圖 (合并 DI_IMAGE 和 DI_MASK)



' nBkMode to SetBkMode

Public Const TRANSPARENT = 1 ' 透明處理, 即不作上述填充

Public Const OPAQUE = 2 ' 用當(dāng)前的背景色填充虛線畫筆、陰影刷子以及字符的空隙

Public Const NEWTRANSPARENT = 3 ' 在有顏色的菜單上畫透明文字





' MF 菜單相關(guān)常數(shù)

Public Const MF_BYCOMMAND = &H0& ' 菜單條目由菜單的命令I(lǐng)D指定

Public Const MF_BYPOSITION = &H400& ' 菜單條目由條目在菜單中的位置決定 (零代表菜單中的第一個(gè)條目)



Public Const MF_CHECKED = &H8& ' 檢查指定的菜單條目 (不能與VB的Checked屬性兼容)

Public Const MF_DISABLED = &H2& ' 禁止指定的菜單條目 (不與VB的Enabled屬性兼容)

Public Const MF_ENABLED = &H0& ' 允許指定的菜單條目 (不與VB的Enabled屬性兼容)

Public Const MF_GRAYED = &H1& ' 禁止指定的菜單條目, 并用淺灰色描述它. (不與VB的Enabled屬性兼容)

Public Const MF_HILITE = &H80&

Public Const MF_SEPARATOR = &H800& ' 在指定的條目處顯示一條分隔線

Public Const MF_STRING = &H0& ' 在指定的條目處放置一個(gè)字串 (不與VB的Caption屬性兼容)

Public Const MF_UNCHECKED = &H0& ' 檢查指定的條目 (不能與VB的Checked屬性兼容)

Public Const MF_UNHILITE = &H0&



Public Const MF_BITMAP = &H4& ' 菜單條目是一幅位圖. 一旦設(shè)入菜單, 這幅位圖就絕對不能刪除, 所以不應(yīng)該使用由VB的Image屬性返回的值.

Public Const MF_OWNERDRAW = &H100& ' 創(chuàng)建一個(gè)物主繪圖菜單 (由您設(shè)計(jì)的程序負(fù)責(zé)描繪每個(gè)菜單條目)

Public Const MF_USECHECKBITMAPS = &H200&



Public Const MF_MENUBARBREAK = &H20& ' 在彈出式菜單中, 將指定的條目放置于一個(gè)新列, 并用一條垂直線分隔不同的列.

Public Const MF_MENUBREAK = &H40& ' 在彈出式菜單中, 將指定的條目放置于一個(gè)新列. 在頂級菜單中, 將條目放置到一個(gè)新行.



Public Const MF_POPUP = &H10& ' 將一個(gè)彈出式菜單置于指定的條目, 可用于創(chuàng)建子菜單及彈出式菜單.

Public Const MF_HELP = &H4000&



Public Const MF_DEFAULT = &H1000

Public Const MF_RIGHTJUSTIFY = &H4000



' fMask To InsertMenuItem ' 指定 MENUITEMINFO 中哪些成員有效

Public Const MIIM_STATE = &H1

Public Const MIIM_ID = &H2

Public Const MIIM_SUBMENU = &H4

Public Const MIIM_CHECKMARKS = &H8

Public Const MIIM_TYPE = &H10

Public Const MIIM_DATA = &H20

Public Const MIIM_STRING = &H40

Public Const MIIM_BITMAP = &H80

Public Const MIIM_FTYPE = &H100



' fType To InsertMenuItem ' MENUITEMINFO 中菜單項(xiàng)類型

Public Const MFT_BITMAP = &H4&

Public Const MFT_MENUBARBREAK = &H20&

Public Const MFT_MENUBREAK = &H40&

Public Const MFT_OWNERDRAW = &H100&

Public Const MFT_SEPARATOR = &H800&

Public Const MFT_STRING = &H0&



' fState to InsertMenuItem ' MENUITEMINFO 中菜單項(xiàng)狀態(tài)

Public Const MFS_CHECKED = &H8&

Public Const MFS_DISABLED = &H2&

Public Const MFS_ENABLED = &H0&

Public Const MFS_GRAYED = &H1&

Public Const MFS_HILITE = &H80&

Public Const MFS_UNCHECKED = &H0&

Public Const MFS_UNHILITE = &H0&



' nFormat to DrawText

Public Const DT_LEFT = &H0 ' 水平左對齊

Public Const DT_CENTER = &H1 ' 水平居中對齊

Public Const DT_RIGHT = &H2 ' 水平右對齊



Public Const DT_SINGLELINE = &H20 ' 單行



Public Const DT_TOP = &H0 ' 垂直上對齊 (僅單行時(shí)有效)

Public Const DT_VCENTER = &H4 ' 垂直居中對齊 (僅單行時(shí)有效)

Public Const DT_BOTTOM = &H8 ' 垂直下對齊 (僅單行時(shí)有效)



Public Const DT_CALCRECT = &H400 ' 多行繪圖時(shí)矩形的底邊根據(jù)需要進(jìn)行延展, 以便容下所有文字; 單行繪圖時(shí), 延展矩形的右側(cè), 不描繪文字, 由lpRect參數(shù)指定的矩形會(huì)載入計(jì)算出來的值.

Public Const DT_WORDBREAK = &H10 ' 進(jìn)行自動(dòng)換行. 如用SetTextAlign函數(shù)設(shè)置了TA_UPDATECP標(biāo)志, 這里的設(shè)置則無效.



Public Const DT_NOCLIP = &H100 ' 描繪文字時(shí)不剪切到指定的矩形

Public Const DT_NOPREFIX = &H800 ' 通常, 函數(shù)認(rèn)為 & 字符表示應(yīng)為下一個(gè)字符加上下劃線, 該標(biāo)志禁止這種行為.



Public Const DT_EXPANDTABS = &H40 ' 描繪文字的時(shí)候, 對制表站進(jìn)行擴(kuò)展. 默認(rèn)的制表站間距是8個(gè)字符. 但是, 可用DT_TABSTOP標(biāo)志改變這項(xiàng)設(shè)定.

Public Const DT_TABSTOP = &H80 ' 指定新的制表站間距, 采用這個(gè)整數(shù)的高 8 位.

Public Const DT_EXTERNALLEADING = &H200 ' 計(jì)算文本行高度的時(shí)候, 使用當(dāng)前字體的外部間距屬性.



' nIndex to GetSysColor 標(biāo)準(zhǔn): 0--20

Public Const COLOR_ACTIVEBORDER = 10 ' 活動(dòng)窗口的邊框

Public Const COLOR_ACTIVECAPTION = 2 ' 活動(dòng)窗口的標(biāo)題

Public Const COLOR_APPWORKSPACE = 12 ' MDI桌面的背景

Public Const COLOR_BACKGROUND = 1 ' Windows 桌面

Public Const COLOR_BTNFACE = 15 ' 按鈕

Public Const COLOR_BTNHIGHLIGHT = 20 ' 按鈕的3D加亮區(qū)

Public Const COLOR_BTNSHADOW = 16 ' 按鈕的3D陰影

Public Const COLOR_BTNTEXT = 18 ' 按鈕文字

Public Const COLOR_CAPTIONTEXT = 9 ' 窗口標(biāo)題中的文字

Public Const COLOR_GRAYTEXT = 17 ' 灰色文字; 如使用了抖動(dòng)技術(shù)則為零

Public Const COLOR_HIGHLIGHT = 13 ' 選定的項(xiàng)目背景

Public Const COLOR_HIGHLIGHTTEXT = 14 ' 選定的項(xiàng)目文字

Public Const COLOR_INACTIVEBORDER = 11 ' 不活動(dòng)窗口的邊框

Public Const COLOR_INACTIVECAPTION = 3 ' 不活動(dòng)窗口的標(biāo)題

Public Const COLOR_INACTIVECAPTIONTEXT = 19 ' 不活動(dòng)窗口的文字

Public Const COLOR_MENU = 4 ' 菜單

Public Const COLOR_MENUTEXT = 7 ' 菜單文字

Public Const COLOR_SCROLLBAR = 0 ' 滾動(dòng)條

Public Const COLOR_WINDOW = 5 ' 窗口背景

Public Const COLOR_WINDOWFRAME = 6 ' 窗框

Public Const COLOR_WINDOWTEXT = 8 ' 窗口文字



' un to DrawState

Public Const DST_COMPLEX = &H0 ' 繪圖在由lpDrawStateProc參數(shù)指定的回調(diào)函數(shù)期間執(zhí)行, lParam和wParam會(huì)傳遞給回調(diào)事件.

Public Const DST_TEXT = &H1 ' lParam代表文字的地址(可使用一個(gè)字串別名),wParam代表字串的長度.

Public Const DST_PREFIXTEXT = &H2 ' 與DST_TEXT類似, 只是 & 字符指出為下各字符加上下劃線.

Public Const DST_ICON = &H3 ' lParam包括圖標(biāo)的句柄

Public Const DST_BITMAP = &H4 ' lParam包括位圖的句柄

Public Const DSS_NORMAL = &H0 ' 普通圖像

Public Const DSS_UNION = &H10 ' 圖像進(jìn)行抖動(dòng)處理

Public Const DSS_DISABLED = &H20 ' 圖象具有浮雕效果

Public Const DSS_MONO = &H80 ' 用hBrush描繪圖像

Public Const DSS_RIGHT = &H8000 ' 無任何作用



' edge to DrawEdge

Public Const BDR_RAISEDOUTER = &H1 ' 外層凸

Public Const BDR_SUNKENOUTER = &H2 ' 外層凹

Public Const BDR_RAISEDINNER = &H4 ' 內(nèi)層凸

Public Const BDR_SUNKENINNER = &H8 ' 內(nèi)層凹

Public Const BDR_OUTER = &H3

Public Const BDR_RAISED = &H5

Public Const BDR_SUNKEN = &HA

Public Const BDR_INNER = &HC

Public Const EDGE_BUMP = (BDR_RAISEDOUTER Or BDR_SUNKENINNER)

Public Const EDGE_ETCHED = (BDR_SUNKENOUTER Or BDR_RAISEDINNER)

Public Const EDGE_RAISED = (BDR_RAISEDOUTER Or BDR_RAISEDINNER)

Public Const EDGE_SUNKEN = (BDR_SUNKENOUTER Or BDR_SUNKENINNER)



' grfFlags to DrawEdge

Public Const BF_LEFT = &H1 ' 左邊緣

Public Const BF_TOP = &H2 ' 上邊緣

Public Const BF_RIGHT = &H4 ' 右邊緣

Public Const BF_BOTTOM = &H8 ' 下邊緣

Public Const BF_DIAGONAL = &H10 ' 對角線

Public Const BF_MIDDLE = &H800 ' 填充矩形內(nèi)部

Public Const BF_SOFT = &H1000 ' MSDN: Soft buttons instead of tiles.

Public Const BF_ADJUST = &H2000 ' 調(diào)整矩形, 預(yù)留客戶區(qū)

Public Const BF_FLAT = &H4000 ' 平面邊緣

Public Const BF_MONO = &H8000 ' 一維邊緣



Public Const BF_RECT = (BF_LEFT Or BF_TOP Or BF_RIGHT Or BF_BOTTOM)

Public Const BF_TOPLEFT = (BF_TOP Or BF_LEFT)

Public Const BF_TOPRIGHT = (BF_TOP Or BF_RIGHT)

Public Const BF_BOTTOMLEFT = (BF_BOTTOM Or BF_LEFT)

Public Const BF_BOTTOMRIGHT = (BF_BOTTOM Or BF_RIGHT)

Public Const BF_DIAGONAL_ENDTOPLEFT = (BF_DIAGONAL Or BF_TOP Or BF_LEFT)

Public Const BF_DIAGONAL_ENDTOPRIGHT = (BF_DIAGONAL Or BF_TOP Or BF_RIGHT)

Public Const BF_DIAGONAL_ENDBOTTOMLEFT = (BF_DIAGONAL Or BF_BOTTOM Or BF_LEFT)

Public Const BF_DIAGONAL_ENDBOTTOMRIGHT = (BF_DIAGONAL Or BF_BOTTOM Or BF_RIGHT)



' nPenStyle to CreatePen

Public Const PS_DASH = 1 ' 畫筆類型:虛線 (nWidth必須是1) -------

Public Const PS_DASHDOT = 3 ' 畫筆類型:點(diǎn)劃線 (nWidth必須是1) _._._._

Public Const PS_DASHDOTDOT = 4 ' 畫筆類型:點(diǎn)-點(diǎn)-劃線 (nWidth必須是1) _.._.._

Public Const PS_DOT = 2 ' 畫筆類型:點(diǎn)線 (nWidth必須是1) .......

Public Const PS_SOLID = 0 ' 畫筆類型:實(shí)線 _______





' -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- API 類型聲明 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-



Public Type RECT

Left As Long

Top As Long

Right As Long

Bottom As Long

End Type



Public Type DRAWITEMSTRUCT

CtlType As Long

CtlID As Long

itemID As Long

itemAction As Long

itemState As Long

hwndItem As Long

hdc As Long

rcItem As RECT

itemData As Long

End Type



Public Type MENUITEMINFO

cbSize As Long

fMask As Long

fType As Long

fState As Long

wID As Long

hSubMenu As Long

hbmpChecked As Long

hbmpUnchecked As Long

dwItemData As Long

dwTypeData As String

cch As Long

End Type



Public Type MEASUREITEMSTRUCT

CtlType As Long

CtlID As Long

itemID As Long

itemWidth As Long

itemHeight As Long

itemData As Long

End Type



Public Type Size

cx As Long

cy As Long

End Type





' 自定義菜單項(xiàng)數(shù)據(jù)結(jié)構(gòu)

Public Type MyMenuItemInfo

itemIcon As StdPicture

itemAlias As String

itemText As String

itemType As MenuItemType

itemState As MenuItemState

End Type



' 菜單相關(guān)結(jié)構(gòu)

Private MeasureInfo As MEASUREITEMSTRUCT

Private DrawInfo As DRAWITEMSTRUCT



Public hMenu As Long

Public preMenuWndProc As Long

Public MyItemInfo() As MyMenuItemInfo



' 菜單類屬性

Public BarWidth As Long ' 菜單附加條寬度

Public BarStyle As MenuLeftBarStyle ' 菜單附加條風(fēng)格

Public BarImage As StdPicture ' 菜單附加條圖像

Public BarStartColor As Long ' 菜單附加條過渡色起始顏色

Public BarEndColor As Long ' 菜單附加條過渡色終止顏色

Public SelectScope As MenuItemSelectScope ' 菜單項(xiàng)高亮條的范圍

Public TextEnabledColor As Long ' 菜單項(xiàng)可用時(shí)文字顏色

Public TextDisabledColor As Long ' 菜單項(xiàng)不可用時(shí)文字顏色

Public TextSelectColor As Long ' 菜單項(xiàng)選中時(shí)文字顏色

Public IconStyle As MenuItemIconStyle ' 菜單項(xiàng)圖標(biāo)風(fēng)格

Public EdgeStyle As MenuItemSelectEdgeStyle ' 菜單項(xiàng)邊框風(fēng)格

Public EdgeColor As Long ' 菜單項(xiàng)邊框顏色

Public FillStyle As MenuItemSelectFillStyle ' 菜單項(xiàng)背景填充風(fēng)格

Public FillStartColor As Long ' 菜單項(xiàng)過渡色起始顏色

Public FillEndColor As Long ' 菜單項(xiàng)過渡色終止顏色

Public BkColor As Long ' 菜單背景顏色

Public SepStyle As MenuSeparatorStyle ' 菜單分隔條風(fēng)格

Public SepColor As Long ' 菜單分隔條顏色

Public MenuStyle As MenuUserStyle ' 菜單總體風(fēng)格



' 攔截菜單消息 (frmMenu 窗口入口函數(shù))

Function MenuWndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Select Case Msg

Case WM_COMMAND ' 單擊菜單項(xiàng)

If MyItemInfo(wParam).itemType = MIT_CHECKBOX Then

If MyItemInfo(wParam).itemState = MIS_CHECKED Then

MyItemInfo(wParam).itemState = MIS_UNCHECKED

Else

MyItemInfo(wParam).itemState = MIS_CHECKED

End If

End If

MenuItemSelected wParam

Case WM_EXITMENULOOP ' 退出菜單消息循環(huán)(保留)



Case WM_MEASUREITEM ' 處理菜單項(xiàng)高度和寬度

MeasureItem hwnd, lParam

Case WM_MENUSELECT ' 選擇菜單項(xiàng)

Dim itemID As Long

itemID = GetMenuItemID(lParam, wParam And &HFF)

If itemID <> -1 Then

MenuItemSelecting itemID

End If

Case WM_DRAWITEM ' 繪制菜單項(xiàng)

DrawItem lParam

End Select

MenuWndProc = CallWindowProc(preMenuWndProc, hwnd, Msg, wParam, lParam)

End Function



' 處理菜單高度和寬度

Private Sub MeasureItem(ByVal hwnd As Long, ByVal lParam As Long)

Dim TextSize As Size, hdc As Long

hdc = GetDC(hwnd)

CopyMemory MeasureInfo, ByVal lParam, Len(MeasureInfo)

If MeasureInfo.CtlType And ODT_MENU Then

MeasureInfo.itemWidth = lstrlen(MyItemInfo(MeasureInfo.itemID).itemText) * (GetSystemMetrics(SM_CYMENU) / 2.5) + BarWidth

If MyItemInfo(MeasureInfo.itemID).itemType <> MIT_SEPARATOR Then

MeasureInfo.itemHeight = GetSystemMetrics(SM_CYMENU)

Else

MeasureInfo.itemHeight = 6

End If

End If

CopyMemory ByVal lParam, MeasureInfo, Len(MeasureInfo)

ReleaseDC hwnd, hdc

End Sub



' 繪制菜單項(xiàng)

Private Sub DrawItem(ByVal lParam As Long)

Dim hPen As Long, hBrush As Long

Dim itemRect As RECT, barRect As RECT, iconRect As RECT, textRect As RECT

Dim i As Long

CopyMemory DrawInfo, ByVal lParam, Len(DrawInfo)

If DrawInfo.CtlType = ODT_MENU Then

SetBkMode DrawInfo.hdc, TRANSPARENT



' 初始化菜單項(xiàng)矩形, 圖標(biāo)矩形, 文字矩形

itemRect = DrawInfo.rcItem

iconRect = DrawInfo.rcItem

textRect = DrawInfo.rcItem



' 設(shè)置菜單附加條矩形

With barRect

.Left = 0

.Top = 0

.Right = BarWidth - 1

For i = 0 To GetMenuItemCount(hMenu) - 1

If MyItemInfo(i).itemType = MIT_SEPARATOR Then

.Bottom = .Bottom + 6

Else

.Bottom = .Bottom + MeasureInfo.itemHeight

End If

Next i

.Bottom = .Bottom - 1

End With



' 設(shè)置圖標(biāo)矩形, 文字矩形

If BarStyle <> LBS_NONE Then iconRect.Left = barRect.Right + 2

iconRect.Right = iconRect.Left + 20

textRect.Left = iconRect.Right + 3



With DrawInfo



' 畫菜單背景

itemRect.Left = barRect.Right

hBrush = CreateSolidBrush(BkColor)

FillRect .hdc, itemRect, hBrush

DeleteObject hBrush





' 畫菜單左邊的附加條

Dim RedArea As Long, GreenArea As Long, BlueArea As Long

Dim red As Long, green As Long, blue As Long

Select Case BarStyle

Case LBS_NONE ' 無附加條



Case LBS_SOLIDCOLOR ' 實(shí)色填充



hBrush = CreateSolidBrush(BarStartColor)

FillRect .hdc, barRect, hBrush

DeleteObject hBrush



Case LBS_HORIZONTALCOLOR ' 水平過渡色



BlueArea = Int(BarEndColor / &H10000) - Int(BarStartColor / &H10000)

GreenArea = (Int(BarEndColor / &H100) And &HFF) - (Int(BarStartColor / &H100) And &HFF)

RedArea = (BarEndColor And &HFF) - (BarStartColor And &HFF)



For i = 0 To BarWidth - 1

red = Int(BarStartColor And &HFF) + Int(i / BarWidth * RedArea)

green = (Int(BarStartColor / &H100) And &HFF) + Int(i / BarWidth * GreenArea)

blue = Int(BarStartColor / &H10000) + Int(i / BarWidth * BlueArea)

hPen = CreatePen(PS_SOLID, 1, RGB(red, green, blue))

Call SelectObject(.hdc, hPen)

Call MoveToEx(.hdc, i, 0, 0)

Call LineTo(.hdc, i, barRect.Bottom)

Call DeleteObject(hPen)

Next i



Case LBS_VERTICALCOLOR ' 垂直過渡色



BlueArea = Int(BarEndColor / &H10000) - Int(BarStartColor / &H10000)

GreenArea = (Int(BarEndColor / &H100) And &HFF) - (Int(BarStartColor / &H100) And &HFF)

RedArea = (BarEndColor And &HFF) - (BarStartColor And &HFF)



For i = 0 To barRect.Bottom

red = Int(BarStartColor And &HFF) + Int(i / (barRect.Bottom + 1) * RedArea)

green = (Int(BarStartColor / &H100) And &HFF) + Int(i / (barRect.Bottom + 1) * GreenArea)

blue = Int(BarStartColor / &H10000) + Int(i / (barRect.Bottom + 1) * BlueArea)

hPen = CreatePen(PS_SOLID, 1, RGB(red, green, blue))

Call SelectObject(.hdc, hPen)

Call MoveToEx(.hdc, 0, i, 0)

Call LineTo(.hdc, barRect.Right, i)

Call DeleteObject(hPen)

Next i



Case LBS_IMAGE ' 圖像



If BarImage.Handle <> 0 Then

Dim barhDC As Long

barhDC = CreateCompatibleDC(GetDC(0))

SelectObject barhDC, BarImage.Handle

BitBlt .hdc, 0, 0, BarWidth, barRect.Bottom - barRect.Top + 1, barhDC, 0, 0, vbSrcCopy

DeleteDC barhDC

End If



End Select





' 畫菜單項(xiàng)

If MyItemInfo(.itemID).itemType = MIT_SEPARATOR Then

' 畫菜單分隔條(MIT_SEPARATOR)

If MyItemInfo(.itemID).itemType = MIT_SEPARATOR Then

itemRect.Top = itemRect.Top + 2

itemRect.Bottom = itemRect.Top + 1

itemRect.Left = barRect.Right + 5

Select Case SepStyle

Case MSS_NONE ' 無分隔條



Case MSS_DEFAULT ' 默認(rèn)樣式

DrawEdge .hdc, itemRect, EDGE_ETCHED, BF_TOP

Case Else ' 其它

hPen = CreatePen(SepStyle, 0, SepColor)

hBrush = CreateSolidBrush(BkColor)

SelectObject .hdc, hPen

SelectObject .hdc, hBrush

Rectangle .hdc, itemRect.Left, itemRect.Top, itemRect.Right, itemRect.Bottom

DeleteObject hPen

DeleteObject hBrush

End Select

End If

Else

If Not CBool(MyItemInfo(.itemID).itemState And MIS_DISABLED) Then ' 當(dāng)菜單項(xiàng)可用時(shí)

If .itemState And ODS_SELECTED Then ' 當(dāng)鼠標(biāo)移動(dòng)到菜單項(xiàng)時(shí)



' 設(shè)置菜單項(xiàng)高亮范圍

If SelectScope And ISS_ICON_TEXT Then

itemRect.Left = iconRect.Left

ElseIf SelectScope And ISS_TEXT Then

itemRect.Left = textRect.Left - 2

Else

itemRect.Left = .rcItem.Left

End If





' 處理菜單項(xiàng)無圖標(biāo)或?yàn)镃HECKBOX時(shí)的情況

If (MyItemInfo(.itemID).itemType = MIT_CHECKBOX Or MyItemInfo(.itemID).itemIcon = 0) And SelectScope <> ISS_LEFTBAR_ICON_TEXT Then

itemRect.Left = iconRect.Left

End If





' 畫菜單項(xiàng)邊框

Select Case EdgeStyle

Case ISES_NONE ' 無邊框



Case ISES_SUNKEN ' 凹進(jìn)

DrawEdge .hdc, itemRect, BDR_SUNKENOUTER, BF_RECT

Case ISES_RAISED ' 凸起

DrawEdge .hdc, itemRect, BDR_RAISEDINNER, BF_RECT

Case Else ' 其它

hPen = CreatePen(EdgeStyle, 0, EdgeColor)

hBrush = CreateSolidBrush(BkColor)

SelectObject .hdc, hPen

SelectObject .hdc, hBrush

Rectangle .hdc, itemRect.Left, itemRect.Top, itemRect.Right, itemRect.Bottom

DeleteObject hPen

DeleteObject hBrush

End Select





' 畫菜單項(xiàng)背景

InflateRect itemRect, -1, -1

Select Case FillStyle

Case ISFS_NONE ' 無背景



Case ISFS_HORIZONTALCOLOR ' 水平漸變色



BlueArea = Int(FillEndColor / &H10000) - Int(FillStartColor / &H10000)

GreenArea = (Int(FillEndColor / &H100) And &HFF) - (Int(FillStartColor / &H100) And &HFF)

RedArea = (FillEndColor And &HFF) - (FillStartColor And &HFF)



For i = itemRect.Left To itemRect.Right - 1

red = Int(FillStartColor And &HFF) + Int((i - itemRect.Left) / (itemRect.Right - itemRect.Left + 1) * RedArea)

green = (Int(FillStartColor / &H100) And &HFF) + Int((i - itemRect.Left) / (itemRect.Right - itemRect.Left + 1) * GreenArea)

blue = Int(FillStartColor / &H10000) + Int((i - itemRect.Left) / (itemRect.Right - itemRect.Left + 1) * BlueArea)

hPen = CreatePen(PS_SOLID, 1, RGB(red, green, blue))

Call SelectObject(.hdc, hPen)

Call MoveToEx(.hdc, i, itemRect.Top, 0)

Call LineTo(.hdc, i, itemRect.Bottom)

Call DeleteObject(hPen)

Next i



Case ISFS_VERTICALCOLOR ' 垂直漸變色



BlueArea = Int(FillEndColor / &H10000) - Int(FillStartColor / &H10000)

GreenArea = (Int(FillEndColor / &H100) And &HFF) - (Int(FillStartColor / &H100) And &HFF)

RedArea = (FillEndColor And &HFF) - (FillStartColor And &HFF)



For i = itemRect.Top To itemRect.Bottom - 1

red = Int(FillStartColor And &HFF) + Int((i - itemRect.Top) / (itemRect.Bottom - itemRect.Top + 1) * RedArea)

green = (Int(FillStartColor / &H100) And &HFF) + Int((i - itemRect.Top) / (itemRect.Bottom - itemRect.Top + 1) * GreenArea)

blue = Int(FillStartColor / &H10000) + Int((i - itemRect.Top) / (itemRect.Bottom - itemRect.Top + 1) * BlueArea)

hPen = CreatePen(PS_SOLID, 1, RGB(red, green, blue))

Call SelectObject(.hdc, hPen)

Call MoveToEx(.hdc, itemRect.Left, i, 0)

Call LineTo(.hdc, itemRect.Right, i)

Call DeleteObject(hPen)

Next i



Case ISFS_SOLIDCOLOR ' 實(shí)色填充



hPen = CreatePen(PS_SOLID, 0, FillStartColor)

hBrush = CreateSolidBrush(FillStartColor)

SelectObject .hdc, hPen

SelectObject .hdc, hBrush

Rectangle .hdc, itemRect.Left, itemRect.Top, itemRect.Right, itemRect.Bottom

DeleteObject hPen

DeleteObject hBrush



End Select





' 畫菜單項(xiàng)文字

SetTextColor .hdc, TextSelectColor

DrawText .hdc, MyItemInfo(.itemID).itemText, -1, textRect, DT_SINGLELINE Or DT_LEFT Or DT_VCENTER





' 畫菜單項(xiàng)圖標(biāo)

If MyItemInfo(.itemID).itemType <> MIT_CHECKBOX Then

DrawIconEx .hdc, iconRect.Left + 2, iconRect.Top + (iconRect.Bottom - iconRect.Top + 1 - 16) / 2, MyItemInfo(.itemID).itemIcon, 16, 16, 0, 0, DI_NORMAL

Select Case IconStyle

Case IIS_NONE ' 無效果



Case IIS_SUNKEN ' 凹進(jìn)

If MyItemInfo(.itemID).itemIcon <> 0 Then

DrawEdge .hdc, iconRect, BDR_SUNKENOUTER, BF_RECT

End If

Case IIS_RAISED ' 凸起

If MyItemInfo(.itemID).itemIcon <> 0 Then

DrawEdge .hdc, iconRect, BDR_RAISEDINNER, BF_RECT

End If

Case IIS_SHADOW ' 陰影

hBrush = CreateSolidBrush(RGB(128, 128, 128))

DrawState .hdc, hBrush, 0, MyItemInfo(.itemID).itemIcon, 0, iconRect.Left + 3, iconRect.Top + (iconRect.Bottom - iconRect.Top + 1 - 16) / 2 + 1, 0, 0, DST_ICON Or DSS_MONO

DeleteObject hBrush

DrawIconEx .hdc, iconRect.Left + 1, iconRect.Top + (iconRect.Bottom - iconRect.Top + 1 - 16) / 2 - 1, MyItemInfo(.itemID).itemIcon, 16, 16, 0, 0, DI_NORMAL

End Select

Else

' CHECKBOX型菜單項(xiàng)圖標(biāo)效果

If MyItemInfo(.itemID).itemState And MIS_CHECKED Then

DrawIconEx .hdc, iconRect.Left + 2, iconRect.Top + (iconRect.Bottom - iconRect.Top + 1 - 16) / 2, MyItemInfo(.itemID).itemIcon, 16, 16, 0, 0, DI_NORMAL

End If

End If



Else ' 當(dāng)鼠標(biāo)移開菜單項(xiàng)時(shí)



' 畫菜單項(xiàng)邊框和背景(清除)

If BarStyle <> LBS_NONE Then

itemRect.Left = barRect.Right + 1

Else

itemRect.Left = 0

End If

hBrush = CreateSolidBrush(BkColor)

FillRect .hdc, itemRect, hBrush

DeleteObject hBrush





' 畫菜單項(xiàng)文字

SetTextColor .hdc, TextEnabledColor

DrawText .hdc, MyItemInfo(.itemID).itemText, -1, textRect, DT_SINGLELINE Or DT_LEFT Or DT_VCENTER





' 畫菜單項(xiàng)圖標(biāo)

If MyItemInfo(.itemID).itemType <> MIT_CHECKBOX Then

DrawIconEx .hdc, iconRect.Left + 2, iconRect.Top + (iconRect.Bottom - iconRect.Top + 1 - 16) / 2, MyItemInfo(.itemID).itemIcon, 16, 16, 0, 0, DI_NORMAL

Else

If MyItemInfo(.itemID).itemState And MIS_CHECKED Then

DrawIconEx .hdc, iconRect.Left + 2, iconRect.Top + (iconRect.Bottom - iconRect.Top + 1 - 16) / 2, MyItemInfo(.itemID).itemIcon, 16, 16, 0, 0, DI_NORMAL

End If

End If



End If

Else ' 當(dāng)菜單項(xiàng)不可用時(shí)



' 畫菜單項(xiàng)文字

SetTextColor .hdc, TextDisabledColor

DrawText .hdc, MyItemInfo(.itemID).itemText, -1, textRect, DT_SINGLELINE Or DT_LEFT Or DT_VCENTER



' 畫菜單項(xiàng)圖標(biāo)

If MyItemInfo(.itemID).itemType <> MIT_CHECKBOX Then

DrawState .hdc, 0, 0, MyItemInfo(.itemID).itemIcon, 0, iconRect.Left + 2, iconRect.Top + (iconRect.Bottom - iconRect.Top + 1 - 16) / 2, 0, 0, DST_ICON Or DSS_DISABLED

Else

If MyItemInfo(.itemID).itemState And MIS_CHECKED Then

DrawState .hdc, 0, 0, MyItemInfo(.itemID).itemIcon, 0, iconRect.Left + 2, iconRect.Top + (iconRect.Bottom - iconRect.Top + 1 - 16) / 2, 0, 0, DST_ICON Or DSS_DISABLED

End If

End If



End If

End If



End With

End If

End Sub



' 菜單項(xiàng)事件響應(yīng)(單擊菜單項(xiàng))

Private Sub MenuItemSelected(ByVal itemID As Long)

Debug.Print "鼠標(biāo)單擊了:" & MyItemInfo(itemID).itemText

Select Case MyItemInfo(itemID).itemAlias

Case "exit"

Dim frm As Form

For Each frm In Forms

Unload frm

Next

End Select

End Sub



' 菜單項(xiàng)事件響應(yīng)(選擇菜單項(xiàng))

Private Sub MenuItemSelecting(ByVal itemID As Long)

Debug.Print "鼠標(biāo)移動(dòng)到:" & MyItemInfo(itemID).itemText

End Sub



OK,到此為止,我們就徹底完成了菜單類的編寫,而且還包括一個(gè)測試窗體,F(xiàn)在,完整的工程里應(yīng)該包括兩個(gè)窗體:frmMain和frmMenu;一個(gè)標(biāo)準(zhǔn)模塊:mMenu;一個(gè)類模塊:cMenu。按F5編譯運(yùn)行一下,在窗體空白處單擊鼠標(biāo)右鍵。怎么樣,出現(xiàn)彈出式菜單了嗎?換個(gè)風(fēng)格再試試。

在看完這個(gè)系列的文章后,我想你應(yīng)該已經(jīng)對采用物主繪圖技術(shù)的自繪菜單有一定的了解了,回過頭來再看看MS Office 2003的菜單,其實(shí)也沒什么難的嘛。以后,我們就可以在自己的任何程序中調(diào)用這個(gè)寫好的菜單類,為自己的程序添光加彩了。 :)

該程序在Windows XP、VB6下調(diào)試通過。

源代碼下載地址:http://y365.com/ses518/soft/samplecsdn.zip

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

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
sm性调教片在线观看| 亚洲伊人影院| 精品人妻无码一区二区性色| 精品一区二区三区在线观看| 日本在线播放一二三区| 亚洲天堂男人| 天天色影综合网| 欧美大片大片在线播放| 国产伦精品一区二区三区视频金莲| 亚洲视频小说图片| 992tv快乐视频| 韩国日本一区| 欧美国产在线看| 欧美人与禽zozzo禽性配| 真实国产乱子伦精品一区二区三区| 91福利资源站| 波多野结衣中文字幕一区| 精品国产人妻一区二区三区| 337p亚洲精品色噜噜| 在线激情av| 潘金莲一级淫片aaaaa| 高清不卡一区二区在线| 国产理论电影在线| 亚洲午夜影视影院在线观看| eeuss影院www免费视频| 日本午夜一区| 欧美激情论坛| 欧美猛烈性xbxbxbxb| 成人看片app| 久久一区二区三区超碰国产精品| 国产精品亚洲四区在线观看| 日本黄网站免费| 精品在线小视频| 激情综合一区二区三区| 久久久精品人妻无码专区| 动漫3d精品一区二区三区乱码| 久久人人爽亚洲精品天堂| 欧美日韩综合高清一区二区| 超碰97人人射妻| 一区二区三区免费视频网站| 国产亚洲a∨片在线观看| 蜜桃av一区二区三区电影| 久久人妻无码aⅴ毛片a片app| 亚洲一区激情| 中文字幕色婷婷在线视频| 精品国自产拍在线观看| 波多野结衣影片| 成人毛片视频网站| 粉嫩aⅴ一区二区三区四区| 国产精品一卡| 美女露隐私免费网站| 国产稀缺真实呦乱在线| 欧美大片1688网站| 午夜男人视频在线观看| 中文字幕在线播放视频| 成人91在线| 日韩一区免费观看| 一本色道久久综合狠狠躁篇怎么玩| 欧美日本一道本在线视频| 男人的天堂视频在线| 中文字幕v亚洲ⅴv天堂| 轻轻草在线视频| 女人被狂躁到高潮视频免费网站| 亚洲成av人片在线观看无码| 欧美黄色免费| 国产精品一品二品| 男人添女人荫蒂免费视频| 久久久久久青草| www.99av| 中文有码在线| 亚洲激情视频一区| 日韩欧美第二区在线观看| 91精品午夜视频| 涩爱av在线播放一区二区| 羞羞在线观看视频| 亚洲欧美日韩国产一区二区| av网站手机在线观看| 99国产超薄肉色丝袜交足的后果| 久久精品72免费观看| 你懂的视频一区二区| av一区二区三区黑人| 第一福利永久视频精品| 欧美大片免费高清观看| 日韩精品一二三区| 日韩a视频在线观看| 你懂的在线观看一区二区| 色婷婷成人综合| 久久精品视频91| 成人久久视频在线观看| 欧美亚洲高清一区二区三区不卡| 中文字幕乱码在线人视频| 豆国产97在线 | 亚洲| 日本人妻一区二区三区| 亚洲白拍色综合图区| 狠狠色狠狠色综合婷婷tag| 99国内精品久久久久久久| 亚洲少妇久久久| 爱情电影网av一区二区| 国产中文字幕一区二区三区| 91麻豆国产香蕉久久精品| 国产三级在线看| 狠狠色综合网站久久久久久久| 青青草原在线亚洲| 实拍女处破www免费看| 国产波霸爆乳一区二区| 最新中文字幕在线播放| 亚洲乱码一区| 亚洲经典在线| 99久久精品国产色欲| 国产日韩欧美精品在线观看| 久久精品久久久久久| 国产精品久久久久久亚洲伦| 欧美a在线视频| 国产精品免费一区二区三区在线观看| 成人免费毛片在线观看| 青青青视频在线播放| 理论片日本一区| 精品午夜一区二区三区| 亚洲成人五区| 欧美在线中文| jiujiure精品视频播放| 人妻激情偷乱视频一区二区三区| 内射无码专区久久亚洲| 在线成人视屏| 青春草在线观看视频| 色天使久久综合网天天| 成人网ww555视频免费看| 一区二区三区高清在线观看| 国模吧精品视频| 肉色超薄丝袜脚交69xx图片| 亚洲欧美一二三区| 人人干人人视频| 女同久久另类99精品国产| 日韩小视频在线观看专区| 国产成人禁片在线观看| 日夜干在线视频| 老司机精品视频在线观看6| 亚洲精品成人无限看| 国产精品.xx视频.xxtv| 隔壁人妻偷人bd中字| 欧美激情四色| 国产欧美日韩在线观看| 久久久久久久9| 成人免费在线网址| 国产精品一二三四五区| xxxxxx国产精品视频| 波多野结衣的一区二区三区| 国产秒拍福利视频露脸| www.国产精品一区| 亚洲精品一卡二卡| 大地资源中文在线观看免费版| 国产91视频在线| 日本视频www| 成人激情校园春色| **孕交吃奶水一级毛片| 中文日韩在线观看| 激情小说综合网| 欧美自拍偷拍一区| 亚洲欧美在线aaa| 亚洲国产精品热久久| 中文字幕巨乱亚洲| 成人午夜视频免费在线观看| 国产偷久久久精品专区| 日韩成人在线视频网站| 中文字幕在线播放第一页| 亚洲综合免费观看高清在线观看| 成人性生活视频免费看| 精品视频一区二区在线观看| 中文字幕亚洲图片| 在线看片第一页欧美| 国产原创视频在线| 毛片毛片毛片毛片毛片毛片| 一区二区三区视频在线观看| 久久久久久亚洲精品中文字幕| 一级片在线免费播放| 国产又爽又黄的视频| 人人干人人插| 亚洲日本一区二区三区在线观看| 国产在线观看不卡| 性少妇videosexfreexxx片| 蜜桃视频久久一区免费观看入口| 成人免费一区二区三区视频| 裸体一区二区| 999久久欧美人妻一区二区| 波多野结衣家庭教师在线| 欧美一级视频免费| 国产精品有限公司| 日本一区二区视频| 国产毛片久久久久久久| 欧美揉bbbbb揉bbbbb| 国产精品高潮呻吟久久| 成人高清在线| 免费影视观看网站入口| 亚洲欧洲一区二区福利| 久久精品视频18| 国产真实乱子伦精品视频| 92国产精品视频| 国产精品久久久久久久久久久新郎| 国产一级久久久久毛片精品| 亚洲第一天堂在线观看| 欧美精品免费视频| 免费一级黄色录像| 91极品美女在线| 久久久久久国产精品无码| 午夜免费福利视频| 女人天堂在线| 三级小视频在线观看| 狠狠躁夜夜躁人人爽视频| 国产精品乱码一区二区视频| 在线人成日本视频| 91porny在线| 久久午夜羞羞影院免费观看| 亚洲成人激情在线| 暖暖视频日本免费| 亚洲视频免费播放| 国产精品夜夜夜| 国产亚洲精品aa| 久操久操久操| 一区二区三区加勒比av| 精品久久av| 狠狠狠色丁香婷婷综合激情| 午夜免费播放观看在线视频| 亚洲小说春色综合另类电影| www.com亚洲| 免费观看又污又黄在线观看国产| 成人国产精品久久久网站| 亚洲精品久久久久久久久| 一级黄色片免费看| 日韩精品在线观看一区| 欧美精品二区三区| 日韩高清不卡一区二区| 风间由美久久久| 在线播放/欧美激情| 在线 亚洲欧美在线综合一区| 在线播放你懂得| 日本精品一区二区三区高清 久久| 中文字幕久久午夜不卡| 一区三区二区视频| 日韩成人毛片视频| 欧美日韩电影一区二区| www视频在线观看com| 日韩制服丝袜先锋影音| aa日韩免费精品视频一| 亚洲天堂av中文字幕| 97激碰免费视频| 国产又粗又黄视频| 欧美综合自拍| 麻豆av资源| 日本伊人色综合网| 成人亲热视频网站| 性xxxx奶大欧美高清| www.日本不卡| 美女100%无挡| 美日韩精品免费| 韩国三级大全久久网站| 欧美日韩一区中文字幕| shkd中文字幕久久在线观看| 国产男女无套免费网站| 成人在线观看网址| 中文字幕在线播放av| 亚洲免费观看高清完整版在线观| 精品成人免费自拍视频| 欧美日本免费| 色噜噜久久综合伊人一本| 亚洲图色中文字幕| 欧美videos巨大粗暴| 精彩视频一区二区三区| 大地资源第二页在线观看高清版| 日本在线视频观看| 成在线人视频免费视频| 日本亚洲欧美天堂免费| 国产不卡一区二区三区在线观看| av老司机免费在线| 日本黄色片免费观看| 久久综合九色欧美综合狠狠| 国产剧情av片巨作醉酒女邻居| 国产免费一区二区三区最新不卡| 日本午夜人人精品| 影音先锋中文字幕影院| 91精品国产自产精品男人的天堂| 九九热这里只有精品免费看| 成人黄色免费视频| 成人黄色片在线观看| 日韩人妻无码精品久久久不卡| 久久久久电影| 99久久久国产精品免费调教网站| 国产成人啪午夜精品网站男同| 国产一区二区三区精品久久久| 亚洲女人天堂在线| 国产麻豆日韩欧美久久| 国产一区二区电影| 国产素人视频在线观看| 国产精品一区二区欧美| 日韩有码在线视频| 伊人网站在线观看| 久久精品国产亚洲av久| 久久91亚洲| 欧美熟妇精品一区二区蜜桃视频| av网站导航在线观看免费| 亚洲激情在线观看视频免费| 51漫画成人app入口| 91大神网址| 日本十八禁视频无遮挡| 成年女人免费毛片视频永久| 麻豆传媒视频在线观看免费| 91资源在线观看| 首页国产欧美日韩丝袜| 国产精品视频一二三四区| 精品无码国产污污污免费网站| 欧美天天视频| 五月婷婷综合网| 7777精品伊人久久久大香线蕉超级流畅| 蜜臀视频在线观看| 欧美日韩99| 性欧美8khd高清极品| 日韩在线不卡| 国产羞羞视频在线观看| 性网站在线免费观看| 蜜桃一区二区三区四区| 欧美xxxx日本和非洲| 精品久久av| 资源视频在线播放免费| 91精品欧美久久久久久动漫| 91caoporn在线| 大桥未久av一区二区三区中文| 97超碰在线免费观看| 国产乱精品一区二区三区| 国产一区二区观看|