資源簡介
非常漂亮的MFC進度條程序,并且封裝成了類,可直接調用
代碼片段和文件信息
//?GradientProgressCtrl.cpp?:?implementation?file
#include?“stdafx.h“
#include?“GradientProgressCtrl.h“
#ifdef?_DEBUG
#define?new?DEBUG_NEW
#undef?THIS_FILE
static?char?THIS_FILE[]?=?__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//?CGradientProgressCtrl
CGradientProgressCtrl::CGradientProgressCtrl()
{
//初始化
m_nLower?=?0;
m_nUpper?=?100;
m_nCurrentPosition?=?0;
m_nStep?=?10;
//m_clrStart =?COLORREF(RGB(247?12834));
//m_clrEnd?= ?COLORREF(RGB(4523586));
//m_clrBkGround?=?::GetSysColor(COLOR_3DFACE);
//m_clrText?=?COLORREF(RGB(95?60?119));
//?
m_clrStart =?COLORREF(RGB(219?253255));
m_clrEnd?= ?COLORREF(RGB(00205));
m_clrBkGround?=?::GetSysColor(COLOR_3DFACE);
m_clrText?=?COLORREF(RGB(95?60?119));
m_bShowPercent?=?FALSE;
}
CGradientProgressCtrl::~CGradientProgressCtrl()
{
}
BEGIN_MESSAGE_MAP(CGradientProgressCtrl?CProgressCtrl)
//{{AFX_MSG_MAP(CGradientProgressCtrl)
ON_WM_PAINT()
ON_WM_ERASEBKGND()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//?CGradientProgressCtrl?message?handlers
void?CGradientProgressCtrl::OnPaint()?
{
CPaintDC?dc(this);?//?device?context?for?painting
//如果進度條的當前位置不正確,則漸變到背景色
if?(m_nCurrentPosition?<=?m_nLower?||?m_nCurrentPosition?>=?m_nUpper)
{
CRect?rect;
GetClientRect(rect);
CBrush?brush;
brush.CreateSolidBrush(::GetSysColor(COLOR_3DFACE));
dc.FillRect(&rect?&brush);
VERIFY(brush.Deleteobject());
return;
}
//獲得需要漸變的區域
CRect?rectClient;
GetClientRect(&rectClient);
float?maxWidth((float)m_nCurrentPosition/(float)m_nUpper?*?(float)rectClient.right);
//畫漸變顏色
DrawGradient(&dc?rectClient?(int)maxWidth);
//如果需要顯示百分數,則顯示
if?(m_bShowPercent)
{
CString?percent;
percent.Format(_T(“%.0f%%“)?100.0f*(float)m_nCurrentPosition/(float)m_nUpper);
dc.SetTextColor(m_clrText);
dc.SetBkMode(TRANSPARENT);
dc.DrawText(percent?&rectClient?DT_VCENTER?|??DT_CENTER?|?DT_SINGLELINE);
}
}
//設置進度條范圍
void?CGradientProgressCtrl::?SetRange(int?nLower?int?nUpper)
{
m_nLower?=?nLower;
m_nUpper?=?nUpper;
m_nCurrentPosition?=?nLower;
CProgressCtrl::SetRange(nLower?nUpper);
}
//設置進度條的位置
int?CGradientProgressCtrl::?SetPos(int?nPos)
{
m_nCurrentPosition?=?nPos;
return?(CProgressCtrl::SetPos(nPos));
}
//設置進度條的步長
int?CGradientProgressCtrl::?SetStep(int?nStep)
{
m_nStep?=?nStep;
return?(CProgressCtrl::SetStep(nStep));
}
int?CGradientProgressCtrl::?StepIt(void)
{
m_nCurrentPosition?+=?m_nStep;
return?(CProgressCtrl::StepIt());
}
//在適當區域畫漸變顏色
void?CGradientProgressCtrl::DrawGradient(CPaintDC?*pDC?const?RECT?&rectClient?const?int?&nMaxWidth)
{
RECT?rectFill; ???
float?fStep;??????????????
CBrush?brush;
CProgressMemDC?memDC(pDC);
//找到其實顏色和結束顏色之間的最大顏色值,決定漸變步長等
int?r?g?b;
float?rStep?gStep?bStep
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2015-09-21?14:35??MFCApplication5\
?????文件??????????88??2015-07-03?10:44??MFCApplication5\desktop.ini
?????目錄???????????0??2015-09-21?14:35??MFCApplication5\MFCApplication5\
?????文件?????????912??2015-06-09?11:43??MFCApplication5\MFCApplication5.sln
?????文件???????32768??2015-06-09?17:31??MFCApplication5\MFCApplication5.v11.suo
?????文件???????32768??2015-09-21?14:34??MFCApplication5\MFCApplication5.v12.suo
?????文件????????4333??2015-06-09?16:50??MFCApplication5\MFCApplication5\GradientProgressCtrl.cpp
?????文件????????2210??2015-06-09?11:48??MFCApplication5\MFCApplication5\GradientProgressCtrl.h
?????文件????????1747??2015-06-09?13:25??MFCApplication5\MFCApplication5\MemDC.h
?????文件??????108832??2015-06-09?13:36??MFCApplication5\MFCApplication5\MFCApplication5.aps
?????文件????????2485??2015-06-09?11:43??MFCApplication5\MFCApplication5\MFCApplication5.cpp
?????文件?????????496??2015-06-09?11:43??MFCApplication5\MFCApplication5\MFCApplication5.h
?????文件???????10694??2015-06-09?13:36??MFCApplication5\MFCApplication5\MFCApplication5.rc
?????文件????????6354??2015-09-21?14:34??MFCApplication5\MFCApplication5\MFCApplication5.vcxproj
?????文件????????2401??2015-06-09?11:49??MFCApplication5\MFCApplication5\MFCApplication5.vcxproj.filters
?????文件?????????164??2015-06-09?11:57??MFCApplication5\MFCApplication5\MFCApplication5.vcxproj.user
?????文件????????4563??2015-06-09?13:57??MFCApplication5\MFCApplication5\MFCApplication5Dlg.cpp
?????文件?????????837??2015-06-09?13:37??MFCApplication5\MFCApplication5\MFCApplication5Dlg.h
?????文件????????4188??2015-06-09?11:43??MFCApplication5\MFCApplication5\ReadMe.txt
?????目錄???????????0??2015-06-09?11:43??MFCApplication5\MFCApplication5\res\
?????文件????????1432??2015-06-09?13:34??MFCApplication5\MFCApplication5\resource.h
?????文件???????67777??2012-01-11?01:22??MFCApplication5\MFCApplication5\res\MFCApplication5.ico
?????文件?????????686??2015-06-09?11:43??MFCApplication5\MFCApplication5\res\MFCApplication5.rc2
?????文件?????????148??2015-06-09?11:43??MFCApplication5\MFCApplication5\stdafx.cpp
?????文件????????1578??2015-06-09?11:43??MFCApplication5\MFCApplication5\stdafx.h
?????文件?????????234??2015-06-09?11:43??MFCApplication5\MFCApplication5\targetver.h
- 上一篇:c++字典列表
- 下一篇:宇視科技2017C/C++開發筆試題
評論
共有 條評論