MFC slider拖动事件响应

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012327581/article/details/46492637

在使用MFC的slider control时,对于其拖动的默认响应函数OnCustomdrawSlider,会响应有关draw的事件,包括非操作区的变换导致的界面重绘。

而有的时候我们希望只响应对slider的拖动事件,而不响应其他事件。如在制作自定义视频播放器的进度条时,我们希望鼠标在拖动slider时,不允许其他的线程或程序操作这个slider以免造成拖动失败。

看了其他网友有关“判断鼠标操作在控件上”的文章,觉得可以使用MFC的OnHScroll(或OnVScroll)消息响应,来进一步判断鼠标操作是否在控件上。

具体方法如下:

  1. 新加一个slider 控件,设置其相应响应函数;
  2. 在Dlg(或View)类中增加OnHscroll函数,函数内容如下:
void CxxxView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值

	CFormView::OnHScroll(nSBCode, nPos, pScrollBar);
	if ((&mSlider) ==(CSliderCtrl *) pScrollBar)         // mSlider 为你的slider控件
	{
		isSliderDrawing = TRUE;			// 此处添加要实现的功能,isSliderDrawing 是我自己要设置的标志
	}
}



这样在其中添加要实现的操作即可,这个函数里面只响应slider的滑动;

猜想其他控件的操作也类似。


展开阅读全文

没有更多推荐了,返回首页