C++のプログラムでGIFアニメを再生したい場合、Gdiplusで下記のようなコードで再生ができてます。
呼び出し側
InsImageGIF(_TEXT("anime.gif"),mainHwnd,0,0);
関数
int InsImageGIF(TCHAR* ImgSrc, HWND DistHwnd,int iStartX,int iStartY)
{
HDC hdc;
HDC mhdc;
HBITMAP hbp;
BITMAP bp;
PAINTSTRUCT ps; GUID guid; hdc = GetDC(DistHwnd); Graphics MyGraphics(hdc); Image gifimage(ImgSrc); gifimage.GetFrameDimensionsList( &guid, 1); int frame_cnt = gifimage.GetFrameCount(&guid); for (int i = 0; i< frame_cnt; i++) { // フレーム数分くりかえす gifimage.SelectActiveFrame(&guid, i); MyGraphics.DrawImage(&gifimage, iStartX, iStartY ); Sleep(1000); // 1秒まつ } EndPaint(DistHwnd,&ps); ReleaseDC(DistHwnd,hdc); return 0; // 終わるまで返ってこない
}
この場合、呼び出し側はアニメが終わるのを待って次に進むしかないため、途中で止めたり、音声を挿入したりできないです。
たとえば、呼び出しstartで開始、呼び出しstopで終了するなど、
C++で、1回呼び出しただけで関数から帰ってきて自動で再生できるようにするには、どうすればよいでしょう?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。