LiteStep Multimonitor Support Whitepaper

Purpose:  To provide instruction for supporting multimonitor
          support in LiteStep modules.

Background: Starting with Windows 98 and Windows 2000, Microsoft included
            the ability to have more than one video card and monitor on
            a system. These monitors would be combined to form a virtual screen.

Issues:   Different GetSystemMetrics indexes are needed to retrieve the
          virtual screen left, top, height and width. If the secondary monitor
          is to the left of the main monitor, then the coordinates for hte secondary
          monitor would all be negative, there it is necessary to trick LiteStep
          modules into treating the entire virtual screen as if the origin was in the
          top left corner of the left most monitor.

Includes: Include the file \lsapi\common.h

Usage:    macros.h (included in common.h) provides several macros to ease the burden
          of supporting multiple monitors in LiteStep.

          macro name:                 description:
          SCREEN_LEFT                 Provides the coordinate of the left boundry of the
                                      left most monitor (NOTE:if the left most monitor is to
                                      the left of the main monitor, then this coordinate
                                      will be negative)
                                      (On non multimonitor systems, this will be 0)

          SCREEN_TOP                  Provides the coordinate of the top boundry of the
                                      top most monitor (NOTE:if the top most monitor is "above"
                                      the main monitor, then this coordinate will be negative)
                                      (On non multimonitor systems, this will be 0)

          SCREEN_WIDTH                Provides the width of the entire (virtual)screen for all
                                      display monitors
                                      (On non multimonitor systems this is the same as
                                      GetSystemMetrics(SM_CXSCREEN))
                                      (On multimonitor systems this is the same as
                                      GetSystemMetrics(SM_CXVIRTUALSCREEN))

          SCREEN_HEIGHT               Provides the height of the entire (virtual)screen for all
                                      display monitors
                                      (On non multimonitor systems this is the same as
                                      GetSystemMetrics(SM_CYSCREEN))
                                      (On multimonitor systems this is the same as
                                      GetSystemMetrics(SM_CYVIRTUALSCREEN))

          CONVERT_COORDINATE_X(int)   Converts a coordinate to the (virtual)screen taking into
                                      account that the left origin may be negative and also
                                      making negative values relative to the right boundry of the
                                      right most boundry
                                      (Sample of code to replace with this macro is:
                                      x = (x < 0 ? screenWidth + x : x);
                                      would now be:
                                      x = CONVERT_COORDINATE_X(x);)

          CONVERT_COORDINATE_Y(int)   Converts a coordinate to the (virtual)screen taking into
                                      account that the top origin may be negative and also
                                      making negative values relative to the bottom boundry of the
                                      bottom most boundry
                                      (Sample of code to replace with this macro is:
                                      y = (y < 0 ? screenHeight + y : y);
                                      would now be:
                                      y = CONVERT_COORDINATE_Y(y);)

                              