您的位置:首页 > 其它

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

2013-03-15 10:51 483 查看
       当创建的视图类的基类是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吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: