MFC 进度条颜色怎么设置?

::SendMessage(m_progress.GetSafeHwnd(),PBM_SETBARCOLOR,0,RGB(255,0,255));

最简单的是自己重绘。你的代码是老黄历,不适合xp以上启用了virtual style的情形。

http://blog.163.com/wenxianliang08@126/blog/static/83583263201412710599488/
这篇博客应该可以帮到你

1 建立基于对话框的应用程序,然后拖放一个进度条控件,并且关联CProgressCtrl类的变量m_Progress.

  1. 在 OnInitDialog() 函数里 定义一个定时器,以及设置进度条的一些参数,发送相关的消息

    SetTimer(1,1000,NULL);

    m_Progress.MoveWindow(100,10,20,200);

    m_Progress.SetRange(1,100);

    m_Progress.SetStep(5);

    m_Progress.SetPos(0);

    m_Progress.SendMessage(PBM_SETBKCOLOR, 0, RGB(0, 0, 0));//背景色

    m_Progress.SendMessage(PBM_SETBARCOLOR, 0, RGB(0, 255, 0));//前景色

  2. 添加定时器 WM_TIMER 消息响应函数
    void CMyProgressDlg::OnTimer(UINT nIDEvent)
    {

    // m_Progress.StepIt();
    int nPos=rand()%100; //根据随机数值 动态改变进度条的数值
    m_Progress.SetPos(nPos);
    CString str;
    str.Format("%d",nPos);
    SetDlgItemText(IDC_STATIC,str);
    CDialog::OnTimer(nIDEvent);
    }

瞧,是不是很简单呢,实现效果如下 背景颜色为黑色 前景颜色为绿色
MFC 如何改变进度条的颜色 - 阿浪 - 温先良--桂林理工大学

在项目过程中,需要实现根据 麦克风的接收的音量来动态调节 进度条的状态,这几天就要实现这个功能了。

PBM_SETBKCOLOR和PBM_SETBARCOLOR消息分别设置背景色和前景色。