My FAQ,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual C++ > WINDOWS窗口视图
如何在标题栏中显示动态图标
作者:未知 时间:2005-07-20 14:13 出处:VC知识库 责编:MyFAQ
              摘要:如何在标题栏中显示动态图标

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

下载本文示例代码



一般情况下,程序中的标题栏的图标是静态的。那么如何让标题栏中的图标动起来呢。原理很简单,那就是做一系列的图片,让图片按顺序交替显示,图标就像动起来一样。现在动手来做吧!
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++编程疑难详解
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 myfaq.com.cn All rights reserved. www.myfaq.com.cn 版权所有