对于分割窗口的视图无法响应鼠标滚轮的解决方法
2013-03-15 10:51
483 查看
当创建的视图类的基类是scrollview的时候,只要在视图初始化函数中,设置了滚动的范围。当打开大图像,需要显示滚动条时,在视图中滚动鼠标滑轮,视图就会自动滚动。但是这种情况在面对分割窗口的视图类时,却无法实现。
对于分割窗口后的视图类,无论怎么滚动,都不会响应鼠标滚动消息。只有采取以下的方法才可行:
经跟踪,发现,带分割条的对话框窗口的两个scrollview可分别捕捉自己view内的WM_LBUTTONDOWN。
在此消息的处理中把该view setfocus , 该view即可接收 WM_MOUSE WHEEL 消息。最终使用的
CScrollView::DoMouseWheel函数,即可实现最基本的鼠标滚轮操作。(afxwin.h)
未使用:根据zDelta的值得到滚动的方向和大小,用CScrollView::ScrollToPosition。应该得到scroll当前的pos吧。
对于分割窗口后的视图类,无论怎么滚动,都不会响应鼠标滚动消息。只有采取以下的方法才可行:
经跟踪,发现,带分割条的对话框窗口的两个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吧。
相关文章推荐
- 对于分割窗口的视图无法响应鼠标滚轮的解决方法
- 关于MFC窗口分割无法指定第二行/列的高度/宽度的解决方法
- MFC中子窗口鼠标滚轮无法响应
- Win7鼠标右键没有响应无法弹出菜单的解决方法
- eclipse的Servers视图中无法添加Tomcat7的解决方法
- .net OCX 无法获取“****”控件的窗口句柄,不支持无窗口的ActiveX控 新解决方法
- Listview的onItemClickListener无法响应的解决方法(转)
- 无法启动Microsoft Office Outlook.无法打开Outlook窗口的解决方法
- Microsoft Office Word 2007 切换窗口后鼠标无法编辑的解决办法 (PowerDesigner12惹得祸)
- bsf窗口无法正常闪动和任务栏事件响应的解决办法
- javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
- win8系统电脑的F1键无法打开帮助和支持窗口的解决方法
- 重装MySQL,对于MySQL Service无法启动服务的解决方法
- Apple MAC USB鼠标不供电和Android调试无法找到设备的解决方法
- Listview的onItemClickListener无法响应的解决方法
- Ogre线程渲染,渲染设备无法恢复窗口停止响应的案例及解决办法
- 解决拖动无标题窗口时无法同时响应ButtonDown和ButtonUp消息的问题
- vc6.0无法看到类视图解决方法
- IE9无法输入文字、鼠标滚轮失效等问题之解决办法
- Linux中鼠标滚轮一次滚动一屏解决方法