#ifndef GifAnimUI_h__ #define GifAnimUI_h__ #pragma once namespace DuiLib { class UILIB_API CGifAnimUI : public CControlUI { enum { EVENT_TIEM_ID = 100, }; DECLARE_DUICONTROL(CGifAnimUI) public: CGifAnimUI(void); ~CGifAnimUI(void); LPCTSTR GetClass() const; LPVOID GetInterface(LPCTSTR pstrName); void DoInit(); bool DoPaint(HDC hDC, const RECT& rcPaint, CControlUI* pStopControl); void DoEvent(TEventUI& event); void SetVisible(bool bVisible = true ); void SetAttribute(LPCTSTR pstrName, LPCTSTR pstrValue); void SetBkImage(LPCTSTR pStrImage); LPCTSTR GetBkImage(); void SetAutoPlay(bool bIsAuto = true ); bool IsAutoPlay() const; void SetAutoSize(bool bIsAuto = true ); bool IsAutoSize() const; void PlayGif(); void PauseGif(); void StopGif(); private: void InitGifImage(); void DeleteGif(); void OnTimer( UINT_PTR idEvent ); void DrawFrame( HDC hDC ); // 绘制GIF每帧 private: Gdiplus::Image *m_pGifImage; UINT m_nFrameCount; // gif图片总帧数 UINT m_nFramePosition; // 当前放到第几帧 Gdiplus::PropertyItem* m_pPropertyItem; // 帧与帧之间间隔时间 CDuiString m_sBkImage; bool m_bIsAutoPlay; // 是否自动播放gif bool m_bIsAutoSize; // 是否自动根据图片设置大小 bool m_bIsPlaying; }; } #endif // GifAnimUI_h__