网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月09日漏签0天
vb吧 关注:156,129贴子:1,166,130
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 1 2 3 下一页 尾页
  • 31回复贴,共3页
  • ,跳到 页  
<<返回vb吧
>0< 加载中...

自绘制控件集合

  • 取消只看楼主
  • 收藏

  • 回复
  • Ultraman_King
  • 递归爆栈
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
大家都知道windows控件有一个自绘制的特性,公布一下这种代码.
注意尽量用子类化的方法,不要用其他控件模拟.


  • Ultraman_King
  • 递归爆栈
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
菜单自绘制,添加窗体:Form2、FormMain
添加模块:MdAPI、SystemHook


2025-06-09 01:57:27
广告
  • Ultraman_King
  • 递归爆栈
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
在FormMain中添加ImageList1,加入六幅图标,添加菜单:
&File (name=mnufile)
....&New Ctrl+N (name=mnufilenew)
....&Open Ctrl+O (name=mnufileopen)
....Save &As Ctrl+S (name=mnufilesave)
....- (name=mnufilebar1)
....E&xit (name=mnufileexit)
&Edit (name=mnuedit)
....C&ut Ctrl+X (name=mnueditcut)
....&Copy Ctrl+C (name=mnueditcopy)
....&Paste Ctrl+V (name=mnueditpaste)
Test (name=mto)
....Test1 (name=mt,Index=1)
........def (name=mt4)
............asd (name=ss)
............asfdge (name=gg)
........abc (name=mt2)
........ddd (name=ff)
....RadioCheck Ctrl+T (name=mt,Index=4)
....Test3 (name=mt,Index=5)
........asf (name=fhjgh)
........dsf (name=dgdfh)
............dsf2 (name=fghghj)
....CheckMark (name=mt,Index=6)


  • Ultraman_King
  • 递归爆栈
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
'FormMain代码
Option Explicit

Private Sub Form_Load()
 'Set Window Hook==============
 PrevWndProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)
 Call SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf WindowProc)
 '=============================
 Me.Show
 ReDim OwnerMenus(0)
 Dim Hm As Long, hm2 As Long, st As String * 500, c As Long, i As Long
 Dim ItemInfo As MENUITEMINFO
 ItemInfo.cbSize = LenB(ItemInfo)
 ItemInfo.fMask = MIIM_FTYPE Or MIIM_ID
 Hm = GetMenu(hwnd)
 c = GetMenuItemCount(Hm)
 For i = 0 To c - 1
 GetMenuString Hm, i, st, 500, MF_BYPOSITION
 hm2 = GetSubMenu(Hm, i)
 Call GetMenuItemInfo(Hm, i, 1, ItemInfo)
 Call SetMenuItemInfo(Hm, i, 1, ItemInfo)
 If hm2 <> 0 Then Call EnumMenu(hm2)
 Next i
 OwnerMenus(5).MenuHotKey = "Alt+F4"
 OwnerMenus(1).IconIndex = 1
 OwnerMenus(2).IconIndex = 2
 OwnerMenus(3).IconIndex = 3
 OwnerMenus(6).IconIndex = 4
 OwnerMenus(7).IconIndex = 5
 OwnerMenus(8).IconIndex = 6
 For i = 1 To UBound(OwnerMenus)
 OwnerMenus(i).hImageList = Me.ImageList1.hImageList
 'OwnerMenus(i).hHotIcon = -1
 Next i
 Call DrawMenuBar(Me.hwnd)
End Sub

