用线程实现动态改变图标
用线程实现动态改变图标
作者:cj_ict
下载本文示例代码
前几天看了一个《如何在标题栏中显示动态图标》文章,作者为重庆建设集团一所 唐星彬。觉得用SetTimer实现起来麻烦,且占用资源。手头一痒将其改为线程实现,并且把线程封装在类里。使用简单,不需要设置SetTimer在OnTimer函数里调用。只需直接调用
m_animIcon.SetImageList(IDB_BITMAP_ANIM,6,RGB(0,0,0)); m_animIcon.Draw(this);
即可。
程序其他部分,是采用唐星彬的,我只是把有OnTimer实现的部分,改成用线程实现。
class CAnimateIcon { protected: //创建一个列表变量,用于保存图像列 CImageList m_imgList; //当前图像序号 int m_iImageCounter; //图像总数 int m_nMaxNumOfImages; //关闭线程 bool m_bExit; //拥有图标的窗口的窗口类指针 CWnd * m_pWnd; //图标刷新间隔 DWORD m_dwMilliseconds; public: void ChangeInterval(DWORD dwTimes);//改变图标刷新时间间隔 BOOL Draw(CWnd *pWnd,DWORD dwTimes=1000); CAnimateIcon(); ~CAnimateIcon(); bool SetImageList(int IDOfImageListResource,int numberOfImages,COLORREF transparentColor); protected: static UINT WINAPI _ThreadAnimation(LPVOID pParam); }; BOOL CAnimateIcon::Draw(CWnd *pWnd,DWORD dwTimes) { //拥有图标的窗口的窗口类指针 m_pWnd=pWnd; ASSERT(m_pWnd); //图标刷新间隔 m_dwMilliseconds=dwTimes; unsigned int nDummy; //注意:传递给线程本实例的指针 HANDLE hThread = (HANDLE) _beginthreadex(NULL,0,_ThreadAnimation,this, CREATE_SUSPENDED,&nDummy); if (!hThread) { TRACE(_T("Draw: Couldn''t start a ICON animation thread/n")); return false; } else { ResumeThread(hThread); } CloseHandle(hThread);//不再需要线程句柄,将其关闭 return true; } UINT WINAPI CAnimateIcon::_ThreadAnimation(LPVOID pParam) { //从传递过来的实例指针,可以操作不同的实例, //注意线程函数是唯一和静态的。 CAnimateIcon &p=*(CAnimateIcon *)pParam; while(!p.m_bExit){ if(p.m_imgList.m_hImageList==NULL) return 0; p.m_iImageCounter++; if(p.m_iImageCounter>=p.m_nMaxNumOfImages) p.m_iImageCounter=0; HICON hIcon=p.m_imgList.ExtractIcon(p.m_iImageCounter); HICON hPrevIcon=(HICON)p.m_pWnd->SetIcon(hIcon,false); DestroyIcon(hPrevIcon); Sleep(p.m_dwMilliseconds); } return 1; }
在VC6.0+WIN2000+SP3编译通过!
用线程实现动态改变图标相关推荐
- mpvue微信小程序中使用svg图标,并通过代码动态改变图标颜色
微信小程序,mpvue中使用svg图标,并通过代码改变图标颜色 本文主要是mpvue开发小程序的代码,不过微信小程序原生开发应该也是一样的,思路都是通用的,按照这个思路微信小程序原生开发一样可以实现同 ...
- android 动态改变图标颜色
关键点 获取目标图标的所有像素点 验证像素点的alpha值,是否透明 在不透明的像素点上修改为我们想要的颜色 根据输入的颜色值改变图标颜色 final EditText et = findViewBy ...
- Android 动态改变桌面图标
其实很简单,利用 AndroidManifest.xml 文件中的 <activity-alias> 标签即可实现. <activity-alias> 介绍 大家知道,对于 A ...
- iOS 动态改变应用图标
整这东西整了一晚上,国内关于技术的文章实在是太不严谨了,小细节导致我走了很多弯路,最后在国外网站上找到的正确答案 参阅 https://www.hackingwithswift.com/example ...
- html动态资源加载进度,JavaScript_快速解决js动态改变dom元素属性后页面及时渲染的问题,今天实现一个进度条加载过程 - phpStudy...
快速解决js动态改变dom元素属性后页面及时渲染的问题 今天实现一个进度条加载过程,dom结构其实就是两个div 控制里层div的宽width属性,就能实现进度条往前走的效果. 我的进度条是显示下载文 ...
- 桌面html布局,利用自定义桌面和HTML打造动态桌面图标
建站学院(LieHuo.Net)技术文档电脑桌面对于大家来说并不陌生,每天打开计算机第一个映入眼帘的就是电脑桌面.漂亮的桌面可以使人心情愉悦.从一开始的静态桌面壁纸到现在的动态桌面壁纸,从最早的白色默 ...
- Electron无边框窗口(最小化、最大化、关闭、拖动)以及动态改变窗口大小
文章目录 一.目标原型 1. 目标 2. 原型设计 3. 原型初步实现 二.无边框窗口 1. 要点 2. 改造 三.可拖拽区 1. 要点 2. 改造 四.最小化.最大化.关闭 1. 要点 2. 改造 ...
- android改变图标颜色
同一个图标,但是可能会有多种背景颜色.比如,标识空气质量的图标,因空气质量有多种情形,对应的图标就有多种背景颜色. 实现这种需求有两种方式: 1.针对每一种情形,切一张对应的图标. 2.只切一张图标, ...
- 百度地图 自定义覆盖物 自定义字体图标 动态修改图标颜色
实现效果: 图标用的是字体图标,为了方便动态改变颜色 关键代码 function ComplexCustomOverlay(params) {let defaultParams = {point: { ...
最新文章
- iis5.1配置php5.3.1详解,WinXP IIS 5.1 PHP 5.3 VC9.0 配置详解
- 如何搭建mysql的学习环境_Mysql学习笔记【一、环境安装配置】
- Vue学习笔记第一天--es6
- 数据中心的运维管理原则(二)
- minikube配置使用代理
- IAR切BANK--程序中的使用
- cacti 监控安装失败
- Apache Flink 在汽车之家的应用与实践
- pandas-事例练习
- python网盘系统_python做系统
- 【Vegas原创】远程桌面下重启xp系统的命令
- 转 @PathVariable是什么?详情及用法解析
- windows和linux 下将tomcat注册为服务
- 死磕 Java8 新特性,17 种日期处理方式!
- 计算机关于剪贴板的知识,如何打开电脑剪贴板图文教程
- android 通知写法_Android消息通知-Notifation
- docker 运行命令
- 小米手机是什么系统?
- MacOS技巧|Mac如何自定义触控栏Touch Bar?显示Touch Bar教程
- 心理学综述类期刊介绍|《New Ideas In Psychology》