Hi all,
I have developed a fairly complex OCX for subclassing and also for handling the system tray icon.

EventCtl - Release 1.0.2

2 controls that vastly extend the capabilities of Visual basic.

VBEventWindow - provides a simple subclassing control.
Events:
- ActiveApplicationChanged, fired when your app gains or loses user focus
- LostCapture, fired when your app gains or loses the capture
- KeyPressed, fired when any of the keys are pressed
- LowMemory, fired when the system is running low on memory
- Move, fired when the form is moved
- VerticalScroll, HorizontalScroll, fired when the form scrollbars are set
- WindowsSettingsChanged, WindowsINIChanged , fired when the windows environment settings are changed
- NonClientMouseMove,NonClientMouseDown,NonClientMouseUp,NonClientDblClick, fired when a mouse event occurs in the non-client part of your form
- MinMaxSize, fired when the OS wants to know what size to make your form either in response to a minimise/maximise command or when the user is dragging the sesize box.
- MouseOverMenu, fired when the mouse is over a top level menu
- WindowMessageFired fired for all the other windows messages

Methods:
- InvalidateRect, Sets part of the form invalid to indicate that it needs to be repainted

Properties:
- ClassName, returns the windows class name of the form
- DeviceContext, returns the device context of the form (for graphical operations)
- HorizontalScrollbar, VerticalScrollbar, sets or unsets scrollbars on the form
- TopMost sets the form to float over the top of other forms
- Transparent, makes the formclient area invisible

Use:
In the form load...
Private Sub Form_Load()

Me.VBEventWindow.ParentForm = Me.hWnd

End Sub


*** VBSysTrayCtl - Provides a simple control to allow your application to use the SysTray
Events:
- MouseMove, Fired when th emouse moves over the tray icon
- MouseDown, Fired when a mouse down event occurs over the tray icon
- MouseUp, Fired when a mouse up event occurs over the tray icon
- MouseDblClick, Fired when the user double clicks the Tray Icon

Methods:
- ShowIcon, displays the icon in the system tray area
- Hideicon, removes the icon from the system tray area
- Refresh, updates the icon displayed in the system tray area

Properties:
- Tooltip, the tip that is displayed if the user hovers the mouse over your systray icon

Use:
In the form load....
Private Sub Form_Load()

Me.VBSysTrayCtl1.Tooltip = "Merrion Computing"
Me.VBSysTrayCtl1.ShowIcon

End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

Me.VBSysTrayCtl1.Hideicon

End Sub


** Known issues in this release.**
On the first time you look at the properties window for the VBEventWindow, the Visual basic design environment can flicker madly.
Opening any menu stops this...(cause unknown.)

I would appreciate it if some of you could take a look at this and help me identify any issues or ideas for enhancements. The controls and source code are at
Merrion Computing Downloads

Thanks in advance,
Duncan Jones
Merrion Computing Ltd