MFC_Progress_Slider_Spin

1、Slider控件使用WM_HSCROLL消息进行响应

void CMFC_progressDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    CSliderCtrl *pSlider = (CSliderCtrl*)GetDlgItem(IDC_SLIDER1);
    CProgressCtrl *pProgress = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);
    pProgress->SetPos(pSlider->GetPos());
    CString ProcessStr;
    ProcessStr.Format(L"%d", pSlider->GetPos());
    SetDlgItemText(IDC_STATIC, ProcessStr);

    CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);
}

  其中Slider中的WM_HSCROLL消息的nPos是有一定问题的,不要使用,使用上面的获取方法就行,记得对指针进行释放。

2、Spin控件使用WM_VSCROLL消息进行响应

void CMFC_progressDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    m_spin = nPos;
    CString str;
    str.Format(L"%d", m_spin);
    SetDlgItemText(IDC_STATIC2, str);

    CDialogEx::OnVScroll(nSBCode, nPos, pScrollBar);
}

  Spin的WM_VSCROLL消息可以用nPos参数。也可以使用1中的方法进行获取。

3、三个控件的初始化:

   CProgressCtrl *pProgress = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);
    pProgress->SetRange(0, 1000);
    pProgress->SetPos(500);
    CSliderCtrl *pSlider = (CSliderCtrl*)GetDlgItem(IDC_SLIDER1);
    pSlider->SetRange(0, 1000);
    pSlider->SetPos(500);
    CSpinButtonCtrl *pSpin = (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN1);
    pSpin->SetRange(0, 1000);
    pSpin->SetPos(m_spin);
    CString str;
    str.Format(L"%d", m_spin);
    SetDlgItemText(IDC_STATIC2, str);

  可以看出,初始化方法都是一样的,更多信息可以查阅MSDN。

posted @ 2017-08-29 10:49  _xiaohaige  阅读(430)  评论(0编辑  收藏  举报