如何在我的原生Win32应用程序中将动画GIF放到我的对话框中?
我有一个加载指示器和一个加载过程。
谢谢: - )
答案 0 :(得分:6)
不确定GDI +是否可以被视为原生win32。如果您可以使用它,请查看以下示例:CodeProject
答案 1 :(得分:5)
您可以使用Animation Control。您必须将.gif转换为.avi。
答案 2 :(得分:3)
很容易使用GdiPlus加载各种图像格式,包括jpeg,gif(动画),png等。
此代码演示了如何将单帧图像快速加载到HBITMAP中: -
#include <gdiplus.h>
#pragma comment(lib,"gdiplus.lib")
using namespace Gdiplus;
HBITMAP LoadImageWithGdiPlus(LPCTSTR pszPngPath)
{
Image image(pszPngPath);
int width = image.GetWidth();
int height = image.GetHeight();
BITMAPINFO bmi;
bmi.bmiHeader.biBitCount = 32;
bmi.bmiHeader.biClrImportant = 0;
bmi.bmiHeader.biClrUsed = 0;
bmi.bmiHeader.biCompression = BI_RGB;
bmi.bmiHeader.biHeight = height;
bmi.bmiHeader.biPlanes = 1;
bmi.bmiHeader.biSize = sizeof (bmi.bmiHeader);
bmi.bmiHeader.biSizeImage = 0; //calc later
bmi.bmiHeader.biWidth = width;
bmi.bmiHeader.biXPelsPerMeter = 0;
bmi.bmiHeader.biYPelsPerMeter = 0;
BYTE* pBmp = NULL;
HBITMAP hbm = CreateDIBSection(NULL,&bmi,DIB_RGB_COLORS,(void**)&pBmp,NULL,0);
HDC hdc = CreateCompatibleDC(NULL);
HGDIOBJ hobj = SelectObject(hdc,hbm);
Graphics graphics(hdc);
graphics.DrawImage(&image,0,0);
SelectObject(hdc,hobj);
DeleteDC(hdc);
return hbm;
}
答案 3 :(得分:0)
由于你在这个问题上的时间紧迫,我搜索了一个工作示例来为win32上的gif动画制作,我在cplusplus.com找到了一个不错的实现。
Juan Soulie称之为GIF View [直接链接]。
答案 4 :(得分:0)
实现计时器以更改显示的内容非常简单。您可以设置一个文本块,其中没有文本,背景颜色,只需更改大小。它看起来像一个膨胀的彩色条,开销很小。