Blame | Last modification | View Log
VERSION 1.0 CLASSBEGINMultiUse = -1 'TruePersistable = 0 'NotPersistableDataBindingBehavior = 0 'vbNoneDataSourceBehavior = 0 'vbNoneMTSTransactionMode = 0 'NotAnMTSObjectENDAttribute VB_Name = "CTooltip"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = TrueAttribute VB_PredeclaredId = FalseAttribute VB_Exposed = FalseOption ExplicitPrivate Declare Sub InitCommonControls Lib "comctl32.dll" ()''Windows API FunctionsPrivate Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As LongPrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPrivate Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPrivate Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long''Windows API ConstantsPrivate Const WM_USER = &H400Private Const CW_USEDEFAULT = &H80000000''Windows API TypesPrivate Type RECTLeft As LongTop As LongRight As LongBottom As LongEnd Type''Tooltip Window ConstantsPrivate Const TTS_NOPREFIX = &H2Private Const TTF_TRANSPARENT = &H100Private Const TTF_CENTERTIP = &H2Private Const TTM_ADDTOOLA = (WM_USER + 4)Private Const TTM_ACTIVATE = WM_USER + 1Private Const TTM_UPDATETIPTEXTA = (WM_USER + 12)Private Const TTM_SETMAXTIPWIDTH = (WM_USER + 24)Private Const TTM_SETTIPBKCOLOR = (WM_USER + 19)Private Const TTM_SETTIPTEXTCOLOR = (WM_USER + 20)Private Const TTM_SETTITLE = (WM_USER + 32)Private Const TTS_BALLOON = &H40Private Const TTS_ALWAYSTIP = &H1Private Const TTF_SUBCLASS = &H10Private Const TTF_IDISHWND = &H1Private Const TTM_SETDELAYTIME = (WM_USER + 3)Private Const TTDT_AUTOPOP = 2Private Const TTDT_INITIAL = 3Private Const TOOLTIPS_CLASSA = "tooltips_class32"''Tooltip Window TypesPrivate Type TOOLINFOlSize As LonglFlags As Longhwnd As LonglId As LonglpRect As RECThInstance As LonglpStr As StringlParam As LongEnd TypePublic Enum ttIconTypeTTNoIcon = 0TTIconInfo = 1TTIconWarning = 2TTIconError = 3End EnumPublic Enum ttStyleEnumTTStandardTTBalloonEnd Enum'local variable(s) to hold property value(s)Private mvarBackColor As LongPrivate mvarTitle As StringPrivate mvarForeColor As LongPrivate mvarIcon As ttIconTypePrivate mvarCentered As BooleanPrivate mvarStyle As ttStyleEnumPrivate mvarTipText As StringPrivate mvarVisibleTime As LongPrivate mvarDelayTime As Long'private dataPrivate m_lTTHwnd As Long ' hwnd of the tooltipPrivate m_lParentHwnd As Long ' hwnd of the window the tooltip attached toPrivate ti As TOOLINFOPublic Property Let Style(ByVal vData As ttStyleEnum)'used when assigning a value to the property, on the left side of an assignment.'Syntax: X.Style = 5mvarStyle = vDataEnd PropertyPublic Property Get Style() As ttStyleEnum'used when retrieving value of a property, on the right side of an assignment.'Syntax: Debug.Print X.StyleStyle = mvarStyleEnd PropertyPublic Property Let Centered(ByVal vData As Boolean)'used when assigning a value to the property, on the left side of an assignment.'Syntax: X.Centered = 5mvarCentered = vDataEnd PropertyPublic Property Get Centered() As Boolean'used when retrieving value of a property, on the right side of an assignment.'Syntax: Debug.Print X.CenteredCentered = mvarCenteredEnd PropertyPublic Function Create(ByVal ParentHwnd As Long) As BooleanDim lWinStyle As LongIf m_lTTHwnd <> 0 ThenDestroyWindow m_lTTHwndEnd Ifm_lParentHwnd = ParentHwndlWinStyle = TTS_ALWAYSTIP Or TTS_NOPREFIX''create baloon style if desiredIf mvarStyle = TTBalloon Then lWinStyle = lWinStyle Or TTS_BALLOONm_lTTHwnd = CreateWindowEx(0&, _TOOLTIPS_CLASSA, _vbNullString, _lWinStyle, _CW_USEDEFAULT, _CW_USEDEFAULT, _CW_USEDEFAULT, _CW_USEDEFAULT, _0&, _0&, _App.hInstance, _0&)''now set our tooltip info structureWith ti''if we want it centered, then set that flagIf mvarCentered Then.lFlags = TTF_SUBCLASS Or TTF_CENTERTIP Or TTF_IDISHWNDElse.lFlags = TTF_SUBCLASS Or TTF_IDISHWNDEnd If''set the hwnd prop to our parent control's hwnd.hwnd = m_lParentHwnd.lId = m_lParentHwnd '0.hInstance = App.hInstance'.lpstr = ALREADY SET'.lpRect = lpRect.lSize = Len(ti)End With''add the tooltip structureSendMessage m_lTTHwnd, TTM_ADDTOOLA, 0&, ti''if we want a title or we want an iconIf mvarTitle <> vbNullString Or mvarIcon <> TTNoIcon ThenSendMessage m_lTTHwnd, TTM_SETTITLE, CLng(mvarIcon), ByVal mvarTitleEnd IfIf mvarForeColor <> Empty ThenSendMessage m_lTTHwnd, TTM_SETTIPTEXTCOLOR, mvarForeColor, 0&End IfIf mvarBackColor <> Empty ThenSendMessage m_lTTHwnd, TTM_SETTIPBKCOLOR, mvarBackColor, 0&End IfSendMessageLong m_lTTHwnd, TTM_SETDELAYTIME, TTDT_AUTOPOP, mvarVisibleTimeSendMessageLong m_lTTHwnd, TTM_SETDELAYTIME, TTDT_INITIAL, mvarDelayTimeEnd FunctionPublic Property Let Icon(ByVal vData As ttIconType)mvarIcon = vDataIf m_lTTHwnd <> 0 And mvarTitle <> Empty And mvarIcon <> TTNoIcon ThenSendMessage m_lTTHwnd, TTM_SETTITLE, CLng(mvarIcon), ByVal mvarTitleEnd IfEnd PropertyPublic Property Get Icon() As ttIconTypeIcon = mvarIconEnd PropertyPublic Property Let ForeColor(ByVal vData As Long)mvarForeColor = vDataIf m_lTTHwnd <> 0 ThenSendMessage m_lTTHwnd, TTM_SETTIPTEXTCOLOR, mvarForeColor, 0&End IfEnd PropertyPublic Property Get ForeColor() As LongForeColor = mvarForeColorEnd PropertyPublic Property Let Title(ByVal vData As String)mvarTitle = vDataIf m_lTTHwnd <> 0 And mvarTitle <> Empty And mvarIcon <> TTNoIcon ThenSendMessage m_lTTHwnd, TTM_SETTITLE, CLng(mvarIcon), ByVal mvarTitleEnd IfEnd PropertyPublic Property Get Title() As StringTitle = ti.lpStrEnd PropertyPublic Property Let BackColor(ByVal vData As Long)mvarBackColor = vDataIf m_lTTHwnd <> 0 ThenSendMessage m_lTTHwnd, TTM_SETTIPBKCOLOR, mvarBackColor, 0&End IfEnd PropertyPublic Property Get BackColor() As LongBackColor = mvarBackColorEnd PropertyPublic Property Let TipText(ByVal vData As String)mvarTipText = vDatati.lpStr = vDataIf m_lTTHwnd <> 0 ThenSendMessage m_lTTHwnd, TTM_UPDATETIPTEXTA, 0&, tiEnd IfEnd PropertyPublic Property Get TipText() As StringTipText = mvarTipTextEnd PropertyPrivate Sub Class_Initialize()InitCommonControlsmvarDelayTime = 500mvarVisibleTime = 5000End SubPrivate Sub Class_Terminate()DestroyEnd SubPublic Sub Destroy()If m_lTTHwnd <> 0 ThenDestroyWindow m_lTTHwndEnd IfEnd SubPublic Property Get VisibleTime() As LongVisibleTime = mvarVisibleTimeEnd PropertyPublic Property Let VisibleTime(ByVal lData As Long)mvarVisibleTime = lDataEnd PropertyPublic Property Get DelayTime() As LongDelayTime = mvarDelayTimeEnd PropertyPublic Property Let DelayTime(ByVal lData As Long)mvarDelayTime = lDataEnd Property