- 公开视频 -> 链接点击跳转公开课程
- 博客首页 -> 链接点击跳转博客主页
目录
进度条(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;
}