This method is capable of synchronous or asynchronous blits (the default behavior), either display memory to display memory, display memory to system memory, system memory to display memory, or system memory to system memory.
The blits can be performed by using source color keys, and destination color keys. Arbitrary stretching or shrinking will be performed if the source and destination rectangles are not the same size.
Typically, IDirectDrawSurface::Blt returns immediately with an error if the blitter is busy and the blit could not be set up. Specify the DDBLT_WAITNOTBUSY flag to request a synchronous blit. When you include the DDBLT_WAITNOTBUSY flag, the method waits until the blit can be set up or another error occurs before it returns.
The RECT structures are defined so that the right and bottom members are exclusive: right minus left equals the width of the rectangle, not one less than the width.