MFC中Slider Control 的使用
几个控件事件如下NM_CUSTOMDRAWNM_OUTOFMEMORYNM_RELEASEDCAPTURENM_THEMECHANGEDTRBN_THUMBPOSCHAN...
几个控件事件 如下
NM_CUSTOMDRAW
NM_OUTOFMEMORY
NM_RELEASEDCAPTURE
NM_THEMECHANGED
TRBN_THUMBPOSCHANGE
有这几个。现在需要做的是 。在鼠标拖动滑动条之后 启动一个定时器,1S后无变动,就发送消息。
我用了第一个 错了。。
求个比较详细的介绍 谢谢! 展开
NM_CUSTOMDRAW
NM_OUTOFMEMORY
NM_RELEASEDCAPTURE
NM_THEMECHANGED
TRBN_THUMBPOSCHANGE
有这几个。现在需要做的是 。在鼠标拖动滑动条之后 启动一个定时器,1S后无变动,就发送消息。
我用了第一个 错了。。
求个比较详细的介绍 谢谢! 展开
1个回答
展开全部
你是定时器不会,还是鼠标拖动滑动条的消息不会?
消息的话,使用NM_THEMECHANGED
该控件的消息:
NM_CUSTOMDRAW,是子控件通知其父控件它已经完成重画功能,对Slider来说也就是我们每次鼠标按住滑块移动一下就能使滑块向拥有该滑块的Slider产生一个NM_CUSTOMDRAW消息,以便用户实时获得移动滑块时的是实时值。
NM_RELEASEDCAPTURE,是子控件被鼠标按住拖动到适当位置以后鼠标释放时子控件向父控件产发送的消息,对于Slider来说就是每次滑块被鼠标拖曳完鼠标释放的时候滑块给Slider发送的消息。
还有一个消息就是NM_OUTOFMEMORY,是当没有足够内存来相应子控件时向父控件发送的消息。
而在vc2008中又添加了两个消息NM_THEMECHANGED和TRBN_THUMBPOSCHANGING
Slider控件本身并没有响应滑动的消息函数,但可以通过主窗体的OnHScroll()响应。在类向导中为对话框添加WM_HSCROLL消息,在响应函数中添加:
void CDlgSetup::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
CSliderCtrl *pSlidCtrl=(CSliderCtrl*)GetDlgItem(IDC_SLIDER1);
m_int=pSlidCtrlHue->GetPos();//取得当前位置值
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
//m_int 即为当前滑块的值。
消息的话,使用NM_THEMECHANGED
该控件的消息:
NM_CUSTOMDRAW,是子控件通知其父控件它已经完成重画功能,对Slider来说也就是我们每次鼠标按住滑块移动一下就能使滑块向拥有该滑块的Slider产生一个NM_CUSTOMDRAW消息,以便用户实时获得移动滑块时的是实时值。
NM_RELEASEDCAPTURE,是子控件被鼠标按住拖动到适当位置以后鼠标释放时子控件向父控件产发送的消息,对于Slider来说就是每次滑块被鼠标拖曳完鼠标释放的时候滑块给Slider发送的消息。
还有一个消息就是NM_OUTOFMEMORY,是当没有足够内存来相应子控件时向父控件发送的消息。
而在vc2008中又添加了两个消息NM_THEMECHANGED和TRBN_THUMBPOSCHANGING
Slider控件本身并没有响应滑动的消息函数,但可以通过主窗体的OnHScroll()响应。在类向导中为对话框添加WM_HSCROLL消息,在响应函数中添加:
void CDlgSetup::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
CSliderCtrl *pSlidCtrl=(CSliderCtrl*)GetDlgItem(IDC_SLIDER1);
m_int=pSlidCtrlHue->GetPos();//取得当前位置值
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
//m_int 即为当前滑块的值。
追问
我是vs2008 ,现在结合NM_RELEASEDCAPTURE这个来使用。NM_CUSTOMDRAW里面只是实时的刷新数据,而在NM_RELEASEDCAPTURE响应鼠标的里面 ,添加定时器,达到了我要的效果。拖动滑动条,前面那个显示数据,后面那个触发定时器,处理定时器里面的函数,且执行一次。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询