比如我按住鼠标左键,向下滑动,会记录一个值,这个值是我向下滑动了多远。
然后我每次做这样的操作,都可以记录这个值
但是现在遇到的问题是
我设置了一个m_offset的成员变量 用来记这个值
在用 一个m_point 记录鼠标左键按下的鼠标位置
如果在鼠标移动事件里用现在的point 减去m_point 得到这个offset
然后累加
那这个offset会一直累加 可能只移动了100的距离 但是因为事件响应了很多次 累加出来的值 就变成1000了
我理解是不是可以这样:
//propeties
int m_pointy; //鼠标按下事件的Y位置,简称原点
int m_previous; //前一次鼠标移动事件的Y位置
int m_total; //鼠标的总位移, 当前到原点的位移
int m_offset; //前一次鼠标事件到当前事件的位移
//messages
onlbottondown( CPoint p )
{
m_pointy = p.y; //鼠标按下事件的Y位置,简称原点
m_previous = p.y; //前一次鼠标移动事件的Y位置
m_total = 0; //鼠标的总位移, 当前到原点的位移
m_offset = 0; //前一次鼠标事件到当前事件的位移
}
onmousemove( CPoint p )
{
m_offset = p.y - m_previous;
m_total = p.y - m_pointy;
m_previous = p.y;
}
不知道这几个属性变量够不够用,想要每次的偏移量,要建一个缓冲区,记录m_offset。