该功能主要是通过COM接口ITaskbarList3* 来实现进度效果显示功能。

头文件定义(CSWTaskBarList.h):

#pragma once#include <Windows.h>
#include <Shobjidl.h>
#include <Commctrl.h>
#pragma comment(lib, "Comctl32.lib")namespace sw {class CSWTaskBarList{typedef struct tagTASKBARBUTTON {HBITMAP       hBitmap;wchar_t*    szTip;UINT      ID;}TASKBARBUTTON;public:CSWTaskBarList();~CSWTaskBarList();private:HIMAGELIST      m_hImageList;                   // 按钮的图标ITaskbarList3*  m_pTaskBarlist;HWND         m_hWnd;public:// 关联窗体void Attach(HWND hWnd);// 添加按钮BOOL AddButton(TASKBARBUTTON* pButtonsInfo, UINT nButtons);// 设置进度void SetProgressValue(ULONGLONG ullCompleted, ULONGLONG ullTotal);// 设置状态void SetProgressState(TBPFLAG tbpFlags/* = TBPF_NOPROGRESS*/);};
}

源码实现(CSWTaskBarList.cpp):

#include "pch.h"
#include "CSWTaskBarList.h"using namespace sw;CSWTaskBarList::CSWTaskBarList()
{m_hImageList = ImageList_Create(16, 16, ILC_COLOR32 | ILC_MASK, 0, 0);
}CSWTaskBarList::~CSWTaskBarList()
{ImageList_Destroy(m_hImageList);
}// 关联窗体
void CSWTaskBarList::Attach(HWND hWnd)
{m_hWnd = hWnd;if (NULL == m_pTaskBarlist){CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_ALL,IID_ITaskbarList3, (void**)&m_pTaskBarlist);}m_pTaskBarlist->SetProgressState(m_hWnd, TBPF_INDETERMINATE);
}// 添加按钮
BOOL CSWTaskBarList::AddButton(TASKBARBUTTON* pButtonsInfo, UINT nButtons)
{THUMBBUTTON* pThumbButtons = (THUMBBUTTON*)malloc(nButtons * sizeof(THUMBBUTTON));DWORD dwMask = THB_BITMAP | THB_TOOLTIP | THB_FLAGS;for (UINT i = 0; i < nButtons; i++) {ImageList_Add(m_hImageList, pButtonsInfo[i].hBitmap, NULL);pThumbButtons[i].dwMask = (THUMBBUTTONMASK)dwMask;pThumbButtons[i].iId = pButtonsInfo[i].ID;pThumbButtons[i].iBitmap = 0;memset(pThumbButtons[i].szTip, 0, sizeof(wchar_t) * 260);CopyMemory(pThumbButtons[i].szTip, pButtonsInfo[i].szTip, sizeof(wchar_t) * wcslen(pButtonsInfo[i].szTip));pThumbButtons[i].dwFlags = THBF_ENABLED;}HRESULT hr = CoInitialize(NULL);hr = CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&m_pTaskBarlist));if (FAILED(hr))return FALSE;hr = m_pTaskBarlist->ThumbBarSetImageList(m_hWnd, m_hImageList);hr = m_pTaskBarlist->ThumbBarAddButtons(m_hWnd, nButtons, pThumbButtons);free(pThumbButtons);return TRUE;
}// 设置进度
void CSWTaskBarList::SetProgressValue(ULONGLONG ullCompleted, ULONGLONG ullTotal)
{m_pTaskBarlist->SetProgressValue(m_hWnd, ullCompleted, ullTotal);
}// 设置状态
void CSWTaskBarList::SetProgressState(TBPFLAG tbpFlags = TBPF_NOPROGRESS)
{m_pTaskBarlist->SetProgressState(m_hWnd, TBPF_NOPROGRESS);
}

