1.在鼠标按下事件中记录当前鼠标位置和滚动条当前位置
2.在鼠标移动事件中动态修改滚动条位置,并使用双缓冲贴图的方法实现无闪烁刷新画面
具体代码如下
void OnRButtonDown(UINT nFlags, CPoint point)
{
//这两个是全局变量,类型是Cpoint
m_oldMoveMapPoint=point;//当前鼠标点下时记录的鼠标位置
m_oldScrollPoint=GetScrollPosition();//鼠标点下时记录的滚动条位置
}
void OnMouseMove(UINT nFlags, CPoint point)
{
int Hlength= point.x-m_oldMoveMapPoint.x;
int Vlength= point.y-m_oldMoveMapPoint.y;
SetScrollPos(SB_VERT,m_oldScrollPoint.y-Vlength,1);
SetScrollPos(SB_HORZ,m_oldScrollPoint.x-Hlength,1);
//重绘画布上的内容实现平滑移动
CDC *pDC=GetDC();
OnDraw(pDC);
}