700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > MFC进度条重绘 (CProgressCtrl)

MFC进度条重绘 (CProgressCtrl)

时间:2023-07-19 14:03:36

相关推荐

MFC进度条重绘 (CProgressCtrl)

MFC进度条(CProgressCtrl) 重绘

先看一张图:

新建一个 继承自 CProgressCtrl 的类,然后添加 OnPaint 消息处理函数,此函数代码如下:

void CNewProgress::OnPaint(){CPaintDC dc(this);CBrush BackgroundBrush;BackgroundBrush.CreateSolidBrush(RGB(255,0,0)); CBrush ForeBrush;ForeBrush.CreateSolidBrush(RGB(100,255,0)); CRect r;this->GetClientRect(r);double With=r.Width();int min,max;this->GetRange(min,max);int pos= this->GetPos();double unit=(double)r.Width()/(max-min);dc.FillRect(r,&BackgroundBrush); r.right=pos*unit; dc.FillRect(r,&ForeBrush); }

这样就实现了 CProgressCtrl 重绘。

如果你想在 进度条中 添加 用鼠标左键单击,然后到指定的位置,这一功能,就要再添加对OnLButtonDown 消息的处理。代码如下:

void CNewProgress::OnLButtonDown(UINT nFlags, CPoint point){ CRect r;this->GetClientRect(r);double With=r.Width();int min,max;this->GetRange(min,max); double unit=(double)(max-min)/r.Width(); //int pos= point.x*unit;this->SetPos(pos);CProgressCtrl::OnLButtonDown(nFlags, point);}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。