VC++ 在任务栏图标上显示进度条效果相关推荐

  1. php flash上传进度条,PHP_PHP+FLASH实现上传文件进度条相关文件 下载,PHP之所以很难实现上传进度条 - phpStudy...

    PHP+FLASH实现上传文件进度条相关文件 下载 PHP之所以很难实现上传进度条是因为在我们上传文件到服务器的时候,要等到文件全部送到服务器之后,才执行相应的php文件.在这之前,文件数据保存在一个 ...

  2. jquery和php上传文件进度条,jQuery实现文件上传进度条特效_jquery

    上传进度条通常是由前面jquery加后端了脚本器脚本来实现了,今天我们介绍的是一款基本php+jQuery实现文件上传进度条效果的例子,具体细节如下. 最近呢,一个项目做一个进度条的效果出来,这个之前 ...

  3. html如何显示上传进度条,HTML5 Ajax文件上传进度条如何显示

    这篇文章主要介绍了HTML5 Ajax文件上传进度条是如何显示的,基于原生html5实现,不需要falsh支持,进度可以自定义显示,控制灵活,对HTML5上传进度条感兴趣的小伙伴们可以参考一下 原本打 ...

  4. 异步上传文件显示进度条

    异步上传文件显示进度条 原文地址:异步上传文件显示进度条 问题 我们在写网站时难免会遇到需要上传文件的场景,但当上传大文件时比如5个G的文件直接用表单直接提交文件会出现页面卡顿.未响应等影响用户体验的 ...

  5. 大文件上传 进度条显示(仿CSDN资源上传效果) .

    浏览-选择文件-点击 "上传 "后,效果如下: 弹出透明UI遮罩层 并显示上传这个过程 我这里设置太透明了 效果不是很立体 文件结构如图: 说明:用到"高山来客" ...

  6. django文件——django + jquery-file-upload上传篇(二)-- 插件实现文件上传+进度条显示 +拖入文件上传...

    django + jquery-file-upload 插件实现文件上传+进度条显示 1.model.py class Fujian(models.Model):name = models.CharF ...

  7. 大文件上传 进度条显示(仿CSDN资源上传效果)

    浏览-选择文件-点击 "上传 "后,效果如下: 弹出透明UI遮罩层 并显示上传这个过程 我这里设置太透明了 效果不是很立体 文件结构如图: 说明:用到"高山来客" ...

  8. VC下载文件 + 显示进度条

    在codeproject里找了许久,发现这样一个VC下载文件并显示进度条的源码,于是添加了些中文注释: 1.下载线程函数: UINT DownloadFile(LPVOID pParam) { CWn ...

  9. JavaWeb 使用ajax上传文件并显示进度条等上传信息

    文件上传在Web程序中是常用的功能,一般上传图片或者文件大小比较少的文件客户端不需要显示上传进度或文件上传的信息,如果是上传的文件比较大的时候,可以在客户端展示文件上传进度以及根据业务的需求显示文件上 ...

最新文章

  1. tf2运行YOLOv4(tflite)
  2. 常见运维漏洞-Rsync-Redis
  3. Java的scjp_java scjp
  4. sklearn计算两个向量之间的距离
  5. html中怎么实现广告自动出来又自动隐藏?,基于jquery实现的定时显示与隐藏div广告的实现代码...
  6. 【读书笔记】MongoDB管理与开发精要(1)
  7. 数据库:MySQL索引总结
  8. 【业务知识】企业数字档案馆总体架构图
  9. 【C++】 C++标准模板库(十二) 迭代器和STL
  10. 编码(2)从字节理解Unicode(UTF8/UTF16)
  11. GPU Gems2 - 2 使用基于GPU几何体裁剪图的地形渲染(Terrain Rendering Using GPU-Based Geometry Clipmaps)
  12. Java代码服务器上下载图片_Java如何从服务器中下载图片
  13. 人脸识别测试维度定义(欢迎大家拍砖并补充谢谢!)
  14. html table的边框线怎么变圆角_实现CSS3中的border-radius(边框圆角)示例代码
  15. 如何用wget指定位置?
  16. 微服务2.0时代,论其痛点与触点
  17. 由于找不到npptool.dll,无法继续执行代码
  18. 浅谈智能DNS云解析(二)
  19. python钉钉机器人定时发送消息服务器_用Python写一个定时提醒的钉钉机器人
  20. 天不生Tobler,万古GIS如长夜

热门文章

  1. Spark Core项目实战(3) | 页面单跳转化率统计
  2. 20种梦幻摄影调色luts预设
  3. 基于Yocto构建嵌入式Linux系统U-boot、kernel内核、rootfs文件系统
  4. easyx的使用(2)
  5. 基于web的教务管理系统-课程设计
  6. 【R语言】多模型综合——CLS(GRS)加权平均法的实现
  7. 第九章 科学、技术与工业
  8. 机房监控解析大全都在这里!
  9. 解决无法从公司 Maven 私服下载依赖的问题
  10. commander.js基本用法