鼠标事件——通知消息
计算鼠标手势:
坐标值 上次;坐标值 当前; 两个结构体分别记录上次和当前鼠标位置 判断(消息) 为 按下左键,按下右键{上次=数据} 按下鼠标左键或右键时记住当前鼠标位置到上次 为 鼠标移动{当前=数据;鼠标手势(参数)上次=数据;} 移动鼠标先记住当前鼠标位置到当前 然后调用鼠标手势并提交参数,通过它可以判断是否按下了鼠标左键或者右键, 计算当前鼠标位置和上次位置差值,最后再把当前坐标写入上次
程序段 鼠标手势(参数) 在这个程序段里计算上次鼠标位置和当前位置差 判断(参数)为 1{ 按下鼠标左键时移动鼠标的计算 如果(上次.左<当前.左)鼠标向右移动 如果(上次.左>当前.左)鼠标向左移动 如果(上次.顶<当前.顶)鼠标向下移动 如果(上次.顶>当前.顶)鼠标向上移动} 为 2{ 按下鼠标右键时移动鼠标的计算 如果(上次.左<当前.左)鼠标向右移动 如果(上次.左>当前.左)鼠标向左移动 如果(上次.顶<当前.顶)鼠标向下移动 如果(上次.顶>当前.顶)鼠标向上移动}
捕获光标 | $0020 | WM_SETCURSOR | 若鼠标光标在某窗口内移动且鼠标没被捕获时, 就会发送本消息给某个窗口。③参数:窗口;④数据:命中消息 |
拖曳后窗 | $0021 | WM_MOUSEACTIVATE | 当鼠标光标在某个未激活窗口内,而用户正按着鼠标的某个键时, 会发送本消息给当前窗口。③参数:父窗;④数据:命中消息; 返回值:1激活窗口不丢弃鼠标,2激活丢弃鼠标, 3不激活不丢弃,4不激活丢弃鼠标 |
点击右键 | $007B | WM_CONTEXTMENU | 当用户在某窗口中点击右键就发送本消息给该窗口,设置右键菜单。 ③参数:窗口;④数据:屏幕坐标x/y |
命令事件 | $0111 | WM_COMMAND | 用户选择一条菜单命令项或某控件发送一条通知消息给其父窗, 或某快捷键被翻译时,本消息被发送。 ③参数:低位=编号,高位=事件;④数据:控件; 菜单高位0,快捷键高位1,两者数据都是0 |
系统命令 | $0112 | WM_SYSCOMMAND | 当用户选择一条系统菜单命令 用户最大化或最小化或还原或关闭时。 ③参数:命令;④数据:点菜单时鼠标位置 |
程序命令 | $319 | WM_APPCOMMAND | 用户点击应用程序命令按钮或键盘命令键(如导航刷新搜索) ③参数:窗口;④数据:命令/设备/按键 |
鼠标起始 | $0200 | WM_MOUSEFIRST | 鼠标移动时发生(与WM_MOUSEMOVE等值) 常用于判断鼠标消息的范围 |
鼠标移动 | $0200 | WM_MOUSEMOVE | 当鼠标在窗口客户区移动时。③参数:1左键,2右键, 4SHIFT,8CTRL,$10中键,$20=X1,$40=X2;④数据:坐标x/y; |
按下左键 | $0201 | WM_LBUTTONDOWN | 当鼠标左键在窗口客户区按下。③参数:1左键,2右键, 4SHIFT,8CTRL,$10中键,$20=X1,$40=X2;④数据:坐标x/y; |
释放左键 | $0202 | WM_LBUTTONUP | 当鼠标左键在窗口客户区放开。③参数:1左键,2右键, 4SHIFT,8CTRL,$10中键,$20=X1,$40=X2;④数据:坐标x/y; |
双击左键 | $0203 | WM_LBUTTONDBLCLK | 当鼠标左键在窗口客户区双击。③参数:1左键,2右键, 4SHIFT,8CTRL,$10中键,$20=X1,$40=X2;④数据:坐标x/y; |
按下右键 | $0204 | WM_RBUTTONDOWN | 当鼠标右键在窗口客户区按下。③参数:1左键,2右键, 4SHIFT,8CTRL,$10中键,$20=X1,$40=X2;④数据:坐标x/y; |
释放右键 | $0205 | WM_RBUTTONUP | 当鼠标右键在窗口客户区放开。③参数:1左键,2右键, 4SHIFT,8CTRL,$10中键,$20=X1,$40=X2;④数据:坐标x/y; |
双击右键 | $0206 | WM_RBUTTONDBLCLK | 当鼠标右键在窗口客户区双击。③参数:1左键,2右键, 4SHIFT,8CTRL,$10中键,$20=X1,$40=X2;④数据:坐标x/y; |
按下中键 | $0207 | WM_MBUTTONDOWN | 当鼠标中键在窗口客户区按下。③参数:1左键,2右键, 4SHIFT,8CTRL,$10中键,$20=X1,$40=X2;④数据:坐标x/y; |
释放中键 | $0208 | WM_MBUTTONUP | 当鼠标中键在窗口客户区放开。③参数:1左键,2右键, 4SHIFT,8CTRL,$10中键,$20=X1,$40=X2;④数据:坐标x/y; |
双击中键 | $0209 | WM_MBUTTONDBLCLK | 当鼠标中键在窗口客户区双击。③参数:1左键,2右键, 4SHIFT,8CTRL,$10中键,$20=X1,$40=X2;④数据:坐标x/y; |
滚轮转动 | $020A | WM_MOUSEWHEEL | 当滚动鼠标滚轮时。 ③参数:高位120向后,-120向前;低位1左键,2右键,4SHIFT, 8CTRL,$10中键,$20=X1,$40=X2;④数据:坐标x/y; |
鼠标结束 | $020A | WM_MOUSELAST | WM_MBUTTONDBLCLK的别名,通常用于判断鼠标消息的范围, 对应的还有WM_MOUSEFIRST(鼠标起始) |
失去鼠标 | $215 | WM_CAPTURECHANGED | 当它失去捕获的鼠标时,发送本消息给窗口。③参数:0;④数据:窗口 |
移动消息 | $216 | WM_MOVING | 当用户在移动窗口时发送本消息,通过本消息应用程序以监视窗口 大小和位置,也可修改它们。③参数:0;④数据:矩形类 |
拖放文件 | $233 | WM_DROPFILES | 鼠标拖放时,放下事件产生时发送本消息,比如:文件拖放功能。 ③参数:文件;④数据:0 |
鼠标经外 | $2A0 | WM_NCMOUSEHOVER | 当光标悬停在窗口的非工作区上的达到指定时间发送本消息。 ③参数:命中值;④数据:坐标类; |
鼠标经过 | $2A1 | WM_MOUSEHOVER | 当光标悬停在窗口的工作区上的达到指定时间发送本消息。 ③参数:1左键,2右键,4SHIFT,8CTRL,$10中键,$20=X1,$40=X2; ④数据:坐标x/y; |
鼠标离外 | $2A2 | WM_NCMOUSELEAVE | 当光标离开之前调用 TrackMouseEvent 中指定的窗口的非工作区时 发送本消息。③参数:0;④数据:0; |
鼠标离开 | $2A3 | WM_MOUSELEAVE | 鼠标离开控件时,触发发送本消息。③参数:1左键,2右键, 4SHIFT,8CTRL,$10中键,$20=X1,$40=X2;④数据:坐标x/y; |