Private Sub EnumMenu(Hm As Long)
 Dim c As Long, i As Long, hm2 As Long, st As String * 500
 Dim ItemInfo As MENUITEMINFO
 ItemInfo.cbSize = LenB(ItemInfo)
 ItemInfo.fMask = MIIM_FTYPE Or MIIM_ID
 c = GetMenuItemCount(Hm)
 For i = 0 To c - 1
 GetMenuString Hm, i, st, 500, MF_BYPOSITION
 Call GetMenuItemInfo(Hm, i, 1, ItemInfo)
 Call AddMenu(ItemInfo, False, Left$(st, InStr(st, Chr$(0)) - 1), Me.hwnd)
 Call SetMenuItemInfo(Hm, i, 1, ItemInfo)
 hm2 = GetSubMenu(Hm, i)
 If hm2 <> 0 Then Call EnumMenu(hm2)
 Next i
End Sub

Public Function GetTopMenuID(Hm As Long, Index As Long) As Long
 Dim ID As Long, hm2 As Long
 ID = GetMenuItemID(Hm, Index)
 If ID = -1 Then hm2 = GetSubMenu(Hm, Index)
 If ID = -1 Then GetTopMenuID = GetTopMenuID(hm2, 0) - 1 Else GetTopMenuID = ID
End Function

Private Sub Form_Unload(Cancel As Integer)
 Call SetWindowLong(Me.hwnd, GWL_WNDPROC, PrevWndProc)
End Sub

Private Sub mnuFileExit_Click()
 Unload Me
End Sub

Private Sub mnuFileNew_Click()
 Form2.Show
End Sub

Private Sub mt_Click(Index As Integer)
 If Index = 4 Then
 OwnerMenus(15).RadioChecked = Not (OwnerMenus(15).RadioChecked)
 End If
