Rendering the Data

The client-application sends the following messages to control the driver's internal clock for rendering the decompressed data:

Message Description
ICM_DRAW_GETTIME Obtains the value of the driver's internal clock if it is handling the timing of drawing frames.
ICM_DRAW_SETTIME Sets the driver's internal clock if it is handling the timing of drawing frames.
ICM_DRAW_START Starts the internal clock of a driver if it handles the timing of drawing frames.
ICM_DRAW_STOP Stop the internal clock of a driver if it handles the timing of drawing frames.
ICM_DRAW_WINDOW Informs the driver the display window has been moved, hidden, or displayed.
ICM_DRAW_FLUSH Flushes any frames that are waiting to be drawn.
ICM_DRAW_RENDERBUFFER Draws a frame waiting to be drawn.
ICM_DRAW_UPDATE Redraws the image currently displayed.
ICM_DRAW_CHANGEPALETTE Changes the palette.

The client-application sends ICM_DRAW_START to have your driver start (or continue) rendering data at the rate specified by the ICM_DRAW_BEGIN message. The ICM_DRAW_STOP message pauses the internal clock. Neither of these messages use dwParam1, dwParam2, or a return value.

The client-application uses ICM_DRAW_GETTIME to obtain the value of the internal clock. Your driver returns the current time value (this is normally frame numbers for video) in the DWORD indicated by the pointer specified by dwParam1. The current time is relative to the start of drawing.

The client-application uses ICM_DRAW_SETTIME to set the value of the internal clock. Typically, the client-application uses this message to synchronize the driver's clock to an external clock. Your driver should set its clock to the value (this is normally frame numbers for video) specified in the DWORD pointed to by dwParam1.

The client-application sends ICM_DRAW_FLUSH to have your driver discard any frames that have not been drawn.

The client-application sends ICM_DRAW_RENDERBUFFER to have your driver draw the image currently buffered.

The client-application sends ICM_DRAW_UPDATE to have your driver redraw an image.

The client-application sends ICM_DRAW_CHANGEPALETTE when the palette changes in the movie.