我正在用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)