首页 > 代码库 > DuiLib中的GifAnim控件无法加载或者播放Gif动画的解决办法
DuiLib中的GifAnim控件无法加载或者播放Gif动画的解决办法
一、无法加载gif图片的问题,因为GifAnim控件加载图片使用的是Gdi+,然而在控件中并没有初始化Gdi+,所以只需要在自己的主窗口类中添加如下代码:
1 // 全局 2 Gdiplus::GdiplusStartupInput gdiplusStartupInput; 3 ULONG_PTR gdiplusToken; 4 // 初始化函数中 5 //初始化GDI+. 6 GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
二、gif图片无法播放的原因是在自己窗口中响应了WM_TIMER消息,但是没有把不属于自己定义的定时器返回给系统,导致GifAnim控件无法捕获到播放Gif的定时器。所以讲HandleMessage函数中的内容修改如下即可:
1 LRESULT lRes = 0; 2 BOOL bHandled = TRUE; 3 switch (uMsg) { 4 case WM_CREATE: lRes = OnCreate(uMsg, wParam, lParam, bHandled); break; 5 case WM_CLOSE: lRes = OnClose(uMsg, wParam, lParam, bHandled); break; 6 case WM_DESTROY: lRes = OnDestroy(uMsg, wParam, lParam, bHandled); break; 7 case WM_NCACTIVATE: lRes = OnNcActivate(uMsg, wParam, lParam, bHandled); break; 8 case WM_NCCALCSIZE: lRes = OnNcCalcSize(uMsg, wParam, lParam, bHandled); break; 9 case WM_NCPAINT: lRes = OnNcPaint(uMsg, wParam, lParam, bHandled); break; 10 case WM_NCHITTEST: lRes = OnNcHitTest(uMsg, wParam, lParam, bHandled); break; 11 case WM_SIZE: lRes = OnSize(uMsg, wParam, lParam, bHandled); break; 12 case WM_GETMINMAXINFO: lRes = OnGetMinMaxInfo(uMsg, wParam, lParam, bHandled); break; 13 case WM_SYSCOMMAND: lRes = OnSysCommand(uMsg, wParam, lParam, bHandled); break; 14 case WM_TIMER: 15 if (wParam == 122) 16 { 17 18 } 19 else 20 { 21 bHandled = FALSE; 22 } 23 break; 24 default: 25 bHandled = FALSE; 26 } 27 if (bHandled) return lRes; 28 if (m_pm.MessageHandler(uMsg, wParam, lParam, lRes)) return lRes; 29 return CWindowWnd::HandleMessage(uMsg, wParam, lParam);
只获取自己的定时器,非自己的定时器再返回给系统即可。
DuiLib中的GifAnim控件无法加载或者播放Gif动画的解决办法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。