End Sub


  • Ultraman_King
  • 递归爆栈
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
'MdAPI
Option Explicit

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 Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Public Declare Function CopyRect Lib "user32" (lpDestRect As RECT, lpSourceRect As RECT) As Long
Public Declare Function CreateFontIndirect Lib "gdi32" Alias "CreateFontIndirectA" (lpLogFont As LOGFONT) 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 CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long
Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject 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 DrawMenuBar Lib "user32" (ByVal hwnd 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 Ellipse 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 FillRect Lib "user32" (ByVal hdc As Long, lpRect As RECT, ByVal hBrush As Long) As Long
Public Declare Function GetBkMode Lib "gdi32" (ByVal hdc As Long) As Long
Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function GetTextExtentPoint32 Lib "gdi32" Alias "GetTextExtentPoint32A" (ByVal hdc As Long, ByVal lpsz As String, ByVal cbString As Long, lpSize As Size) As Long
Public Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Public Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long


  • Ultraman_King
  • 递归爆栈
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
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 GetMenuString Lib "user32" Alias "GetMenuStringA" (ByVal hMenu As Long, ByVal wIDItem As Long, ByVal lpString As String, ByVal nMaxCount As Long, ByVal wFlag As Long) 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 GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function ImageList_Draw Lib "comctl32.dll" (ByVal himl As Long, ByVal i As Long, ByVal hdcDst As Long, ByVal X As Long, ByVal Y As Long, ByVal fStyle As Long) As Long
Public Declare Function ImageList_GetIcon Lib "comctl32.dll" (ByVal himl As Long, ByVal i As Long, ByVal diIgnore As Long) As Long
Public Declare Function LstrLen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long
Public 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
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 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 SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long) As Long
Public Declare Function SetRect Lib "user32" (lpRect As RECT, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) 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 Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef lpvParam As Any, ByVal fuWinIni As Long) As Long
Public Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
Public Declare Sub ZeroMemory Lib "kernel32" Alias "RtlZeroMemory" (dest As Any, ByVal numBytes As Long)


  • Ultraman_King
  • 递归爆栈
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Public Const BDR_RAISEDINNER = &H4
Public Const BDR_SUNKENOUTER = &H2
Public Const BF_TOP = &H2
Public Const CLR_NONE = -1
Public Const COLOR_BTNFACE = 15
Public Const COLOR_BTNHIGHLIGHT = 20
Public Const COLOR_GRAYTEXT = 17
Public Const COLOR_HIGHLIGHT = 13
Public Const COLOR_HIGHLIGHTTEXT = 14
Public Const COLOR_MENU = 4
Public Const COLOR_MENUTEXT = 7
Public Const COLOR_WINDOW = 5
Public Const DI_MASK = &H1
Public Const DI_IMAGE = &H2
Public Const DI_NORMAL = &H3
Public Const DI_COMPAT = &H4
Public Const DI_DEFAULTSIZE = &H8
Public Const DT_LEFT = &H0
Public Const DT_RIGHT = &H2
Public Const DT_SINGLELINE = &H20
Public Const DT_VCENTER = &H4
Public Const DSS_NORMAL = &H0
Public Const DSS_UNION = &H10
Public Const DSS_DISABLED = &H20
Public Const DSS_MONO = &H80
Public Const DSS_RIGHT = &H8000
Public Const DST_COMPLEX = &H0
Public Const DST_TEXT = &H1
Public Const DST_PREFIXTEXT = &H2
Public Const DST_ICON = &H3
Public Const DST_BITMAP = &H4
Public Const EDGE_ETCHED = (BDR_SUNKENOUTER Or BDR_RAISEDINNER)
Public Const ILD_NORMAL = 0
Public Const ILD_TRANSPARENT = 1
Public Const ILD_BLEND25 = 2
Public Const ILD_SELECTED = 4
Public Const ILD_FOCUS = 4
Public Const ILD_OVERLAYMASK = 3840
Public Const LF_FACESIZE = 32
Public Const MF_BYPOSITION = &H400&
Public Const MF_OWNERDRAW = &H100&
Public Const MF_SEPARATOR = &H800&
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
Public Const GWL_WNDPROC = (-4)
Public Const ODS_CHECKED = &H8
Public Const ODS_GRAYED = &H2
Public Const ODS_SELECTED = &H1
Public Const PS_SOLID = 0
Public Const SM_CYMENU = 15
Public Const SPI_GETNONCLIENTMETRICS = 41
Public Const TRANSPARENT = 1
Public Const WM_DRAWITEM = &H2B
Public Const WM_MEASUREITEM = &H2C
Public Const WM_NCRBUTTONDOWN = &HA4


  • Ultraman_King
  • 递归爆栈
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
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 LOGFONT
 lfHeight As Long
 lfWidth As Long
 lfEscapement As Long
 lfOrientation As Long
 lfWeight As Long
 lfItalic As Byte
 lfUnderline As Byte
 lfStrikeOut As Byte
 lfCharSet As Byte
 lfOutPrecision As Byte
 lfClipPrecision As Byte
 lfQuality As Byte
 lfPitchAndFamily As Byte
 lfFaceName(1 To LF_FACESIZE) As Byte
End Type


2025-06-09 01:51:27
广告
  • Ultraman_King
  • 递归爆栈
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Public Type NONCLIENTMETRICS
 cbSize As Long
 iBorderWidth As Long
 iScrollWidth As Long
 iScrollHeight As Long
 iCaptionWidth As Long
 iCaptionHeight As Long
 lfCaptionFont As LOGFONT
 iSMCaptionWidth As Long
 iSMCaptionHeight As Long
 lfSMCaptionFont As LOGFONT
 iMenuWidth As Long
 iMenuHeight As Long
 lfMenuFont As LOGFONT
 lfStatusFont As LOGFONT
 lfMessageFont As LOGFONT
End Type

Public Type Size
 cX As Long
 cY As Long
End Type

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


  • Ultraman_King
  • 递归爆栈
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
'SystemHook
Option Explicit

Public Const MENUICONSIZE = 16
Public Const MENUCHECKMARKSIZE = 7

Public Type MenuInformation
 Parent As Long
 IconIndex As Long
 hHotIcon As Long
 hImageList As Long
 hDisableIcon As Long
 TopMenu As Boolean
 Separator As Boolean
 RadioChecked As Boolean
 MenuCaption As String
 MenuHotKey As String
