如何为滑块控件指定负范围



我正在开发一个基于MFC的SDI VC++应用程序。在我的应用程序中,我需要为滑块控件指定负范围值。滑块的最小范围为 -40,最大范围为 255。我尝试使用设置范围函数。但它不起作用。如何在滑块中设置此范围?请帮忙..

我的滑块代码如下:滑块声明为

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

这里的问题是调试期间返回的值都是正确的。但是当涉及到运行 UI 时,编辑框中的最小值是 429496 而不是 -40。为什么会这样..我正在使用CFormView类开发SDI应用程序。

提前谢谢。

您的最小值是"-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了解更多详情。

调用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 控件:滑块(跟踪栏)。

最新更新