现在把CPictureEx这个显示GIF图片的类封装成一个AcitveX 控件,但在Richedit里显示的时候出现这样的问题:我在编辑框的左上角插入一张GIF图片(动画),这个时候把滚动条往下拉一点,但不超过图片的高度,本来应该只显示图片的一部分的,但现在是整张都显示了。但如果把图片显示在末端,滚动条往上拉的时候,却没问题。我的代码是这样的:
控件宿主的绘图函数。m_pic是CPictureEx对象
HRESULT OnDraw(ATL_DRAWINFO& di)
{
RECT rc = *(RECT*)di.prcBounds;
m_pic.OnDraw(di.hdcDraw,&rc);
return S_OK;
}
然后GIF图片的显示线程函数是这样的:
void CALLBACK CImageSupport::MyTimerProc(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime)
{
std::map<UINT,CImageSupport*>::const_iterator iter;
iter = m_timerMap.find(idEvent);
CImageSupport* pImg = iter->second;  
pImg->m_pic.TriggerFrameChange();
hr= pImg->GetClientSite(&spClientSite);
CComQIPtr<IOleInPlaceSite> spSite = spClientSite;
hr=spSite->GetWindow(&m_hWndParent);

if (pImg->m_spAdviseSink)
{  
pImg->m_spAdviseSink->OnViewChange(1, -1);

}
}