End Type

Public MenuLink As New Collection
Public OwnerMenus() As MenuInformation
Public PrevWndProc As Long

Public Function WindowProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
 Select Case Msg
 Case WM_MEASUREITEM:
 Dim MeasureItem As MEASUREITEMSTRUCT
 Call CopyMemory(MeasureItem, ByVal lParam, Len(MeasureItem))
 Call OnMeasureItem(MeasureItem, hwnd)
 Call CopyMemory(ByVal lParam, MeasureItem, Len(MeasureItem))
 WindowProc = True
 Exit Function
 Case WM_DRAWITEM:
 Dim DrawItem As DRAWITEMSTRUCT
 Call CopyMemory(DrawItem, ByVal lParam, Len(DrawItem))
 Call OnDrawItem(DrawItem)
 WindowProc = True
 Exit Function
 End Select
 WindowProc = CallWindowProc(PrevWndProc, hwnd, Msg, wParam, lParam)
End Function


  • Ultraman_King
  • 递归爆栈
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Public Sub OnMeasureItem(ByRef MeasureItem As MEASUREITEMSTRUCT, AfxGetMainWnd As Long)
 If OwnerMenus(MenuLink.Item(CStr(MeasureItem.itemID))).Separator = True Then
 MeasureItem.itemWidth = 0
 MeasureItem.itemHeight = GetSystemMetrics(SM_CYMENU) \ 2
 Else
 Dim m_fontMenu As Long
 Dim m_Lf As LOGFONT
 Call ZeroMemory(m_Lf, Len(m_Lf))
 Dim Nm As NONCLIENTMETRICS
 Nm.cbSize = Len(Nm)
 Call SystemParametersInfo(SPI_GETNONCLIENTMETRICS, Nm.cbSize, Nm, 0)
 m_Lf = Nm.lfMenuFont
 m_fontMenu = CreateFontIndirect(m_Lf)
 Dim pWnd As Long
 pWnd = OwnerMenus(MenuLink.Item(CStr(MeasureItem.itemID))).Parent


  • Ultraman_King
  • 递归爆栈
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Dim pDC As Long
 pDC = GetDC(pWnd)
 Dim pFont As Long
 Call SelectObject(pDC, m_fontMenu)
 Dim lpstrText As String
 lpstrText = IIf(OwnerMenus(MenuLink.Item(CStr(MeasureItem.itemID))).MenuHotKey = "", OwnerMenus(MenuLink.Item(CStr(MeasureItem.itemID))).MenuCaption, OwnerMenus(MenuLink.Item(CStr(MeasureItem.itemID))).MenuCaption & " " & OwnerMenus(MenuLink.Item(CStr(MeasureItem.itemID))).MenuHotKey)
 Dim m_Size As Size, Temp As Long
 Temp = GetSystemMetrics(SM_CYMENU)
 Call GetTextExtentPoint32(pDC, lpstrText, LstrLen(lpstrText), m_Size)
 If OwnerMenus(MenuLink.Item(CStr(MeasureItem.itemID))).TopMenu = True Then
 MeasureItem.itemWidth = m_Size.cX
 MeasureItem.itemHeight = IIf(Temp > MENUICONSIZE + 4, Temp, MENUICONSIZE + 4)
 Else
 MeasureItem.itemWidth = m_Size.cX + MENUICONSIZE + 24
 MeasureItem.itemHeight = IIf(Temp > MENUICONSIZE + 4, Temp, MENUICONSIZE + 4)
 End If
 Call DeleteObject(m_fontMenu)
 Call ReleaseDC(pWnd, pDC)
 End If
