Ok so this is what I ended up doing and it seems to work well.
Because i have a custom mouse that tracks the mouse position it was difficult to dock the mouse because i didn't know how to directly tell the Mouse.X and Mouse.Y to move since I think this is outside of C2 control (the actual MOUSE indicates where the Mouse.X and Y are)
So I made a variable MouseX and MouseY which the custom cursor would slave to instead of directly to the Mouse.X and Mouse.Y although the MouseX and Y are themselves constantly being updated by the Mouse.X and Mouse.Y make sense?
Now for the real magic..
I made an event that was saying "Touch is in Touch" + Left Mouse Button is down (inverted)
This was set to destroy the mouse icon and also set a global var "MouseExists" which was set to 1 by default and set to 0 when the mouse was destroyed.
then another event
Mouse On any click + MouseExists = 0 this is set to create a new CustomMouse object.
Seems to work nicely..
so basically any touch event on the screen will kill the mouse and to get the mouse to return, any mouse click will create a new Mouse Cursor