进入正题了,下面就该是类中的代码了,因为主要是利用API,所以声明很多,耐心点吧! '类模块中的代码:类名cToolbar Option Explicit Private Const CDDS_ITEM As Long = &H10000 Private Const CDDS_PREPAINT As Long = &H1 Private Const CDDS_ITEMPREPAINT As Long = (CDDS_ITEM Or CDDS_PREPAINT) Private Const CDRF_SKIPDEFAULT As Long = &H4 Private Const CDRF_NOTIFYITEMDRAW As Long = &H20 Private Const CDIS_CHECKED As Long = &H8 Private Const CDIS_DISABLED As Long = &H4 Private Const CDIS_HOT As Long = &H40 Private Const CDIS_SELECTED As Long = &H1 Private Const GWL_WNDPROC = (-4) Private Const WM_USER As Long = &H400 Private Const TB_GETBUTTONTEXTA As Long = (WM_USER + 45) Private Const TB_GETIMAGELIST As Long = (WM_USER + 49) Private Const TB_GETHOTIMAGELIST = (WM_USER + 53) Private Const TB_GETDISABLEDIMAGELIST = (WM_USER + 55) Private Const TB_GETBITMAP As Long = (WM_USER + 44) Private Const TB_COMMANDTOINDEX As Long = (WM_USER + 25) Private Const TB_GETBUTTON As Long = (WM_USER + 23) Private Const TBSTYLE_LIST As Long = &H1000 Private Const TBSTYLE_SEP As Long = &H1 Private Const TBSTYLE_DROPDOWN As Long = &H8 Private Const ILD_NORMAL As Long = &H0 Private Const DST_TEXT = &H1& Private Const DST_ICON As Long = &H3 Private Const DSS_DISABLED = &H20& Private Const CLR_NONE As Long = &HFFFFFFFF Private Const GWL_STYLE As Long = -16 Private Const PS_SOLID As Long = 0 Private Const TA_LEFT = 0 Private Const TA_RIGHT = 2 Private Const TA_CENTER = 6 Private Const BF_FLAT = &H4000 Private Const BF_BOTTOM = &H8 Private Const BF_LEFT = &H1 Private Const BF_RIGHT = &H4 Private Const BF_TOP = &H2 Private Const BF_RECT = (BF_LEFT Or BF_TOP Or BF_RIGHT Or BF_BOTTOM) Private Const BDR_RAISEDOUTER = &H1 Private Const BDR_RAISEDINNER = &H4 Private Const BDR_SUNKENINNER = &H8 Private Const BDR_SUNKENOUTER = &H2 Private Const BDR_OUTER = &H3 Private Const EDGE_ETCHED = (BDR_SUNKENOUTER Or BDR_RAISEDINNER) Private Const EDGE_RAISED = (BDR_RAISEDOUTER Or BDR_RAISEDINNER) Private Const EDGE_SUNKEN = (BDR_SUNKENOUTER Or BDR_SUNKENINNER) Private Type BITMAP bmType As Long bmWidth As Long bmHeight As Long bmWidthBytes As Long bmPlanes As Integer bmBitsPixel As Integer bmBits As Long End Type Private Type ICONINFO fIcon As Long xHotspot As Long yHotspot As Long hbmMask As Long hbmColor As Long End Type Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Private Type POINTL X As Long Y As Long End Type Private Type Size cx As Long cy As Long End Type Private 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 As String * 32 End Type Private Type TBBUTTON iBitmap As Long idCommand As Long fsState As Byte fsStyle As Byte bReserved(1) As Byte dwData As Long iString As Long End Type Private Type MemHdc hdc As Long Bmp As Long obm As Long End Type Private Type NMHDR hwndFrom As Long idfrom As Long code As Long End Type Private Type NMCUSTOMDRAW hdr As NMHDR dwDrawStage As Long hdc As Long rc As RECT dwItemSpec As Long uItemState As Long lItemlParam As Long End Type Private Type NMTBCUSTOMDRAW nmcd As NMCUSTOMDRAW hbrMonoDither As Long hbrLines As Long hpenLines As Long clrText As Long clrMark As Long clrTextHighlight As Long clrBtnFace As Long clrBtnHighlight As Long clrHighlightHotTrack As Long rcText As RECT nStringBkMode As Long nHLStringBkMode As Long End Type Private m_hWnd As Long Private m_lngBackColor As Long Private m_lngBrdStyle As Long Private m_lngTextColor As Long Private m_lngTextHiColor As Long Private m_strBkPicture As String Private m_lngBrdColor As Long Private mpicBk As StdPicture Private mlngImgList As Long Private mdcWhite As MemHdc Private mlngHotImgList As Long Private mlngDsbImgList As Long Private mlngBtnHiAlpha As Long Private mlngBtnDownAlpha As Long Private mlngIconWidth As Long Private mlngIconHeight As Long Private Font As LOGFONT '消息与管理类 Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Declare Function ShowWindow Lib "user32" Alias "ShowWindowAsync" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hWnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) 'GDI对象类 Private Declare Function CreateSolidBrush Lib "gdi32.dll" (ByVal crColor As Long) As Long Private Declare Function CreatePen Lib "gdi32.dll" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long Private Declare Function CreateFontIndirect Lib "gdi32" Alias "CreateFontIndirectA" (lpLogFont As LOGFONT) As Long Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long Private Declare Function DestroyIcon Lib "user32.dll" (ByVal hIcon As Long) As Long Private Declare Function DeleteObject Lib "gdi32.dll" (ByVal hObject As Long) As Long Private Declare Function GetIconInfo Lib "user32" (ByVal hIcon As Long, piconinfo As ICONINFO) As Long Private Declare Function GetObj Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long Private Declare Function CreatePatternBrush Lib "gdi32" (ByVal hBitmap As Long) As Long Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long Private Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long Private Declare Function ReleaseDC Lib "user32" (ByVal hWnd As Long, ByVal hdc As Long) As Long '区域、绘图、文本类 Private Declare Function GetClientRect Lib "user32.dll" (ByVal hWnd As Long, lpRect As RECT) As Long Private Declare Function SetRect Lib "user32.dll" (lpRect As RECT, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long Private Declare Function FillRect Lib "user32.dll" (ByVal hdc As Long, lpRect As RECT, ByVal hBrush As Long) As Long Private Declare Function Polygon Lib "gdi32" (ByVal hdc As Long, lpPoint As POINTL, ByVal nCount As Long) As Long Private Declare Function DrawEdge Lib "user32" (ByVal hdc As Long, qrc As RECT, ByVal edge As Long, ByVal grfFlags As Long) As Long Private Declare Function FrameRect Lib "user32" (ByVal hdc As Long, lpRect As RECT, ByVal hBrush As Long) As Long Private Declare Function MoveToEx Lib "gdi32.dll" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, lpPoint As Any) As Long Private Declare Function LineTo Lib "gdi32.dll" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long Private Declare Function GetTextExtentPoint32 Lib "gdi32" Alias "GetTextExtentPoint32A" (ByVal hdc As Long, ByVal lpsz As String, ByVal cbString As Long, lpSize As Size) As Long Private Declare Function SetTextAlign Lib "gdi32" (ByVal hdc As Long, ByVal wFlags As Long) As Long Private Declare Function SetBkMode Lib "gdi32" (ByVal hdc As Long, ByVal nBkMode As Long) As Long Private Declare Function SetTextColor Lib "gdi32.dll" (ByVal hdc As Long, ByVal crColor As Long) As Long Private 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 Private Declare Function DrawState Lib "user32.dll" Alias "DrawStateA" (ByVal hdc As Long, ByVal hBrush As Long, ByVal lpDrawStateProc As Long, ByVal hIco 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 Private Declare Function AlphaBlend Lib "msimg32.dll" (ByVal hdcDest As Long, ByVal nXOriginDest As Long, ByVal nYOriginDest As Long, ByVal nWidthDest As Long, ByVal hHeightDest As Long, ByVal hdcSrc As Long, ByVal nXOriginSrc As Long, ByVal nYOriginSrc As Long, ByVal nWidthSrc As Long, ByVal nHeightSrc As Long, ByVal blendFunction As Long) As Long Private Declare Function RedrawWindow Lib "user32" (ByVal hWnd As Long, lprcUpdate As RECT, ByVal hrgnUpdate As Long, ByVal fuRedraw As Long) As Long 'ImageList类 Private 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 Private Declare Function ImageList_GetBkColor Lib "comctl32.dll" (ByVal himl As Long) As Long Private Declare Function ImageList_SetBkColor Lib "comctl32.dll" (ByVal himl As Long, ByVal clrBk As Long) As Long Private Declare Function ImageList_GetIcon Lib "comctl32.dll" (ByVal himl As Long, ByVal i As Long, ByVal flags As Long) As Long 
|