Image :: GetFrameCount устанавливает Image :: LastError в win32error c ++ gdi + - PullRequest
0 голосов
/ 30 августа 2018

Эта функция меняет активный кадр изображения через некоторое время Но когда я пытаюсь получить количество кадров измерения, он устанавливает image-> lasterror в Win32Error

Есть ли способ это исправить? (Windows 10, сообщество Visual Studio 2017)

void PlayImageAnim(Gdiplus::Image*&image, int delay,bool Looped)
{
    using namespace Gdiplus;
    if (Looped == true)
    {
        while (true)
        {
            UINT dcount = 0;
            GUID *dimensionsIDs;
            dcount = image->GetFrameDimensionsCount();
            dimensionsIDs = new GUID[dcount];
            UINT frame_count = image->GetFrameCount(&dimensionsIDs[0]);
            int y = 0;
            GUID pageGUID = FrameDimensionTime;
            int size = image->GetPropertyItemSize(PropertyTagFrameDelay);
            Gdiplus::PropertyItem*pr_item = (Gdiplus::PropertyItem*)malloc(size);


            for (UINT i = 0; i <= frame_count; i++)
            {
                /*graphics.DrawImage(image, image_rect);*/
                /*long delay = ((long*)pr_item->value)[i] * 10;*/
                image->SelectActiveFrame(&pageGUID, i);
                std::this_thread::sleep_for(std::chrono::milliseconds(delay));
            }
            image->SelectActiveFrame(&pageGUID, 0);
        }
    }
    else
    {
        UINT dcount = 0;
        GUID *dimensionsIDs;
        dcount = image->GetFrameDimensionsCount();
        dimensionsIDs = new GUID[dcount];
        UINT frame_count = image->GetFrameCount(&dimensionsIDs[0]);

        GUID pageGUID = FrameDimensionTime;
        int size = image->GetPropertyItemSize(PropertyTagFrameDelay);
        Gdiplus::PropertyItem*pr_item = (Gdiplus::PropertyItem*)malloc(size);


        for (UINT i = 0; i <= frame_count; i++)
        {
            image->SelectActiveFrame(&pageGUID, i);
            std::this_thread::sleep_for(std::chrono::milliseconds(delay));
        }
        image->SelectActiveFrame(&pageGUID, 0);
    }
}

имеет аналогичные части для других частей проекта

...