我用了一个网上流传的ImageEx类来实现GIF的显示,
结果只要gif开始play,vs2008的输出窗口就会不停提示有数据访问冲突,调试发现,
每次刷新调用DrawImage的时候会有这个提示,但是我用了网上那个例程,没有发现这个问题
用那个例程中提供的gif放到我的程序里运行也没有问题..非常苦恼啊...
流程如下
//主对话框中的代码
m_Image = new Image("GIF", "IDR_PICTURE");
m_Image->InitAnimation(m_hWnd, point);//下面是ImageEx中发生访问冲突地方的代码 其实就是DrawImage的地方
bool ImageEx::DrawFrameGIF()
{ ::WaitForSingleObject(m_hPause, INFINITE); GUID   pageGuid = FrameDimensionTime; long hmWidth = GetWidth();
long hmHeight = GetHeight(); HDC hDC = GetDC(m_hWnd);
if (hDC)
{
Graphics graphics(hDC);                  //每次运行该句,则在输出窗口中会提示有数据访问冲突
graphics.DrawImage(this, m_pt.x, m_pt.y, hmWidth, hmHeight); ReleaseDC(m_hWnd, hDC);
} SelectActiveFrame(&pageGuid, m_nFramePosition++);

if (m_nFramePosition == m_nFrameCount)
m_nFramePosition = 0;
long lPause = ((long*) m_pPropertyItem->value)[m_nFramePosition] * 10; DWORD dwErr = WaitForSingleObject(m_hExitEvent, lPause); return dwErr == WAIT_OBJECT_0;
}