The mouse cursor you see on the screen is purely software driven.
All items you see on the screen are considered objects. Each item, such as a window, is an object. In fact, a window is made up of objects: Border, title bar, title bar buttons, background, menu, resize button, etc. Each of these objects have a parent, in this case, the window they belong to. That window's parent might be the root object, the desktop object, or another window. A dialog box window has another window as its parent.
The mouse cursor is a single object with its parent as the desktop object. This cursor object keeps track of where it is displayed on the screen.
The only thing you need to do different with the mouse cursor is that it is always on top. No other object should cover the cursor.
With this in mind, the mouse cursor object can be drawn as anything you want, any size, any color. It is simply an object that is drawn to the screen at the current saved coordinates.
Also, keep in mind that there are completely independent items here. The mouse driver is independent of the mouse cursor. The GUI mouse driver calls the hardware mouse driver to see if the coordinates have changed, if so, updates the coordinates of the GUI cursor position. Each item being completely separate of each other. The driver that draws the mouse cursor to the screen is completely separate of the GUI mouse driver. Remember, each item of the GUI is an object with a parent with none or more children. The screen driver simply updates any object that shows dirty.
Ben
-
http://www.fysnet.net/the_graphical_user_interface.htm