static UINT GifThread(LPVOID GifDC)
{
CDC* pDC = (CDC*)GifDC;
HINSTANCE hAndle = ::AfxGetResourceHandle();
HRSRC hRsrc = ::FindResource(hAndle,MAKEINTRESOURCE(IDR_GIF1),"GIF");
DWORD word = ::SizeofResource(hAndle,hRsrc);
BYTE* lpBy = (BYTE*)LoadResource(hAndle,hRsrc);
BYTE* pByte[200];
DWORD nu[200];
int num = 0;
DWORD firstLocation = 0;
for(DWORD i=0;i<word;i++)
{
if(lpBy[i]==0x2c)
{
if(num==0)
{
firstLocation = i;
}
pGif nImage = (pGif)&lpBy[i+1];
DWORD number = 1+sizeof(Gif);
while(lpBy[i+number]!=0)
{
number = number+(DWORD)lpBy[i+number]+1;
}
number++;
pByte[num] = new BYTE[number];
for(DWORD n=0;n<number;n++)
{
(BYTE)(pByte[num]+n) = lpBy[i+n];
}
nu[num] = number;
i = i+number-1;
num++;
}
}
while(1)
{
for(int m=0;m<num;m++)
{
DWORD dWord;
VirtualProtect(lpBy,word,PAGE_READWRITE,&dWord);
for(DWORD n=0;n<nu[m];n++)
{
lpBy[firstLocation+n] = (BYTE)(pByte[m]+n);
}
VirtualProtect(lpBy,word,dWord,NULL);
CMemFile mfile(lpBy,word);
CArchive aRc(&mfile,CArchive::load|CArchive::bNoFlushOnDelete);
CArchiveStream aRcstream(&aRc);
CComQIPtr<IPicture> m_picture;
OleLoadPicture((LPSTREAM)&aRcstream,0,false,IID_IPicture,(void**)&m_picture);
long x,y;
m_picture->get_Width(&x);
m_picture->get_Height(&y);
CSize size(x,y);
pDC->HIMETRICtoDP(&size);
CRect rect;
m_picture->Render(*pDC,0,0,size.cx,size.cy,0,y,x,-y,&rect);
Sleep(30);
}
}
return 1;
}