Windows图形界面(GUI)-DLG-C/C++ - 进度条(ProgressBar)

目录

进度条(ProgressBar)

使用场景

初始控件

控件消息

示例代码


进度条(ProgressBar)

使用场景
  • 文件下载或上传时显示进度。
  • 长时间运行的操作,如数据处理或搜索任务。
  • 表示安装程序的安装进度。
初始控件
  • 进度长度 - PBM_SETRANGE
  • 进度步长 - PBM_SETSTEP
cpp 复制代码
case WM_INITDIALOG:
{
    HWND hProgress = GetDlgItem(hDlg, IDC_MYPROGRESS);
    SendMessage(hProgress, PBM_SETRANGE, 0, MAKELPARAM(0, 100)); // 进度范围从0到100
    return (INT_PTR)TRUE;
}
控件消息
  • 设置进度条的当前位置 - PBM_SETPOS。
cpp 复制代码
// 设置进度条的位置到50%
SendMessage(hProgress, PBM_SETPOS, (WPARAM)50, 0);
示例代码
cpp 复制代码
HWND hProgress;
void UpdateMemoryInfo()
{
	MEMORYSTATUSEX memInfo = { 0 };
	memInfo.dwLength = sizeof(MEMORYSTATUSEX);
	GlobalMemoryStatusEx(&memInfo);

	DWORDLONG totalMem = memInfo.ullTotalPhys;
	DWORDLONG useMem = totalMem - memInfo.ullAvailPhys;
	DWORDLONG percent = useMem * 100 / totalMem;

	SendMessage(hProgress, PBM_SETPOS, (WPARAM)percent, 0);
}

	case WM_INITDIALOG:
	{
		// 初始环境
		INITCOMMONCONTROLSEX initComm = { 0 };
		initComm.dwSize = sizeof(INITCOMMONCONTROLSEX);
		initComm.dwICC = ICC_WIN95_CLASSES;
		InitCommonControlsEx(&initComm);
		
		// 初始控件
		hProgress = GetDlgItem(hwnd, IDC_PROGRESS3);
		SendMessage(hProgress, PBM_SETRANGE, 0, MAKELPARAM(0, 100));

		#define IDT_UPDATA_TIMER 1000
		SetTimer(hwnd, IDT_UPDATA_TIMER, 1000, NULL);

		return TRUE;
	}

	case WM_TIMER:
	{
		switch (wParam)
		{
			case IDT_UPDATA_TIMER:
			{
				INT nPos = SendMessage(hProgress, PBM_GETPOS, 0, 0);
				nPos = (nPos + 10) % 100;
				SendMessage(hProgress, PBM_SETPOS, (WPARAM)nPos, 0);
				//UpdateMemoryInfo();
				break;
			}
		}
		
		return TRUE;
	}
相关推荐
倒头就睡的小比特8 小时前
算法竞赛C++常用的STL
c++·算法
weilx12348 小时前
C++笔记-文件IO-<fcntl.h>
c++
小羊没烦恼!8 小时前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
rockmelodies8 小时前
# Windows Server2008 R2 Standard(SP1镜像U盘)重置本地管理员密码【完整详细步骤】
windows·密码破解
Smileyqp沛沛9 小时前
前端?C++ ?较大差异基础罗列
c++·基础·前端转c++
C语言小火车10 小时前
C/C++ 为什么需要编译器?
开发语言·c++
旖旎夜光10 小时前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
吞下星星的少年·-·11 小时前
C++ 萌新语法入门篇
c++·算法比赛
霍霍的袁11 小时前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
another heaven11 小时前
【算法/C++ MD5算法能否逆解码?原理、C++实现与同类哈希算法对比】
c++·算法·哈希算法