在桌面如何显示gif? 如果可以。写详系点(有代码就好) 谁的最好,解决时另外加送50:) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在http://expert.csdn.net/Expert/topic/1704/1704687.xml?temp=.9005091up阿 取得桌面的HWND,再BEGINPAINT,再在HDCH 画。 这段程序可以给你参考,自已改进:void CDesktopDlg::OnButton1() { CWindowDC dc(GetDesktopWindow()); ShowPic("d:\\hello.gif",&dc);}void CDesktopDlg::ShowPic(char *filename, CDC *pDC){IPicture *pPic; IStream *pStm; CFileStatus fstatus; CFile file; LONG cb; if (file.Open(filename,CFile::modeRead)&&file.GetStatus(filename, fstatus)&& ((cb = fstatus.m_size) != -1)) { HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb); LPVOID pvData = NULL; if (hGlobal != NULL) { if ((pvData = GlobalLock(hGlobal)) != NULL) { file.ReadHuge(pvData, cb); GlobalUnlock(hGlobal); CreateStreamOnHGlobal(hGlobal, TRUE, &pStm); if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID* )&pPic))) { OLE_XSIZE_HIMETRIC hmWidth; OLE_YSIZE_HIMETRIC hmHeight; pPic->get_Width(&hmWidth); pPic->get_Height(&hmHeight); double fX,fY; fX = (double)pDC->GetDeviceCaps(HORZRES)*(double)hmWidth/((double)pDC->GetDeviceCaps(HORZSIZE)*100.0); fY = (double)pDC->GetDeviceCaps(VERTRES)*(double)hmHeight/((double)pDC->GetDeviceCaps(VERTSIZE)*100.0); if(FAILED(pPic->Render(*pDC,0,0,(DWORD)fX,(DWORD)fY,0,hmHeight,hmWidth,-hmHeight,NULL))) AfxMessageBox("Failed To Render The picture!"); pPic->Release(); } else AfxMessageBox("Error Loading Picture From Stream!"); } } } else AfxMessageBox("Can't Open Image File!");} 可否用ActiveDesktop在桌面创建一个项目,类型是网页,网页内容是一个GIF? prettywolf(多情自古空余恨,此恨绵绵无绝期) :这样做gif是不动的,好像只能是第一帧。就是不会有动画。要有动画,是不是要做ontimer呢?谢谢 MFC小程序一运行就退出是什么原因? MFC中如何实现在桌面写上一行文字?帮我看看我的代码问题,初学者,望大家帮忙,谢谢! 如何自绘CListCtrl的滚动条? 急急急~ 关于mdi生产子窗体的问题,正确马上给分。一天在线 Carray数组的问题:添加的元素为什么丢失了,没有了添加的数据? 如何快速学习VC++? 大家一起来谈谈如何考高级程序员 从ODBC SQL数据类型得到对应的C数据类型 菜鸟向大家问好 在HOTKEY控件中当我按下键时,怎样得到它的ASC码? 串口通信问题
up阿
void CDesktopDlg::OnButton1()
{
CWindowDC dc(GetDesktopWindow());
ShowPic("d:\\hello.gif",&dc);
}void CDesktopDlg::ShowPic(char *filename, CDC *pDC)
{
IPicture *pPic;
IStream *pStm; CFileStatus fstatus;
CFile file;
LONG cb; if (file.Open(filename,CFile::modeRead)&&file.GetStatus(filename,
fstatus)&&
((cb = fstatus.m_size) != -1))
{
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb);
LPVOID pvData = NULL;
if (hGlobal != NULL)
{
if ((pvData = GlobalLock(hGlobal)) != NULL)
{
file.ReadHuge(pvData, cb);
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal, TRUE, &pStm); if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*
)&pPic)))
{
OLE_XSIZE_HIMETRIC hmWidth;
OLE_YSIZE_HIMETRIC hmHeight; pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight); double fX,fY;
fX = (double)pDC->GetDeviceCaps(HORZRES)*(double)hmWidth/((double)pDC->GetDeviceCaps(HORZSIZE)*100.0);
fY = (double)pDC->GetDeviceCaps(VERTRES)*(double)hmHeight/((double)pDC->GetDeviceCaps(VERTSIZE)*100.0);
if(FAILED(pPic->Render(*pDC,0,0,(DWORD)fX,(DWORD)fY,0,hmHeight,hmWidth,-hmHeight,NULL)))
AfxMessageBox("Failed To Render The picture!");
pPic->Release();
}
else
AfxMessageBox("Error Loading Picture From Stream!");
}
}
}
else
AfxMessageBox("Can't Open Image File!");
}
gif是不动的,好像只能是第一帧。就是不会有动画。要有动画,是不是要做ontimer呢?
谢谢