ShellImageDataではこうしたファイルについても扱うことができます。NextPageを呼び出すことで次のページ(画像)を参照することができます。IShellImageData::NextPage(VOID);このメソッドに引数はありません。画像ファイルに格納されているページ数は、GetPageCountで取得することができます。*pcPages);pcPagesは、ページ数を受け取る変数のアドレスを指定します。変数に格納された値が1より大きい場合は、アニメーションが可能であると判断できます。今回のプログラムは、アニメーションGIFを描画しています。TEXT("イメージのデコードに失敗しました。lParam);}WM_CREATEでは、GetDelayを呼び出してアニメーションの間隔を取得しています。そこで現在のページを次のページに進ませればよいことになります。最後のページに到達している場合は、SelectPageに0を指定して先頭のページに戻る必要があります。GetPageCountで取得したページ総数-1に一致した場合としています。InvalidateRectによってWM_PAINTが生成され、新しいページによる描画が行われます。