(1)目的说明:重新实现MFC中的鼠標事件函数实现鼠标左键拖动效果和滚轮拖动效果。
(3)鼠标事件参数说明
nFlags说明:指示虚拟按键是否按下 此参数可以是任何下列值的組合
MK_MBUTTON 当鼠标中键按下时(滚动不属于按下)
point说明:鼠标的X,Y坐标:该坐标为鼠标相对所在窗口左上角为基点的位置,是一个相对位置而不是在屏幕像素上的绝对位置
Windows下通常向上滚动缩小/窗口上移,反之放大/下移
(4)鼠标拖动和缩放功能实现
要实现移动例如鼠标左键拖动butoon/图片茬窗口上移动,实现的结果附加要求:鼠标放在button/图片的A点移动之后,鼠标点依然在A点上
a. 检测鼠标已在button/图片上(确保不是在哪都可以移动图標)并且左键按下
b. 记录鼠标当前点和上个点,计算两个的偏移值然后使用这个偏移值来移动button/图片(MoveWindows)
(记录上个点的方法可以使用静态变量,移动完毕后把当前点赋值给静态变量)(具体实现可以灵活处理)
实现原理是:相对静止---鼠标和对象相对位置不变,鼠标的偏移量僦是我们对象的偏移量
2. 缩放的效果实现(以鼠标点为中心缩放)
要实现缩放,例如中件滑轮向上滑动缩小向下滑动放大button/图片,实现附加要求:鼠标放在button/图片的A点缩放之后,鼠标点依然在A点上缩放是以鼠标点为中心
a. 同样检测鼠标已在button/图片上(确保不是在哪都可以缩放button/图片)
c. 获取当前pt点x,y相对于button/图片位置,然后计算该位置相对于宽和高的比值
d. 判断zDelta正负确定放大缩小(按比例调整图片高度和宽度)并调整图片左上點(left,top)的位置,确保c中的比值不变(---确保了以鼠标所在点为中心放大或缩小)
实现原理是:相对移动---鼠标和所在对象点位置不变鼠标所在对象點的周围 长和宽 成比例的缩放