现在的位置: 首页 > 综合 > 正文

对于分割窗口的视图无法响应鼠标滚轮的解决方法

2017年10月01日 ⁄ 综合 ⁄ 共 654字 ⁄ 字号 评论关闭

       当创建的视图类的基类是scrollview的时候,只要在视图初始化函数中,设置了滚动的范围。当打开大图像,需要显示滚动条时,在视图中滚动鼠标滑轮,视图就会自动滚动。但是这种情况在面对分割窗口的视图类时,却无法实现。

       对于分割窗口后的视图类,无论怎么滚动,都不会响应鼠标滚动消息。只有采取以下的方法才可行:


经跟踪,发现,带分割条的对话框窗口的两个scrollview可分别捕捉自己view内的WM_LBUTTONDOWN。

在此消息的处理中把该view setfocus , 该view即可接收 WM_MOUSE WHEEL 消息。最终使用的

CScrollView::DoMouseWheel函数,即可实现最基本的鼠标滚轮操作。(afxwin.h)


void CMyView::OnLButtonDown(UINT nFlags, CPoint point) 
{
this->SetFocus();
CScrollView::OnLButtonDown(nFlags, point);
}


BOOL CMyView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt) 
{
this->DoMouseWheel(nFlags, zDelta, pt);
return CScrollView::OnMouseWheel(nFlags, zDelta, pt);
}

未使用:根据zDelta的值得到滚动的方向和大小,用CScrollView::ScrollToPosition。应该得到scroll当前的pos吧。

抱歉!评论已关闭.