home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 4_2005-2006.ISO / data / Zips / DM_Start_P200378712006.psc / ctrl / Tray.ctl < prev    next >
Text File  |  2003-11-18  |  5KB  |  177 lines

  1. VERSION 5.00
  2. Begin VB.UserControl Tray 
  3.    Appearance      =   0  'Flat
  4.    BackColor       =   &H80000002&
  5.    CanGetFocus     =   0   'False
  6.    ClientHeight    =   330
  7.    ClientLeft      =   0
  8.    ClientTop       =   0
  9.    ClientWidth     =   330
  10.    ClipControls    =   0   'False
  11.    InvisibleAtRuntime=   -1  'True
  12.    ScaleHeight     =   330
  13.    ScaleWidth      =   330
  14. End
  15. Attribute VB_Name = "Tray"
  16. Attribute VB_GlobalNameSpace = False
  17. Attribute VB_Creatable = True
  18. Attribute VB_PredeclaredId = False
  19. Attribute VB_Exposed = False
  20. Option Explicit
  21.  
  22. Private Type NOTIFYICONDATA
  23.     cbSize As Long
  24.     hwnd As Long
  25.     UID As Long
  26.     uFlags As Long
  27.     uCallBackmessage As Long
  28.     hIcon As Long
  29.     szTip As String * 64
  30. End Type
  31.  
  32. Private Const NIM_ADD = &H0
  33. Private Const NIM_MODIFY = &H1
  34. Private Const NIM_DELETE = &H2
  35. Private Const NIF_MESSAGE = &H1
  36. Private Const NIF_ICON = &H2
  37. Private Const NIF_TIP = &H4
  38. Private Const WM_MOUSEMOVE = &H200
  39. Private Const WM_LBUTTONDBLCLK = &H203
  40. Private Const WM_LBUTTONDOWN = &H201
  41. Private Const WM_LBUTTONUP = &H202
  42. Private Const WM_RBUTTONDBLCLK = &H206
  43. Private Const WM_RBUTTONDOWN = &H204
  44. Private Const WM_RBUTTONUP = &H205
  45. Private Const WM_MOUSEOVER = &H200
  46.  
  47. Private Declare Function Shell_NotifyIcon Lib "shell32" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
  48.  
  49. Dim nid As NOTIFYICONDATA
  50.  
  51. Const m_def_Visible = False
  52. Const m_def_ToolTip = ""
  53. Dim m_Visible As Boolean
  54. Dim m_ToolTip As String
  55. Dim m_Icon As Picture
  56.  
  57. Event MouseMove()
  58. Event MouseDown(Button As Integer)
  59. Event MouseUp(Button As Integer)
  60. Event DblClick()
  61.  
  62. Public Property Get Icon() As Picture
  63.     Set Icon = m_Icon
  64. End Property
  65.  
  66. Public Property Set Icon(ByVal New_Icon As Picture)
  67.     Set m_Icon = New_Icon
  68.     If New_Icon Is Nothing Then
  69.         Visible = False
  70.     Else
  71.         If m_Visible Then
  72.             nid.uFlags = NIF_ICON
  73.             nid.hIcon = m_Icon
  74.             Shell_NotifyIcon NIM_MODIFY, nid
  75.         End If
  76.     End If
  77.     PropertyChanged "Icon"
  78. End Property
  79.  
  80. Public Property Get ToolTip() As String
  81.     ToolTip = m_ToolTip
  82. End Property
  83.  
  84. Public Property Let ToolTip(ByVal New_ToolTip As String)
  85.     m_ToolTip = Trim(New_ToolTip)
  86.     nid.uFlags = NIF_TIP
  87.     nid.szTip = m_ToolTip & vbNullChar
  88.     Shell_NotifyIcon NIM_MODIFY, nid
  89.     PropertyChanged "ToolTip"
  90. End Property
  91.  
  92. 'Property Initialization
  93. Private Sub UserControl_InitProperties()
  94.     Set m_Icon = LoadPicture("")
  95.     m_ToolTip = m_def_ToolTip
  96.     m_Visible = m_def_Visible
  97. End Sub
  98.  
  99. Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
  100.  
  101.     Set m_Icon = PropBag.ReadProperty("Icon", Nothing)
  102.     m_ToolTip = PropBag.ReadProperty("ToolTip", m_def_ToolTip)
  103.     m_Visible = PropBag.ReadProperty("Visible", m_def_Visible)
  104. End Sub
  105.  
  106. Private Sub UserControl_Resize()
  107. On Error Resume Next
  108. Static inloop As Boolean
  109.     If inloop Then Exit Sub
  110.     inloop = True
  111.     inloop = False
  112.     UserControl.Size 300, 300
  113.     If Err Then Err.Clear
  114.     
  115. End Sub
  116.  
  117. Private Sub UserControl_Terminate()
  118.     Shell_NotifyIcon NIM_DELETE, nid
  119. End Sub
  120.  
  121. Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
  122.     Call PropBag.WriteProperty("Icon", m_Icon, Nothing)
  123.     Call PropBag.WriteProperty("ToolTip", m_ToolTip, m_def_ToolTip)
  124.     Call PropBag.WriteProperty("Visible", m_Visible, m_def_Visible)
  125. End Sub
  126.  
  127. Private Sub UserControl_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  128.     Select Case X / Screen.TwipsPerPixelX
  129.     Case WM_LBUTTONDBLCLK
  130.         RaiseEvent DblClick
  131.     Case WM_LBUTTONDOWN
  132.         RaiseEvent MouseDown(vbLeftButton)
  133.     Case WM_LBUTTONUP
  134.         RaiseEvent MouseUp(vbLeftButton)
  135.     Case WM_RBUTTONDBLCLK
  136.         RaiseEvent DblClick
  137.     Case WM_RBUTTONDOWN
  138.         RaiseEvent MouseDown(vbRightButton)
  139.     Case WM_RBUTTONUP
  140.         RaiseEvent MouseUp(vbRightButton)
  141.     Case WM_MOUSEOVER
  142.         RaiseEvent MouseMove
  143.     End Select
  144. End Sub
  145.  
  146. Public Property Get Visible() As Boolean
  147. Attribute Visible.VB_MemberFlags = "400"
  148.     Visible = m_Visible
  149. End Property
  150.  
  151. Public Property Let Visible(ByVal New_Visible As Boolean)
  152.     If m_Visible = New_Visible Then Exit Property
  153.     m_Visible = New_Visible
  154.     If m_Visible Then
  155.         If Ambient.UserMode Then
  156.             nid.cbSize = Len(nid)
  157.             nid.hwnd = UserControl.hwnd
  158.             nid.UID = Int((Rnd * 65535) + 1)
  159.             nid.uFlags = NIF_MESSAGE
  160.             If Not m_Icon Is Nothing Then
  161.                 nid.uFlags = nid.uFlags + NIF_ICON
  162.                 nid.hIcon = m_Icon
  163.             End If
  164.             If m_ToolTip <> "" Then
  165.                 nid.uFlags = nid.uFlags + NIF_TIP
  166.                 nid.szTip = m_ToolTip & vbNullChar
  167.             End If
  168.             nid.uCallBackmessage = WM_MOUSEMOVE
  169.             Shell_NotifyIcon NIM_ADD, nid
  170.         End If
  171.     Else
  172.         Shell_NotifyIcon NIM_DELETE, nid
  173.     End If
  174.     PropertyChanged "Visible"
  175. End Property
  176.  
  177.