home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 3_2004-2005.ISO / Data / Zips / FlowChart1722823212004.psc / AdvTip.bas < prev    next >
BASIC Source File  |  2003-11-29  |  6KB  |  177 lines

  1. Attribute VB_Name = "AdvTip"
  2. 'Modification of class module code
  3. 'Original code: PictureWindow Software
  4. Option Explicit
  5.  
  6.  
  7. Private Declare Sub InitCommonControls Lib "comctl32.dll" ()
  8.  
  9. ''Windows API Functions
  10. Private 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 Long
  11. Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  12. Private Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long
  13. Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
  14. Private Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
  15.  
  16. ''Windows API Constants
  17. Private Const WM_USER = &H400
  18. Private Const CW_USEDEFAULT = &H80000000
  19. Private Const SWP_NOSIZE = &H1
  20. Private Const SWP_NOACTIVATE = &H10
  21. Private Const SWP_NOMOVE = &H2
  22. Private Const HWND_TOPMOST = -1
  23.  
  24. ''Windows API Types
  25. Private Type RECT
  26.         Left As Long
  27.         Top As Long
  28.         Right As Long
  29.         Bottom As Long
  30. End Type
  31.  
  32. ''Tooltip Window Constants
  33. Private Const TTS_NOPREFIX = &H2
  34. Private Const TTF_TRANSPARENT = &H100
  35. Private Const TTF_CENTERTIP = &H2
  36. Private Const TTM_ADDTOOLA = (WM_USER + 4)
  37. Private Const TTM_ACTIVATE = WM_USER + 1
  38. Private Const TTM_UPDATETIPTEXTA = (WM_USER + 12)
  39. Private Const TTM_SETMAXTIPWIDTH = (WM_USER + 24)
  40. Private Const TTM_SETTIPBKCOLOR = (WM_USER + 19)
  41. Private Const TTM_SETTIPTEXTCOLOR = (WM_USER + 20)
  42. Private Const TTM_SETTITLE = (WM_USER + 32)
  43. Private Const TTS_BALLOON = &H40
  44. Private Const TTS_ALWAYSTIP = &H1
  45. Private Const TTF_SUBCLASS = &H10
  46. Private Const TOOLTIPS_CLASSA = "tooltips_class32"
  47.  
  48. ''Tooltip Window Types
  49. Private Type TOOLINFO
  50.     lSize As Long
  51.     lFlags As Long
  52.     lHwnd As Long
  53.     lId As Long
  54.     lpRect As RECT
  55.     hInstance As Long
  56.     lpStr As String
  57.     lParam As Long
  58. End Type
  59.  
  60. Public Enum ttIconType
  61.     TTNoIcon = 0
  62.     TTIconInfo = 1
  63.     TTIconWarning = 2
  64.     TTIconError = 3
  65. End Enum
  66.  
  67. Public Enum ttStyleEnum
  68.     TTStandard
  69.     TTBalloon
  70. End Enum
  71.  
  72. 'private data
  73.  
  74. Public Function CreateTip(ParentControl_hWnd&, Centered As Boolean, ForeColor&, BackColor&, mTitle$, TipText$, mIcon As ttIconType, Style As ttStyleEnum) As Long
  75. 'Returns the Tip Handle (store it in a long variable inorder to modify the tooltip later in your code
  76.     Dim lpRect As RECT
  77.     Dim lWinStyle As Long
  78.     Dim ti As TOOLINFO
  79.     Dim lHwnd As Long
  80.     'If lHwnd <> 0 Then
  81.     '    DestroyWindow lHwnd
  82.     'End If
  83.     
  84.     lWinStyle = TTS_ALWAYSTIP Or TTS_NOPREFIX
  85.     
  86.     ''create baloon style if desired
  87.     If Style = TTBalloon Then lWinStyle = lWinStyle Or TTS_BALLOON
  88.     
  89.     ''the parent control has to have been set first
  90.     If Not ParentControl_hWnd = 0 Then
  91.         lHwnd = CreateWindowEx(0&, TOOLTIPS_CLASSA, vbNullString, lWinStyle, _
  92.                     CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, _
  93.                     ParentControl_hWnd, 0&, App.hInstance, 0&)
  94.                     
  95.         ''make our tooltip window a topmost window
  96.         SetWindowPos lHwnd, HWND_TOPMOST, 0&, 0&, 0&, 0&, SWP_NOACTIVATE Or SWP_NOSIZE Or SWP_NOMOVE
  97.                     
  98.         ''get the rect of the parent control
  99.         GetClientRect ParentControl_hWnd, lpRect
  100.         
  101.         ''now set our tooltip info structure
  102.         With ti
  103.             ''if we want it centered, then set that flag
  104.             If Centered Then
  105.                 .lFlags = TTF_SUBCLASS Or TTF_CENTERTIP
  106.             Else
  107.                 .lFlags = TTF_SUBCLASS
  108.             End If
  109.             
  110.             ''set the hwnd prop to our parent control's hwnd
  111.             .lHwnd = ParentControl_hWnd
  112.             .lId = 0
  113.             .hInstance = App.hInstance
  114.             .lpRect = lpRect
  115.             .lpStr = TipText
  116.         End With
  117.         
  118.         ''add the tooltip structure
  119.         SendMessage lHwnd, TTM_ADDTOOLA, 0&, ti
  120.         
  121.         ''if we want a title or we want an icon
  122.         If mTitle <> vbNullString Or mIcon <> TTNoIcon Then
  123.             SendMessage lHwnd, TTM_SETTITLE, CLng(mIcon), ByVal mTitle
  124.         End If
  125.         
  126.         If ForeColor <> -1 Then
  127.             SendMessage lHwnd, TTM_SETTIPTEXTCOLOR, ForeColor, 0&
  128.         End If
  129.         
  130.         If BackColor <> -1 Then
  131.             SendMessage lHwnd, TTM_SETTIPBKCOLOR, BackColor, 0&
  132.         End If
  133.         
  134.     End If
  135.     CreateTip = lHwnd
  136. End Function
  137.  
  138. Sub TipIconTitle(TipHandle&, ByVal mIcon As ttIconType, Title$)
  139.     If TipHandle <> 0 And Title <> "" And mIcon <> TTNoIcon Then
  140.         SendMessage TipHandle, TTM_SETTITLE, CLng(mIcon), ByVal Title
  141.     End If
  142. End Sub
  143.  
  144. Sub TipForeColor(TipHandle&, ByVal ForeColor As Long)
  145.     If TipHandle <> 0 Then
  146.         SendMessage TipHandle, TTM_SETTIPTEXTCOLOR, ForeColor, 0&
  147.     End If
  148. End Sub
  149.  
  150. Sub TipBackColor(TipHandle&, ByVal BackColor As Long)
  151.     If TipHandle <> 0 Then
  152.         SendMessage TipHandle, TTM_SETTIPBKCOLOR, BackColor, 0&
  153.     End If
  154. End Sub
  155.  
  156. Sub TipText(ByVal mTipText As String, TipCentered As Boolean, ParentControl_hWnd&, TipHandle&)
  157.     Dim ti As TOOLINFO
  158.     Dim lpRect As RECT
  159.     GetClientRect ParentControl_hWnd, lpRect
  160.     With ti
  161.         ''if we want it centered, then set that flag
  162.         If TipCentered Then
  163.             .lFlags = TTF_SUBCLASS Or TTF_CENTERTIP
  164.         Else
  165.             .lFlags = TTF_SUBCLASS
  166.         End If
  167.         .lHwnd = ParentControl_hWnd
  168.         .lId = 0
  169.         .hInstance = App.hInstance
  170.         .lpRect = lpRect
  171.         .lpStr = mTipText
  172.     End With
  173.     If TipHandle& <> 0 Then
  174.         SendMessage TipHandle&, TTM_UPDATETIPTEXTA, 0&, ti
  175.     End If
  176. End Sub
  177.