1 创建进度栏
BOOL Create (
DWOR?D dwStyle, //样式 PBS_VERTICAL(一格一格的样式) , SMOOTH(平滑的样式) , 还有另外的window styles
const RECT &rect, //位置 大小
CWnd *pParentWnd, //父窗口指针 如果进度栏放在一个任务栏窗格上,那么指针为该任务栏,进度栏的创建一定要在其父窗口创建完毕后再创建
UINT nID //该进度栏ID
);
eg.
CProgressCtrl progressBar;
CRrect rect(50, 50,
progressBar.Create(WS_CHILD | WS_VISIBLE | PBS_SMOOTH /*平滑的*/, rect, &statusBar /* 工具栏*/, ID_XXX);
2 设置两端范围
默认为0——100
void SetRange( short nLower, short nUpper);
void SetRange32( int nLower, int nUpper);
eg.
progressBar.SetRange(0, 100);
3 设置步长
?CProgressCtrl::SetStep
int SetStep(int nStep);
eg.
progressBar.SetStep(2); //设置每次进度2
4 进度变化
int St?epIt();
eg.
progressBar.StepIt(); //进度前进
5 设置进度栏进度在某个位置
int SetPos(int nPos);
eg.
progressBar.SetPos(55); //使进度栏到55位置
6 注意的问题
在实际使用的时候应该考虑到窗口重绘的问题,不能引起进度栏位置出错。如果进度栏的位置是放在一个控件之上,进度栏的坐标根据此控件位置确定, 那么应该注意:进度栏位置应该随着其父窗口变化而变化。
例如:进度栏放在状态栏某窗格之上,那么窗口重绘时, 应该重新取到窗格位置,调用MoveWindow() 或 SetWindowPos()函数重新放置进度栏。
void MoveWindow(int x,int y,int nWidth, int nHeight, BOOL bRepaint=TRUE);
void MoveWindow(LPCRECT lpRect, BOOL bRepaint = TRUE);
eg.
CRect rect(100, 150, 300, 180);
progressBar.MoveWindow(&rect); //移动进度栏到rect位置
一般情况下是把创建和随时改变进度栏的位置写到PAINT函数里,该函数会随着窗口重绘调用,也就能实时改变进度栏位置。
?