转自 cffishappy
进度条控件
使用进度条显示操作进度:
进度条控件封装在CProgressCtrl类中。
1、
SetRange和SetRange32方法用来设置进度条显示范围。
语法格式:
void SetRange(short nLower, short nUpper);
void SetRange32(int nLower, int nUpper);
nLower:最小值,默认0;
nUpper:最大值。
SetRange方法设置进度条范围在短整型范围,SetRange32可在整数范围。
2、
设置进度条进度:SetPos方法
int SetPos(int nPos);
nPos:表示设置的新进度。返回值为之前的进度。
3、
获得进度条进度:GetPos方法
int GetPos();
返回值为当前显示进度。
示例:
静态文本控件变量:CStatic m_Number;
进度条控件变量:CProgressCtrl m_Progress;
按钮单击事件:OnStart
void CProgressDemoDlg::OnStart()
{
const int nMaxValue = 99999;
m_Progress.SetRange32(0,nMaxValue);
for(int i = 0; i { m_Progress.SetPos(i); char szNumber[20] = {0}; itoa(i, szNumber, 10); m_Number.SetWindowText(szNumber); } } 注: itoa方法:将整数转化为字符串 第三个参数:表示进制。(上例为十进制) 滑块控件: 与进度条控件使用类似: SetRange设置范围 SetPos设置进度 GetPos获得当前进度 使用示例: picture控件:框架类型 关联变量:CStatic m_Area; 文本框控件关联变量: UINT m_nRvalue; UINT m_nGvalue; UINT m_nBvalue; 进度条控件关联变量: CSliderCtrl m_RSlider; CSliderCtrl m_GSlider; CSliderCtrl m_BSlider; 1、为对话框类添加成员变量:COLORREF m_cColor; 2、对话框初始化时: m_RSlider.SetRange(0,255); m_GSlider.SetRange(0,255); m_BSlider.SetRange(0,255); m_cColor = RGB(0,0,0); 3、为对话框类添加WM_HSCROLL消息响应函数,进度条滑动时就会响应。 (若是竖直进度条,则添加WM_VSCROLL响应函数) void CPickColorDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { if (nSBCode == SB_THUMBTRACK) { if (pScrollBar->m_hWnd == m_RSlider.m_hWnd) { m_nRValue = nPos; UpdateData(FALSE); } if (pScrollBar->m_hWnd == m_GSlider.m_hWnd) { m_nGValue = nPos; UpdateData(FALSE); } if (pScrollBar->m_hWnd == m_BSlider.m_hWnd) { m_nBValue = nPos; UpdateData(FALSE); } } m_clColor = RGB(m_nRValue, m_nGValue, m_nBValue); UpdateArea(); CDialog::OnHScroll(nSBCode, nPos, pScrollBar); } 4、上面提到的UpdateArea()函数,用于更新图片控件区域的颜色显示 需要在对话框类中添加成员函数: public: void UpdateArea() 代码如下: void CPickColorDlg::UpdateArea() { CDC* pDC = m_Area.GetDC(); CRect clientRC; m_Area.GetClientRect(clientRC); pDC->FillRect(clientRC,&CBrush(m_cColor)); m_Area.ReleaseDC(pDC); } 5、OnPaint()中也要添加UpdateArea(); 6、为文本框控件添加EN_CHANGE消息响应函数。(当更改文本框内容时,滑块和Picture控件要做出相应响应) 代码如下: void CPickColorDlg::OnChangeBvalue() { UpdateData(TRUE); m_BSlider.SetPos(m_nBValue); UpdateArea(); } void CPickColorDlg::OnChangeRvalue() { UpdateData(TRUE); m_RSlider.SetPos(m_nRValue); UpdateArea(); } void CPickColorDlg::OnChangeGvalue() { UpdateData(TRUE); m_GSlider.SetPos(m_nGValue); UpdateArea(); }