//-----------------------------------------------------------------------------
// 
// Sample Name: FullScreenMode Sample
// 
// Copyright (c) 1999-2000 Microsoft Corporation. All rights reserved.
// 
//-----------------------------------------------------------------------------


Description
===========
  FullScreenMode demonstrates the tasks required to initialize and run 
  a full-screen DirectDraw application.

Path
====
  Source: Mssdk\Samples\Multimedia\DDraw\FullScreenMode

  Executable: Mssdk\Samples\Multimedia\DDraw\Bin

User's Guide
============
  FullScreenMode requires no user input. Press the ESC key to quit the program.

Programming Notes
=================
  The basic tasks to author a simple full-screen DirectDraw application are as follows:
  
  Initialize DirectDraw: 
    1. Register a window class and create a window.  
    2. Call DirectDrawCreateEx to create a DirectDraw object
    3. Call SetCooperativeLevel to set the DirectDraw cooperative level 
       to exclusive and full-screen. 
    4. Call SetDisplayMode to set the display mode, for example 640x480x8.
    5. Call CreateSurface to create a flipable primary surface with 1 back buffer.
    6. Call GetAttachedSurface to obtain a pointer to the back buffer.
    7. If the display mode was set to palettized color, a palette is needs 
       to be created.  This sample displays a single bitmap so it can read the 
       bitmap palette info to read and create a DirectDraw palette.  After a palette 
       is created, call SetPalette to set the palette for the primary surface.
    8. Create an off-screen plain DirectDraw surface, and load media content into it.  
       For example, this sample calls DDUtil_CreateSurfaceFromBitmap() to do just 
       this. 

  When the app is idle, and it is not hidden or minimized then render the next 
  frame as follows:
    1. If movement or animation is involved in the app, then calculate how much 
       time has passed since the last time the frame was displayed.
    2. Move or animate the app state based on how much time has passed.
    3. Draw the current state into the backbuffer.
    4. Call Flip to flip the contents of the backbuffer into the primary surface.  
  
  If the user alt-tabs away from the app, then the DirectDraw surface may be lost 
  (resulting in a DirectDraw call returning DDERR_SURFACELOST), then handle it by:
    1. Call RestoreAllSurfaces to have DirectDraw restore all the surfaces.  
    2. Restoring a surface doesn't reload any content that existed in the surface 
       prior to it being lost. So you must now redraw the graphics the surfaces 
       once held.  For example, this sample handles this by calling 
       DDUtil_ReDrawBitmapOnDDS()


  
  
