The Animation control in the shell common controls library supports only a very limited class of AVI files.

  • The AVI must be non-interleaved.
  • The AVI must have exactly one video stream.
  • The AVI may not have an audio stream.
  • The AVI may not use palette changes.
  • The AVI must be either uncompressed or BI_RLE8-compressed.

Why all these restrictions?

Because the purpose of the Animation control is to be able to show simple animations. If you have a complex animation, you should be using one of the more advanced animation controls, like the MCIWnd window class.

There would be no benefit to adding all the advanced AVI playback features were added to the shell Animation control. The result would just be a pointless clone of MCIWnd.

This is something you need to keep in mind when designing a component whose original design goal is to be a simpler version of some other component. You must resist the urge to add features from that other component to your component. If you succumb, then you will end up with a component that does everything the original component did, even though your goal was to be a simpler version. So why did you write it? You spent months writing something that already exists.