End Sub


  • Ultraman_King
  • 递归爆栈
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Public Sub OnDrawItem(DrawItem As DRAWITEMSTRUCT)
 Dim pDC As Long, BBrush As Long
 pDC = DrawItem.hdc
 Dim m_Rect As RECT
 If OwnerMenus(MenuLink.Item(CStr(DrawItem.itemID))).Separator = True Then
 Call CopyRect(m_Rect, DrawItem.rcItem)
 m_Rect.Top = m_Rect.Top - (m_Rect.Top - m_Rect.Bottom) \ 2
 Call DrawEdge(pDC, m_Rect, EDGE_ETCHED, BF_TOP)
 Else
 Dim StrRect As RECT, SelectRect As RECT, Offset As RECT
 Dim LeftStr As String, RightStr As String, Middle As Long, RadioCheck As Boolean
 RadioCheck = OwnerMenus(MenuLink.Item(CStr(DrawItem.itemID))).RadioChecked
 SelectRect = DrawItem.rcItem: StrRect = DrawItem.rcItem
 StrRect.Left = StrRect.Left + 16 + 8
 StrRect.Right = StrRect.Right - 16
 LeftStr = OwnerMenus(MenuLink.Item(CStr(DrawItem.itemID))).MenuCaption
 RightStr = OwnerMenus(MenuLink.Item(CStr(DrawItem.itemID))).MenuHotKey
 If DrawItem.itemState And ODS_SELECTED Then
 BBrush = CreateSolidBrush(GetSysColor(COLOR_HIGHLIGHT))
 Call FillRect(pDC, SelectRect, BBrush)
 Call SetBkMode(pDC, TRANSPARENT)
 If OwnerMenus(MenuLink.Item(CStr(DrawItem.itemID))).IconIndex <> 0 Then
 Call DrawMenuIcon(pDC, DrawItem, OwnerMenus(MenuLink.Item(CStr(DrawItem.itemID))))
 End If
 If DrawItem.itemState And ODS_GRAYED Then
 Call SetTextColor(pDC, GetSysColor(COLOR_GRAYTEXT))
 Call DrawText(pDC, LeftStr, Len(LeftStr), StrRect, DT_LEFT Or DT_VCENTER Or DT_SINGLELINE)
 Call DrawText(pDC, RightStr, Len(RightStr), StrRect, DT_RIGHT Or DT_VCENTER Or DT_SINGLELINE)
 Else
 Call SetTextColor(pDC, GetSysColor(COLOR_HIGHLIGHTTEXT))
 Call DrawText(pDC, LeftStr, Len(LeftStr), StrRect, DT_LEFT Or DT_VCENTER Or DT_SINGLELINE)
 Call DrawText(pDC, RightStr, Len(RightStr), StrRect, DT_RIGHT Or DT_VCENTER Or DT_SINGLELINE)
 End If


  • Ultraman_King
  • 递归爆栈
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Middle = (MENUICONSIZE - MENUCHECKMARKSIZE) \ 2
 If DrawItem.itemState And ODS_CHECKED Then
 If DrawItem.itemState And ODS_GRAYED Then
 Call DrawCheckMark(pDC, DrawItem.rcItem.Left + Middle, DrawItem.rcItem.Top + 1.5 * Middle, GetSysColor(COLOR_GRAYTEXT))
 Else
 Call DrawCheckMark(pDC, DrawItem.rcItem.Left + Middle, DrawItem.rcItem.Top + 1.5 * Middle, GetSysColor(COLOR_HIGHLIGHTTEXT))
 End If
 Else
 If RadioCheck = True Then
 If DrawItem.itemState And ODS_GRAYED Then
 Call DrawRadioDot(pDC, DrawItem.rcItem.Left + Middle, DrawItem.rcItem.Top + 1.5 * Middle, GetSysColor(COLOR_GRAYTEXT))
 Else
 Call DrawRadioDot(pDC, DrawItem.rcItem.Left + Middle, DrawItem.rcItem.Top + 1.5 * Middle, GetSysColor(COLOR_HIGHLIGHTTEXT))
 End If
 End If
 End If
 Else
 BBrush = CreateSolidBrush(GetSysColor(COLOR_MENU))
 'BBrush = CreateSolidBrush(GetSysColor(COLOR_BTNFACE))
 Call FillRect(pDC, SelectRect, BBrush)
 Call SetBkMode(pDC, TRANSPARENT)
 If OwnerMenus(MenuLink.Item(CStr(DrawItem.itemID))).IconIndex <> 0 Then
 Call DrawMenuIcon(pDC, DrawItem, OwnerMenus(MenuLink.Item(CStr(DrawItem.itemID))))
 End If


