小编The*_*der的帖子

Gif闪烁

我正在用c ++ win32 api制作一个窗口。我正在使用gdi +显示gif。并且此gif从资源加载并生成IStream *。但是,当我不使用gif的路径,并使用IStream创建GDIPlus :: Image并将其显示时,gif开始闪烁。PS窗口为SW_SHOWMAXIMIZED

我试图在WM_ERASEBKGND消息中返回1,使得NULL WNDCLASSEX.hbrBackGround,使用InvalidateRect(hwnd,&rc,FALSE)PS rc是

RECT rc;
GetWindowRect(hwnd,&rc);
Run Code Online (Sandbox Code Playgroud)

但这没有用;

case WM_TIMER:
        if (wParam == DRAW_ANIM)
        {
            pImg->SelectActiveFrame(&FrameDimensionTime, nFrm);
            const Rect DRC(0, 0, pImg->GetWidth(), pImg->GetHeight());
            pGphcs->Clear(Color(128, 128, 128));

            pGphcs->DrawImage(pImg, DRC);
            RECT rt;
            GetWindowRect(hwnd, &rt);
            InvalidateRect(hwnd, &rt, FALSE);


            if (nFrm < (nFrmCnt - 1)) nFrm++; else nFrm = 0;

            InvalidateRect(hwnd, &rt, FALSE);
        }

        break;

hMWDC = GetDC(hWnd);
    pGphcs = new Graphics(hMWDC);

    HMODULE hMod = GetModuleHandle(NULL);
    HRSRC hRes = FindResource(hMod, MAKEINTRESOURCEW(MY_GIF_ID), RT_RCDATA);
    if (!hRes) MessageBox(NULL, L"hRes!!", L"ERROR", …
Run Code Online (Sandbox Code Playgroud)

c++ winapi gdi+ animated-gif win32gui

0
推荐指数
1
解决办法
130
查看次数

标签 统计

animated-gif ×1

c++ ×1

gdi+ ×1

win32gui ×1

winapi ×1