MFC实现鼠标中键滑动WM_MOUSEWHEEL响应,使得图形缩放

MFC实现鼠标中键滑动WM_MOUSEWHEEL响应,使得图形缩放

已经实现,没有问题

CRenderView基类是CView,实现显示操作三维模型。

实现鼠标滚轮缩放简单步骤如下:

(1)响应视图类的WM_MOUSEWHEEL消息

(2)在响应函数里面实现:

      有滚动引起的缩放比例变化;

      刷新视图区域,图形缩放显示;

     设置滑竿位置,刷新滑竿所在类的滑竿显示位置;

//滚动鼠标滚轮实现模型缩放,z轴上放大或者缩小
BOOL CRenderView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt) 
{
	// TODO: Add your message handler code here and/or call default
	
		//AfxMessageBox(" 鼠标滚轮滑动触发");
	    m_zScaling = m_zScaling +0.01*zDelta/120;
		//CFormCommandView里 设置滑竿范围是pos=1-100,放大倍数是pos/50=0.02-2
		//为了是滑动缩放和滑竿缩放一致,所以加入以下两条if语句
		if(m_zScaling<=1/50)
			m_zScaling=0.02;
		if(m_zScaling>=100/50)
			m_zScaling=2;
		CToolApp *pApp = (CToolApp *)AfxGetApp();
		CMainFrame *pFrame = (CMainFrame *)pApp->m_pMainWnd;
		CFormCommandView *pView = (CFormCommandView *)pFrame->m_wndSplitter.GetPane(0,0);
		(pView->m_SliderScaleZ).SetPos(m_zScaling*50);
		InvalidateRect(NULL,FALSE);//刷新绘图
		pView->InvalidateRect(NULL,FALSE); //刷新让滑竿更新滑动位置
	
	return CView::OnMouseWheel(nFlags, zDelta, pt);
}

你可能感兴趣的:(MFC实现鼠标中键滑动WM_MOUSEWHEEL响应,使得图形缩放)