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

来源:互联网 发布:哪个软件可以发表文章 编辑:程序博客网 时间:2024/05/16 05:59

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

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


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

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

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

  1. void CMyView::OnLButtonDown(UINT nFlags, CPoint point)   
  2. {  
  3. this->SetFocus();  
  4. CScrollView::OnLButtonDown(nFlags, point);  
  5. }  
  6.   
  7.   
  8. BOOL CMyView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)   
  9. {  
  10. this->DoMouseWheel(nFlags, zDelta, pt);  
  11. return CScrollView::OnMouseWheel(nFlags, zDelta, pt); 

未使用:根据zDelta的值得到滚动的方向和大小,用CScrollView::ScrollToPosition。应该得到scroll当前的pos吧。
转载自:http://blog.csdn.net/guoguojune/article/details/8676737
0 0
原创粉丝点击