MFC_滑块控件使用

滑块控件:

SetRange设置范围

SetPos设置进度

GetPos获得当前进度

使用示例:

 

picture控件:关联变量:CStatic  m_Area;

文本框控件3个,关联变量(value型):

UINT  m_nRvalue;

UINT  m_nGvalue;

UINT  m_nBvalue;

进度条控件3个,关联变量(控件型):

CSliderCtrl  m_RSlider;

CSliderCtrl  m_GSlider;

CSliderCtrl  m_BSlider;

1、为对话框类添加成员变量:COLORREF  m_cColor;//颜色变量,COLORREF 是一个 32-bit 整型数值,它代表了一种颜色。你可以使用 RGB 函数来
                                    初始化 COLORREF。例如:COLORREF color=RGB(0,255,0);

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)//SB_THUMBTRACK表示拖动滑块时,消息会不停的发送直到释放鼠标,因此npos是不停变化的。SB_THUMBPOSITION则表示,拖动完后,消息会发送,因此nPos只保存最后的值。

    {

       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);

    m_clColor = RGB(m_nRValue, m_nGValue, m_nBValue);

    UpdateArea();

}

void CPickColorDlg::OnChangeRvalue()

{

    UpdateData(TRUE);

    m_RSlider.SetPos(m_nRValue);

    m_clColor = RGB(m_nRValue, m_nGValue, m_nBValue);

    UpdateArea();

}

void CPickColorDlg::OnChangeGvalue()

{

    UpdateData(TRUE);

    m_GSlider.SetPos(m_nGValue);

    m_clColor = RGB(m_nRValue, m_nGValue, m_nBValue);

    UpdateArea();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值