0


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

  • 公开视频 -> 链接点击跳转公开课程
  • 博客首页 -> ​​​​​​链接点击跳转博客主页

进度条(ProgressBar)

使用场景
  • 文件下载或上传时显示进度。
  • 长时间运行的操作,如数据处理或搜索任务。
  • 表示安装程序的安装进度。
初始控件
  • 进度长度 - PBM_SETRANGE
  • 进度步长 - PBM_SETSTEP
  • 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。
// 设置进度条的位置到50%
SendMessage(hProgress, PBM_SETPOS, (WPARAM)50, 0);
示例代码
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;
    }
标签: windows c++ WIN32

本文转载自: https://blog.csdn.net/2301_80612536/article/details/140530780
版权归原作者 0xCC说逆向 所有, 如有侵权,请联系我们删除。

“Windows图形界面(GUI)-DLG-C/C++ - 进度条(ProgressBar)”的评论:

还没有评论