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

       当创建的视图类的基类是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吧。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值