• CProgressCtrl 进度条显示百分比


    1.资源添加CProgressCtrl,添加变量m_proCtrl。

    2.添加类CMyProCtrl

    1)添加3个成员变量

        COLORREF m_colPro; // 进度条颜色
        COLORREF m_colBlank; // 空白区域颜色
        COLORREF m_colText; // 文字颜色

    2)重写WM_PAINT函数

    void CMyProCtrl::OnPaint()
    {
        //CPaintDC dc(this); // device context for painting
    
        // TODO: 在此处添加消息处理程序代码
        // 不为绘图消息调用 CProgressCtrl::OnPaint()
    
        PAINTSTRUCT ps;
        CDC *pdc = BeginPaint(&ps);
    
        // 获取进度
        int curPos = GetPos();
        // 字体
        CString strText;
        strText.Format(_T("%d%%"),curPos); // 如 10%
        // 获取客户区大小
        CRect rc;
        GetClientRect(&rc);
        // 获取文字大小
        CSize csText = pdc->GetTextExtent(strText);
        // 设置文字的x,y
        int nX = (rc.Width() - csText.cx)/2;
        int nY = (rc.Height() - csText.cy)/2;
        // 设置背景模式
        pdc->SetBkMode(TRANSPARENT); // 透明
    
        int max,min;
        GetRange(min,max); // 获取范围大小
        // 每一宽度所占比例:
        double every = (double)rc.Width()/(max-min);
        int now = every * curPos;
    
        // 设置进度条、空白区域
        CRect rcLeft,rcRight; // left 进度条; right 空白区域
        rcLeft = rcRight= rc;
        rcLeft.right = now;
        rcRight.left = now;
    
        // 填充颜色
        pdc->FillRect(rcLeft,&(CBrush)m_colPro); // 进度条颜色
        pdc->FillRect(rcRight,&(CBrush)m_colBlank); //空白区域
        
        // 设置文本颜色
        pdc->SetTextColor(m_colText);
    
        // 输出文本
        pdc->TextOut(nX,nY,strText);
        
        ReleaseDC(pdc);
        EndPaint(&ps);
    }

    3.把CProgressCtrl类型改为CMyProCtrl。

    4.OnInitDialog中添加定时器

    SetTimer(0,100,NULL);

    5.重载WM_TIMER函数

    void CCProgressCtrl1Dlg::OnTimer(UINT_PTR nIDEvent)
    {
        // TODO: 在此添加消息处理程序代码和/或调用默认值
    
        int pos = m_proCtrl.GetPos();
        m_proCtrl.SetPos(pos+1);
    
        CDialogEx::OnTimer(nIDEvent);
    }
  • 相关阅读:
    从零自学Java-10.充分利用现有对象
    读书笔记-读《代码大全》有感
    从零自学Java-9.描述对象
    从零自学Java-8.创建第一个对象
    随机森林理解
    百度 前端 rem 适配 和 阿里 前端 rem 适配
    移动端 轮播
    楼层 跟随 js与jq
    js 滚动到指定位置(带step 速度)
    js 事件流
  • 原文地址:https://www.cnblogs.com/sylar-liang/p/4170798.html
Copyright © 2020-2023  润新知