📄 isbutton.ctl
字号:
''Tooltip Window Constants
Private Const TTS_NOPREFIX As Long = &H2
'Private Const TTF_TRANSPARENT As Long = &H100
Private Const TTF_CENTERTIP As Long = &H2
Private Const TTM_ADDTOOLA As Long = (WM_USER + 4)
Private Const TTM_DELTOOLA As Long = (WM_USER + 5)
'Private Const TTM_ACTIVATE As Long = WM_USER + 1
'Private Const TTM_UPDATETIPTEXTA As Long = (WM_USER + 12)
'Private Const TTM_SETMAXTIPWIDTH As Long = (WM_USER + 24)
Private Const TTM_SETTIPBKCOLOR As Long = (WM_USER + 19)
Private Const TTM_SETTIPTEXTCOLOR As Long = (WM_USER + 20)
Private Const TTM_SETTITLE As Long = (WM_USER + 32)
Private Const TTS_BALLOON As Long = &H40
Private Const TTS_ALWAYSTIP As Long = &H1
Private Const TTF_SUBCLASS As Long = &H10
Private Const TOOLTIPS_CLASSA As String = "tooltips_class32"
'==================================================================================================
'Subclasser declarations
Private Const ALL_MESSAGES As Long = -1 'All messages added or deleted
Private Const GMEM_FIXED As Long = 0 'Fixed memory GlobalAlloc flag
Private Const GWL_WNDPROC As Long = -4 'Get/SetWindow offset to the WndProc procedure address
Private Const PATCH_04 As Long = 88 'Table B (before) address patch offset
Private Const PATCH_05 As Long = 93 'Table B (before) entry count patch offset
Private Const PATCH_08 As Long = 132 'Table A (after) address patch offset
Private Const PATCH_09 As Long = 137 'Table A (after) entry count patch offset
'==================================================================================================
'*************************************************************
'
' Required Type Definitions
'
'*************************************************************
Private Type Point
X As Long
Y As Long
End Type
'Private Type SIZE
' cX As Long
' cY As Long
'End Type
Private Type RECT
Left As Long
Top As Long
Right As Long
bottom As Long
End Type
'Private Type RGB 'Required for color trnsform using RGB
' Red As Byte
' Green As Byte
' Blue As Byte
'End Type
Private Type tSubData 'Subclass data type
hWnd As Long 'Handle of the window being subclassed
nAddrSub As Long 'The address of our new WndProc (allocated memory).
nAddrOrig As Long 'The address of the pre-existing WndProc
nMsgCntA As Long 'Msg after table entry count
nMsgCntB As Long 'Msg before table entry count
aMsgTblA() As Long 'Msg after table array
aMsgTblB() As Long 'Msg Before table array
End Type
''Tooltip Window Types
Private Type TOOLINFO
lSize As Long
lFlags As Long
lHwnd As Long
lId As Long
lpRect As RECT
hInstance As Long
lpStr As String
lParam As Long
End Type
'Private Type OSVERSIONINFOEX 'OS Version
' dwOSVersionInfoSize As Long
' dwMajorVersion As Long
' dwMinorVersion As Long
' dwBuildNumber As Long
' dwPlatformId As Long
' szCSDVersion As String * 128
' wServicePackMajor As Integer
' wServicePackMinor As Integer
' wSuiteMask As Integer
' wProductType As Byte
' wReserved As Byte
'End Type
Enum isbStyle 'Styles
[isbNormal] = &H0
[isbSoft] = &H1
[isbFlat] = &H2
[isbJava] = &H3
[isbOfficeXP] = &H4
[isbWindowsXP] = &H5
[isbWindowsTheme] = &H6
[isbPlastik] = &H7
[isbGalaxy] = &H8
[isbKeramik] = &H9
[isbMacOSX] = &HA
End Enum
Enum isbButtonType
isbButton = &H0
isbCheckBox = &H1
End Enum
Enum isbAlign
[isbCenter] = &H0
[isbleft] = &H1
[isbRight] = &H2
[isbTop] = &H3
[isbbottom] = &H4
End Enum
Private Enum isState
statenormal = &H1
stateHot = &H2
statePressed = &H3
statedisabled = &H4
stateDefaulted = &H5
End Enum
'Private Type MSG 'Windows Message Structure
' hwnd As Long
' message As Long
' wParam As Long
' lParam As Long
' time As Long
' pt As POINT
'End Type
'
'Private Type tagTRACKMOUSEEVENT
' cbSize As Long
' dwFlags As Long
' hwndTrack As Long
' dwHoverTime As Long
'End Type
'
'Private Type TRIVERTEX 'For gradient Drawing
' x As Long
' Y As Long
' Red As Integer
' Green As Integer
' Blue As Integer
' Alpha As Integer
'End Type
'Private Type GRADIENT_RECT
' UpperLeft As Long
' LowerRight As Long
'End Type
'Private Type GRADIENT_TRIANGLE
' Vertex1 As Long
' Vertex2 As Long
' Vertex3 As Long
'End Type
'Private Type DRAWTEXTPARAMS 'Required for DrawText
' cbSize As Long
' iTabLength As Long
' iLeftMargin As Long
' iRightMargin As Long
' uiLengthDrawn As Long
'End Type
'Private Type BLENDFUNCTION 'Required for Alphablend API
' BlendOp As Byte
' BlendFlags As Byte
' SourceConstantAlpha As Byte
' AlphaFormat As Byte
'End Type
'Private Type RGBQUAD
' rgbBlue As Byte
' rgbGreen As Byte
' rgbRed As Byte
' rgbReserved As Byte
'End Type
'Private Type BITMAPINFOHEADER
' biSize As Long
' biWidth As Long
' biHeight As Long
' biPlanes As Integer
' biBitCount As Integer
' biCompression As Long
' biSizeImage As Long
' biXPelsPerMeter As Long
' biYPelsPerMeter As Long
' biClrUsed As Long
' biClrImportant As Long
'End Type
'Private Type BITMAPINFO
' bmiHeader As BITMAPINFOHEADER
' bmiColors As RGBQUAD
'End Type
'Private Type UxTheme 'Imported from a Cls File from VBAccelerator.com
' sClass As String 'And edited to keep the control in a single file.
' Part As Long 'I didn't used all the constant definitions where used
' State As Long 'in the original file, cuz I don't need them all
' hdc As Long 'But I added some others I need, like text offset
' hwnd As Long 'properties and UseTheme, to Detect If the draw was
' Left As Long 'succesfull or not, and then use classic windows Style
' Top As Long 'Drawing.
' Width As Long 'All the credits about the usage of UxTheme.dll defined on
' Height As Long 'cUxTheme.cls go for Steve at www.vbaccelerator.com
' Text As String
' TextAlign As Long 'DrawTextFlags
' IconIndex As Long
' hIml As Long
' RaiseError As Boolean
' UseThemeSize As Boolean
' UseTheme As Boolean
' TextOffset As Long
' RightTextOffset 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 BITMAP
bmType As Long 'LONG // Specifies the bitmap type. This member must be zero.
bmWidth As Long 'LONG // Specifies the width, in pixels, of the bitmap. The width must be greater than zero.
bmHeight As Long 'LONG // Specifies the height, in pixels, of the bitmap. The height must be greater than zero.
bmWidthBytes As Long 'LONG // Specifies the number of bytes in each scan line. This value must be divisible by 2, because Windows assumes that the bit values of a bitmap form an array that is word aligned.
bmPlanes As Integer 'WORD // Specifies the count of color planes.
bmBitsPixel As Integer 'WORD // Specifies the number of bits required to indicate the color of a pixel.
bmBits As Long 'LPVOID // Points to the location of the bit values for the bitmap. The bmBits member must be a long pointer to an array of character (1-byte) values.
End Type
'*************************************************************
'
' Required Enums
'
'*************************************************************
'Private Enum DrawTextAdditionalFlags
' DTT_GRAYED = &H1 '// draw a grayed-out string
'End Enum
'Private Enum THEMESIZE
' TS_MIN '// minimum size
' TS_TRUE '// size without stretching
' TS_DRAW '// size that theme mgr will use to draw part
'End Enum
Private Enum eMsgWhen
MSG_AFTER = 1 'Message calls back after the original (previous) WndProc
MSG_BEFORE = 2 'Message calls back before the original (previous) WndProc
MSG_BEFORE_AND_AFTER = MSG_AFTER Or MSG_BEFORE 'Message calls back before and after the original (previous) WndProc
End Enum
Private Enum TRACKMOUSEEVENT_FLAGS
TME_HOVER = &H1&
TME_LEAVE = &H2&
TME_QUERY = &H40000000
TME_CANCEL = &H80000000
End Enum
Private Type TRACKMOUSEEVENT_STRUCT
cbSize As Long
dwFlags As Long 'TRACKMOUSEEVENT_FLAGS
hwndTrack As Long
dwHoverTime As Long
End Type
Public Enum ttIconType
TTNoIcon = 0
TTIconInfo = 1
TTIconWarning = 2
TTIconError = 3
End Enum
Public Enum ttStyleEnum
TTStandard
TTBalloon
End Enum
'Private Enum GRADIENT_FILL_RECT
' FillHor = GRADIENT_FILL_RECT_H
' FillVer = GRADIENT_FILL_RECT_V
'End Enum
'Private Enum GRADIENT_TO_CORNER
' All
' TopLeft
' TopRight
' BottomLeft
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -