MFC控件(三)(进度条控件和滑块控件)

来源:互联网 发布:中兴端口查询mac 编辑:程序博客网 时间:2024/05/29 11:56

进度条控件

使用进度条显示操作进度:

进度条控件封装在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<nMaxValue; 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();

}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 缺氧没有金属了怎么办 白色衣服带红色怎么办 如果买方退回假货怎么办 饰品氧化变黑了怎么办 银放久了变黄怎么办 真银变色了怎么办 古装头饰变色了怎么办 液晶电视遥控器坏了怎么办 纯银手镯发黑怎么办 银色项链黑了怎么办 线切割割铜割不动怎么办 楼房一直不动工怎么办 买火车票待审核怎么办 太原动车月票怎么办 发票上没有日期怎么办 火车没有坐票怎么办 如果买到无座的火车票怎么办 动车票来不及去怎么办 火车票被洗了怎么办 进站后走错站台怎么办 高铁票迟到了怎么办 12306生日错了怎么办 账号未通过核验怎么办 高铁票购票失败怎么办 天际线没有人口需求怎么办 复兴号 锁 区间 怎么办 地板砖上铺木地板门怎么办 高考座位号没涂该怎么办 一个人带小孩很累很烦怎么办 收割机麦立怎么办漏 买到火车无座票怎么办 学高铁乘务员身高不够怎么办 动车买了无座票怎么办 坐火车无座怎么办 长途火车无座怎么办 火车无座行李怎么办 订不到高铁票怎么办 上车补票没票怎么办 极品飞车20很卡怎么办 12306登陆密码忘了怎么办 手机买成学生票怎么办