home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 1_2002.ISO / Data / Zips / CODE_UPLOAD170713142001.psc / ShellIcon.ctl < prev    next >
Encoding:
Text File  |  2001-03-10  |  6.4 KB  |  210 lines

  1. VERSION 5.00
  2. Begin VB.UserControl ShellIcon 
  3.    CanGetFocus     =   0   'False
  4.    ClientHeight    =   1050
  5.    ClientLeft      =   0
  6.    ClientTop       =   0
  7.    ClientWidth     =   1545
  8.    ClipBehavior    =   0  'Keine
  9.    ClipControls    =   0   'False
  10.    HitBehavior     =   0  'Keine
  11.    InvisibleAtRuntime=   -1  'True
  12.    Picture         =   "ShellIcon.ctx":0000
  13.    ScaleHeight     =   70
  14.    ScaleMode       =   3  'Pixel
  15.    ScaleWidth      =   103
  16.    ToolboxBitmap   =   "ShellIcon.ctx":030A
  17.    Begin VB.Timer tmrMenu 
  18.       Enabled         =   0   'False
  19.       Interval        =   500
  20.       Left            =   720
  21.       Top             =   120
  22.    End
  23. End
  24. Attribute VB_Name = "ShellIcon"
  25. Attribute VB_GlobalNameSpace = False
  26. Attribute VB_Creatable = True
  27. Attribute VB_PredeclaredId = False
  28. Attribute VB_Exposed = False
  29. '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  30. '!!!!   You should not change this code; you   !!!!
  31. '!!!!   can customize everything in the IDE.   !!!!
  32. '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  33.  
  34.  
  35. Private Enum NIM_CONSTANTS
  36.     NIM_ADD = &H0
  37.     NIM_MODIFY = &H1
  38.     NIM_DELETE = &H2
  39. End Enum
  40.  
  41. Private Enum NIF_CONSTANTS
  42.     NIF_MESSAGE = &H1
  43.     NIF_ICON = &H2
  44.     NIF_TIP = &H4
  45. End Enum
  46.  
  47. Private Enum WM_CONSTANTS
  48.     WM_MOUSEMOVE = &H200
  49.     WM_LBUTTONDBLCLK = &H203
  50.     WM_LBUTTONDOWN = &H201
  51.     WM_LBUTTONUP = &H202
  52.     WM_RBUTTONDBLCLK = &H206
  53.     WM_RBUTTONDOWN = &H204
  54.     WM_RBUTTONUP = &H205
  55. End Enum
  56.  
  57. Private Type NOTIFYICONDATA
  58.     cbSize As Long
  59.     hWnd As Long
  60.     uId As Long
  61.     uFlags As NIF_CONSTANTS
  62.     uCallBackMessage As WM_CONSTANTS
  63.     hIcon As Long
  64.     szTip As String * 64
  65. End Type
  66.  
  67. Private Type POINTAPI
  68.         X As Long
  69.         Y As Long
  70. End Type
  71.  
  72. Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
  73. Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As NIM_CONSTANTS, pnid As NOTIFYICONDATA) As Boolean
  74. Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, ByVal bRevert As Long) As Long
  75. Private Declare Function TrackPopupMenu Lib "user32" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal X As Long, ByVal Y As Long, ByVal nReserved As Long, ByVal hWnd As Long, ByVal lprc As Long) As Long
  76.  
  77. Dim IconData As NOTIFYICONDATA
  78.  
  79. Dim m_ToolTipText As String
  80. Dim m_Visible As Boolean
  81. Dim m_Show As Boolean
  82. Dim m_SysMenu As Boolean
  83.  
  84. Event MouseMove()
  85. Event MouseDown(Button As Integer)
  86. Event MouseUp(Button As Integer)
  87. Event DblClick(Button As Integer)
  88. Event Click(Button As Integer)
  89. Event SingleClick(Button As Integer)
  90.  
  91. Public Property Get ToolTipText() As String
  92. Attribute ToolTipText.VB_Description = "Gibt den Text zurⁿck, der angezeigt wird, wenn die Maus ⁿber dem Steuerelement verweilt, oder legt den Text fest."
  93.     ToolTipText = IconData.szTip
  94. End Property
  95.  
  96. Public Property Let ToolTipText(ByVal New_ToolTipText As String)
  97.     m_ToolTipText = New_ToolTipText
  98.     IconData.szTip = m_ToolTipText & Chr(0)
  99.     PropertyChanged "ToolTipText"
  100.     If m_Show Then Shell_NotifyIcon NIM_MODIFY, IconData
  101. End Property
  102.  
  103. Public Property Get Icon() As StdPicture
  104.     Set Icon = Picture
  105. End Property
  106.  
  107. Public Property Set Icon(ByVal New_Icon As StdPicture)
  108.     Set Picture = New_Icon
  109.     PropertyChanged "Icon"
  110.     IconData.hIcon = New_Icon.Handle
  111.     If m_Show Then Shell_NotifyIcon NIM_MODIFY, IconData
  112. End Property
  113.  
  114. Public Property Get Visible() As Boolean
  115.     Visible = m_Visible
  116. End Property
  117.  
  118. Public Property Let Visible(ByVal New_Visible As Boolean)
  119.     m_Visible = New_Visible
  120.     PropertyChanged "Visible"
  121.     Show m_Visible
  122. End Property
  123.  
  124. Public Property Get SysMenu() As Boolean
  125.     SysMenu = m_SysMenu
  126. End Property
  127.  
  128. Public Property Let SysMenu(ByVal New_SysMenu As Boolean)
  129.     m_SysMenu = New_SysMenu
  130.     PropertyChanged "SysMenu"
  131. End Property
  132.  
  133. Private Sub tmrMenu_Timer()
  134.     tmrMenu.Enabled = False
  135.     RaiseEvent SingleClick(1)
  136. End Sub
  137.  
  138. Private Sub UserControl_Initialize()
  139.     IconData.cbSize = Len(IconData)
  140.     IconData.hWnd = hWnd
  141.     IconData.uId = vbNull
  142.     IconData.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
  143.     IconData.uCallBackMessage = WM_MOUSEMOVE
  144. End Sub
  145.  
  146. Private Sub UserControl_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  147.     Select Case X
  148.         Case WM_MOUSEMOVE: RaiseEvent MouseMove
  149.         Case WM_LBUTTONDBLCLK: RaiseEvent DblClick(1)
  150.         Case WM_LBUTTONDOWN: RaiseEvent MouseDown(1)
  151.         Case WM_LBUTTONUP
  152.             RaiseEvent MouseUp(1)
  153.             RaiseEvent Click(1)
  154.             tmrMenu.Enabled = Not tmrMenu.Enabled
  155.         Case WM_RBUTTONDBLCLK: RaiseEvent DblClick(2)
  156.         Case WM_RBUTTONDOWN: RaiseEvent MouseDown(2)
  157.         Case WM_RBUTTONUP
  158.             If m_SysMenu Then
  159.                 ShowSysMenu
  160.             Else
  161.                 RaiseEvent MouseUp(2): RaiseEvent Click(2)
  162.             End If
  163.     End Select
  164. End Sub
  165.  
  166. Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
  167.     m_ToolTipText = PropBag.ReadProperty("ToolTipText", "")
  168.     IconData.szTip = m_ToolTipText & Chr(0)
  169.     Set Picture = PropBag.ReadProperty("Icon", Nothing)
  170.     m_Visible = PropBag.ReadProperty("Visible", False)
  171.     m_SysMenu = PropBag.ReadProperty("SysMenu", True)
  172.     IconData.hIcon = Picture.Handle
  173.     If Ambient.UserMode Then Show m_Visible
  174. End Sub
  175.  
  176. Private Sub UserControl_Resize()
  177.     Width = 480
  178.     Height = 480
  179. End Sub
  180.  
  181. Private Sub UserControl_Terminate()
  182.     If m_Show Then Show False
  183. End Sub
  184.  
  185. Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
  186.     Call PropBag.WriteProperty("ToolTipText", m_ToolTipText, "")
  187.     Call PropBag.WriteProperty("Icon", Picture, Nothing)
  188.     Call PropBag.WriteProperty("Visible", m_Visible, False)
  189.     Call PropBag.WriteProperty("SysMenu", m_SysMenu, True)
  190. End Sub
  191.  
  192. Private Sub Show(Optional ByVal Show As Boolean = True)
  193.     If Show And m_Show = False Then
  194.         If Ambient.UserMode Then
  195.             Shell_NotifyIcon NIM_ADD, IconData
  196.             m_Show = True
  197.         End If
  198.     ElseIf Show = False And m_Show = True Then
  199.         Shell_NotifyIcon NIM_DELETE, IconData
  200.         m_Show = False
  201.     End If
  202. End Sub
  203.  
  204. Public Sub ShowSysMenu(Optional ByVal hWnd As Long)
  205.     Dim Pos As POINTAPI
  206.     If hWnd = 0 Then hWnd = Parent.hWnd
  207.     GetCursorPos Pos
  208.     TrackPopupMenu GetSystemMenu(hWnd, False), &H200, Pos.X, Pos.Y, hWnd, hWnd, 0
  209. End Sub
  210.