2025-06-09 01:45:27
广告
  • Ultraman_King
  • 递归爆栈
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
If DrawItem.itemState And ODS_GRAYED Then
 Offset = StrRect
 Offset.Left = Offset.Left + 1: Offset.Right = Offset.Right + 1
 Offset.Top = Offset.Top + 1: Offset.Bottom = Offset.Bottom + 1
 Call SetTextColor(pDC, GetSysColor(COLOR_BTNHIGHLIGHT))
 Call DrawText(pDC, LeftStr, Len(LeftStr), Offset, DT_LEFT Or DT_VCENTER Or DT_SINGLELINE)
 Call DrawText(pDC, RightStr, Len(RightStr), Offset, DT_RIGHT Or DT_VCENTER Or DT_SINGLELINE)
 Call SetTextColor(pDC, GetSysColor(COLOR_GRAYTEXT))
 Call DrawText(pDC, LeftStr, Len(LeftStr), StrRect, DT_LEFT Or DT_VCENTER Or DT_SINGLELINE)
 Call DrawText(pDC, RightStr, Len(RightStr), StrRect, DT_RIGHT Or DT_VCENTER Or DT_SINGLELINE)
 Else
 Call SetTextColor(pDC, GetSysColor(COLOR_MENUTEXT))
 Call DrawText(pDC, LeftStr, Len(LeftStr), StrRect, DT_LEFT Or DT_VCENTER Or DT_SINGLELINE)
 Call DrawText(pDC, RightStr, Len(RightStr), StrRect, DT_RIGHT Or DT_VCENTER Or DT_SINGLELINE)
 End If
 Middle = (MENUICONSIZE - MENUCHECKMARKSIZE) \ 2
 If DrawItem.itemState And ODS_CHECKED Then
 If DrawItem.itemState And ODS_GRAYED Then
 Call DrawCheckMark(pDC, DrawItem.rcItem.Left + Middle + 1, DrawItem.rcItem.Top + 1.5 * Middle + 1, GetSysColor(COLOR_BTNHIGHLIGHT))
 Call DrawCheckMark(pDC, DrawItem.rcItem.Left + Middle, DrawItem.rcItem.Top + 1.5 * Middle, GetSysColor(COLOR_GRAYTEXT))
 Else
 Call DrawCheckMark(pDC, DrawItem.rcItem.Left + Middle, DrawItem.rcItem.Top + 1.5 * Middle, GetSysColor(COLOR_MENUTEXT))
 End If
 Else
 If RadioCheck = True Then
 If DrawItem.itemState And ODS_GRAYED Then
 Call DrawRadioDot(pDC, DrawItem.rcItem.Left + Middle + 1, DrawItem.rcItem.Top + 1.5 * Middle + 1, GetSysColor(COLOR_BTNHIGHLIGHT))
 Call DrawRadioDot(pDC, DrawItem.rcItem.Left + Middle, DrawItem.rcItem.Top + 1.5 * Middle, GetSysColor(COLOR_GRAYTEXT))
 Else
 Call DrawRadioDot(pDC, DrawItem.rcItem.Left + Middle, DrawItem.rcItem.Top + 1.5 * Middle, GetSysColor(COLOR_MENUTEXT))
 End If
 End If
 End If
 End If
 End If
End Sub


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 3 下一页 尾页
  • 31回复贴,共3页
  • ,跳到 页  
<<返回vb吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示