当前位置: 首页 > 图文教程 > 开发语言 > VC++ > 如何在标题栏中显示动态图标

VC++
在Dialog中使用Menu和Toolbar
如何定制对话框中的回车键
再谈 Windows 2000 “打开”文件对话框
Windows2000新型Open对话框的使用
Windows SDK 非模态对话框的消息处理
VC6中使用CHtmlView在对话框控制中显示HTML文件
Windows 2000 UI 新特点之四:其他类型的外壳扩展
Windows 2000 UI 新特点之二:自定义文件夹栏目
Windows 2000 UI 新特点之三:搜索管理器
Windows 2000 UI 新特点之一:信息条提示(Infotip)
数据库异步操作(ADODB)
VC++:小编谈自动注册数据源(DSN)
VC++:小编分享面向对象特征及其优点
VC++:VC++中Windows 3.x的协同多任务
VC++:小编浅谈VC++中的CRecordset类
VC++:小编浅谈ODBC概念,了解ODBC不在是难事
VC++:小编谈用ODBC创建表
VC++:小编浅谈用DAO创建表
VC++:浅析VC++中传统控件的控件通知消息
VC++:小编浅谈静态控件

VC++ 中的 如何在标题栏中显示动态图标


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 130 ::
收藏到网摘: n/a

如何在标题栏中显示动态图标
作者:重庆建设集团一所 唐星彬

下载本文示例代码



一般情况下,程序中的标题栏的图标是静态的。那么如何让标题栏中的图标动起来呢。原理很简单,那就是做一系列的图片,让图片按顺序交替显示,图标就像动起来一样。现在动手来做吧!
1.新建一个CAnimateIcon类
a.AnimateIcon.h如下:

class CAnimateIcon{  protected:	//创建一个列表变量,用于保存图像列 	CImageList m_imgList;	//当前图像序号	int m_iImageCounter;	//图像总数	int m_iMaxNumOfImages;	HICON hIcon;	HICON hPrevIcon;  public:	CAnimateIcon();	~CAnimateIcon();	bool SetImageList(int IDOfImageListResource,int numberOfImages,COLORREF transparentColor);	bool ShowNextImage();};
b.AnimateIcon.cpp如下:
#include "StdAfx.h"#include "AnimateIcon.h"CAnimateIcon::CAnimateIcon(){	m_iImageCounter=-1;	m_iMaxNumOfImages=-100;	m_imgList.m_hImageList=NULL;	}CAnimateIcon::~CAnimateIcon(){	DestroyIcon(hPrevIcon);}//初始化图像列表bool CAnimateIcon::SetImageList(int IDOfImageListResource,	int numberOfImages,COLORREF transparentColor){	if(numberOfImages<=0)	return false;	m_iMaxNumOfImages=numberOfImages;	VERIFY(m_imgList.Create(IDOfImageListResource,16,1,transparentColor));	return true;}bool CAnimateIcon::ShowNextImage(){	if(m_imgList.m_hImageList==NULL)	return false;	m_iImageCounter++;	if(m_iImageCounter>=m_iMaxNumOfImages)	m_iImageCounter=0;	hIcon=m_imgList.ExtractIcon(m_iImageCounter);	HICON hPrevIcon=(HICON)AfxGetMainWnd()->SetIcon(hIcon,false);	DestroyIcon(hPrevIcon);	return true;}

2.创建一个基于对话框的程序:
加入一个WM_TIMER消息处理函数
void CAnimateDlgIconDlg::OnTimer(UINT nIDEvent) {    //调用成员函数显示图片	m_animIcon.ShowNextImage();	CDialog::OnTimer(nIDEvent);}
在主对话框中的InitInstance中
//初始化图像列表m_animIcon.SetImageList(IDB_BITMAP_ANIM,6,RGB(0,0,0));//设置图像更换时间为500毫秒m_timerID=this->SetTimer(99,500,NULL);
在VC6.0+WIN2000+SP3编译通过!
参考文献:Visual C++编程疑难详解