我正在开发基于MFC的SDI VC ++应用程序。在我的应用程序中,我需要为Slider Control指定负范围值。 Slider的最小范围是-40,最大范围是255.我使用SetRange函数尝试了它。但它没有用。如何在滑块中设置此范围?请帮助..
我的Slider代码如下: 滑块被声明为
CSliderCtrl m_ctrlECTSlider;
OnInitialUpdate函数包含
m_ctrlECTSlider.SetRangeMin(-40);
int iValMin = m_ctrlECTSlider.GetRangeMin();
m_ctrlECTSlider.SetRangeMax(255);
int iValMax = m_ctrlECTSlider.GetRangeMax();
m_ctrlECTSlider.SetPos(0);
SetDlgItemInt( IDC_ECT_VALUE, m_ctrlECTSlider.GetPos(), FALSE);
SetDlgItemInt( IDC_MIN_ECT, iValMin, FALSE);
SetDlgItemInt( IDC_MAX_ECT, iValMax, FALSE);
OnBnClickedSet函数包含
int nMin = GetDlgItemInt(IDC_MIN_ECT, 0, FALSE);
int nMax = GetDlgItemInt(IDC_MAX_ECT, 0, FALSE);
m_ctrlECTSlider.SetRange(nMin, nMax);
m_ctrlECTSlider.SetPos(nMin);
int pos = m_ctrlECTSlider.GetPos();
SetDlgItemInt(IDC_ECT_VALUE, m_ctrlECTSlider.GetPos(), FALSE);
m_ctrlECTSlider.RedrawWindow();
这里的问题是debugg期间返回的值都是正确的。但是当涉及到运行最小值的UI是429496而不是编辑框中的-40。为什么会这样......我正在使用CFormView类开发SDI应用程序..
提前致谢。
答案 0 :(得分:2)
你的最小值是'-40',它是有符号整数,你作为无符号整数处理为'SetDlgItemInt'的最后一个参数,'GetDlgItemInt'方法是'FALSE'。 这就是为什么你得到错误的价值代替'-40'。 使用以下代码来确保正确的行为。
//用于设置值
SetDlgItemInt(IDC_ECT_VALUE,m_ctrlECTSlider.GetPos(),TRUE);
SetDlgItemInt(IDC_MIN_ECT,iValMin,TRUE);
SetDlgItemInt(IDC_MAX_ECT,iValMax,TRUE);
//如何获得价值使用
int nMin = GetDlgItemInt(IDC_MIN_ECT,0,TRUE);
int nMax = GetDlgItemInt(IDC_MAX_ECT,0,TRUE);
您可以使用此链接http://msdn.microsoft.com/en-us/library/c7t43w0s%28v=vs.90%29.aspx 了解更多详情。
答案 1 :(得分:0)
将void SetRangeMin(int nMin, BOOL bRedraw = FALSE);
称为:
m_Slider.SetRangeMin(0);
并将void SetRangeMax(int nMax, BOOL bRedraw = FALSE);
称为:
m_Slider.SetRangeMax(50);
在致电GetPos()
之前,通过调用VerifyPos()
这是关于MFC滑块的好教程 - Windows Controls: Sliders (Track Bars)。