在WINCE下创建一个动态显示图片的窗口并非难事,大概思路为:
1、 创建一个窗口。
2、 创一个内存DC,用存放要显示的图片。
3、 创建一个线程相隔一段时间将图片将绘制到屏幕DC上。
但是要将其封装在一个类中却并非一件容易的事情,为了以后方便使用我在这里封装一下。
介绍一下这个类的使用方法:
//定义一个窗口属性:
namespace AnimateWnd
{
struct Property
{
TSTRING strBkImage; //要显示图片的路径
RECT rcImagePosition; //要显示图片中区域
RECT rcDrawPosition; //窗口的位置
DWORD dwCount; //显示的帧数
DWORD dwTimeOut; //每帧的间隔时间
BOOL bVertical; // 图片是否为垂直的切割
};
}
//定义一个窗口对象
CAnimateWnd g_AnimateWnd;
//初始化窗口属性
AnimateWnd::Property pro;
RECT Drawrect = {80,27,401,200};
RECT Imagerect={0,0,1920,177};
pro.dwCount = 6;
pro.dwTimeOut = 300;
pro.rcDrawPosition = Drawrect;
pro.rcImagePosition = Imagerect;
pro.bVertical = FALSE;
pro.strBkImage = TEXT("//NAND//WinCeTemplate//1.bmp");
// 调用成员函数设置窗口属性
g_AnimateWnd.SetProperty(pro);
//调用成员函数创建窗口.其中hWnd是父窗口的句柄,如果没有父窗口的话直接设置为NULL
//TEXT("ANIMATE_CLS")为窗口类名,TEXT("ANIMATE_NAME")为窗口名.
g_AnimateWnd.Create(hWnd,TEXT("ANIMATE_CLS"),TEXT("ANIMATE_NAME"));
//调用成员函数显示窗口
g_AnimateWnd.ShowWindow(TRUE);
//调用成员函数动态显示图片
g_AnimateWnd.Start();
经过以上几步工作,我们的动态窗口显示的工作就完成了!
//Header.h
//WndBase.h
//WndBase.cpp
//EventThread.h
//EventThread.cpp
//AnimateWnd.h
//AnimateWnd.cpp
其中代码中CMemDC类的实现在http://blog.csdn.net/lanyzh0909/archive/2010/08/07/5795590.aspx有实现代码.
测试代码: