
Project files for embedded Visual C++ 3.0, 4.0 and 
Visual Studio 2005 can be found in the VisualCE directory.

SDL supports GAPI and WinDib output for Windows CE.

GAPI driver supports:

- all possible WinCE devices (Pocket PC, Smartphones, HPC)
  with different orientations of video memory and resolutions.
- 4, 8 and 16 bpp devices
- special handling of 8bpp on 8bpp devices
- VGA mode, you can even switch between VGA and GAPI in runtime
  (between 240x320 and 480x640 for example). On VGA devices you can
  use either GAPI or VGA.
- Landscape mode and automatic rotation of buttons and stylus coordinates.
  To enable landscape mode make width of video screen bigger than height.
  For example: 
    SDL_SetVideoMode(320,240,16,SDL_FULLSCREEN)
- WM2005
- SDL_ListModes

NOTE:
There are several SDL features not available in the WinCE port of SDL.

- DirectX is not yet available
- Semaphores are not available
- Joystick support is not available
- CD-ROM control is not available

In addition, there are several features that run in "degraded" mode:

Preprocessor Symbol		Effect
===================		=================================

SDL_systimer.c:
USE_GETTICKCOUNT		Less accurate values for SDL time functions
USE_SETTIMER			Use only a single marginally accurate timer

SDL_syswm.c:
DISABLE_ICON_SUPPORT		Can't set the runtime window icon

SDL_sysmouse.c:
USE_STATIC_CURSOR		Only the arrow cursor is available

SDL_sysevents.c:
NO_GETKEYBOARDSTATE		Can't get modifier state on keyboard focus

SDL_dibevents.c:
NO_GETKEYBOARDSTATE		Very limited keycode translation

SDL_dibvideo.c:
NO_GETDIBITS			Can't distinguish between 15 bpp and 16 bpp
NO_CHANGEDISPLAYSETTINGS	No fullscreen support
NO_GAMMA_SUPPORT		Gamma correction not available
