有关slider控件的郁闷问题

没事就来看看 2011-12-18 06:32:52
我的工程是基于单文档的,在视类窗口里放了一个slider控件(属性垂直),在调试的过程中发现,我用鼠标点着滑块向上或向下推动时,滑块移动一下步进长是2,不是一我在初始化函数里设置m_pSlider.SetLineSize(1);移动是步进还是2.这是什么原因,很纳闷。(我又单独建了一个工程,移动的时候步进在有的数据间是2有的数据间步进是1,很纳闷啊,我又建第三个结果好使)这个问题搞得我好头疼啊 请高手指点。我的部分代码如下:

void CDspEditorView::OnInitialUpdate()
{
m_pSlider.SetRange(-120,24); //初始化滑动控件的取值范围
m_pSlider.SetTicFreq(18); //每隔18的单位划一刻度线
m_pSlider.SetLineSize(1);
}

void CDspEditorView::OnCustomdrawSlider(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
float dis_value;
// int a;
UpdateData();//更新对话框
LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);//
dis_value=(float)(0.5*m_pSlider.GetPos());
m_pdctr.SetFont(&font,TRUE);
m_pdEite.Format("%.1f",dis_value);
font.DeleteObject();
UpdateData(FALSE);

*pResult = 0;
}
...全文
126 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
没事就来看看 2011-12-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 shen_wei 的回复:]
范围定在(-120,24)然后我在获得的值乘以0.5就达到要求了..

那你这样使用不就行了!Slider也就是获取值,只有获取到了值,你就不用管Slider的范围。
[/Quote]

但是现在问题是我稍微一动一下滑块,滑块获得的值不是一一个步长而是一动就是两个步长。(如:调试稍微动一下滑块他获取的值是-120,-118,-116....20,2,,,24而不是-120,-119,-118....23,24,这样现实的值才是-60,-59.5,-50....11,11.5,12,最后我把放置在对话框中的slider控件放大了它就是步长为一了,现在是我的控件大小不能改变了 由于开始的设计,所以不知道该怎么弄)
没事就来看看 2011-12-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 shen_wei 的回复:]
范围定在(-120,24)然后我在获得的值乘以0.5就达到要求了..

那你这样使用不就行了!Slider也就是获取值,只有获取到了值,你就不用管Slider的范围。
[/Quote]

但是现在问题是我稍微一动一下滑块,滑块获得的值不是一一个步长而是一动就是两个步长。(如:调试稍微动一下滑块他获取的值是-120,-118,-116....20,2,,,24而不是-120,-119,-118....23,24,这样现实的值才是-60,-59.5,-50....11,11.5,12,最后我把放置在对话框中的slider控件放大了它就是步长为一了,现在是我的控件大小不能改变了 由于开始的设计,所以不知道该怎么弄)
shen_wei 2011-12-19
  • 打赏
  • 举报
回复
m_Silder.SetRange(0,10);
m_Silder.SetTicFreq(1);

每次都是一格。。。
shen_wei 2011-12-19
  • 打赏
  • 举报
回复
范围定在(-120,24)然后我在获得的值乘以0.5就达到要求了..

那你这样使用不就行了!Slider也就是获取值,只有获取到了值,你就不用管Slider的范围。
没事就来看看 2011-12-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 shen_wei 的回复:]
C/C++ code
m_Silder.SetRange(0,10);
m_Silder.SetTicFreq(1);

每次都是一格。。。
[/Quote]

我这个范围是不能缩小的,我的显示值要为(-60,,12),并且步进要求是0.5,所以我的范围定在(-120,24)然后我在获得的值乘以0.5就达到要求了。这个控件的大小由于开始的设计没想到放的时候留的空比较小,不能再放大,值的范围也是固定的 所以我只有看能不能改变他每次移动一格的长度!不知道能否做到请高手继续解答 谢谢。
没事就来看看 2011-12-18
  • 打赏
  • 举报
回复
我刚发现了和什么有关系!竟然和你放置的slider控件的大小有关系,把这个控件放大了就每移动一下他的步进就会是1.把这个控件放小了它就每移动一次它的步进就是2.请高手指点我该怎么做呢? 控件在一定的大小范围内不进行重绘想让滑块移动一下他的位置增加1.很感激!

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