WM_LBUTTONDOWN //鼠标左键按下消息
WM_LBUTTONUP //鼠标左键弹起消息参数和按下一样
当用户在窗口的客户区域中按住鼠标左键时,会发布WM_LBUTTONDOWN消息。如果未捕获鼠标,则该消息会发布到光标下方的窗口中。否则,消息将发布到已捕获鼠标的窗口。 WM_LBUTTONDOWN fwKeys = wParam; //键标志 xPos = LOWORD(lParam); //光标的水平位置 yPos = HIWORD(lParam); //光标的垂直位置 参数 【fwKeys】 在【wParam中】标识按下的键值。此参数可以是以下值的任意组合: 值 描述 MK_CONTROL 标识CTRL键按下。 MK_LBUTTON 标识左键按下. MK_MBUTTON 标识中键按下。 MK_RBUTTON 标识右键按下。 MK_SHIFT 标识SHIFT键按下. 【XPOS】 【lParam的】的低位字节的值。指定光标的x坐标。坐标相对于客户区域的左上角。 【yPos】 【lParam的】的高字节的值。指定光标的y坐标。坐标相对于客户区域的左上角。 返回值 如果应用程序处理此消息,则应返回零。 备注 应用程序可以使用MAKEPOINTS宏将【lParam的】参数转换为POINTS结构。
实例:
case WM_LBUTTONDOWN: return OnLButtonDown(hWnd,(UINT)wParam, POINT{ LOWORD(lParam),HIWORD(lParam) }); LRESULT OnLButtonDown(HWND hWnd,UINT nFlags, POINT pos) { if (pos.x >= m_splitterPos - 10 && pos.x <= m_splitterPos + 10) { m_IsSplit = TRUE; //标识可以拖拽 /*SetCursor(m_hCursor); SetCapture(hWnd);*/ } return 0; }
LRESULT OnLButtonUp(HWND hWnd, UINT nFlags, POINT pos) { if (m_IsSplit) { m_IsSplit = FALSE; //标识不可拖拽 ReleaseCapture(); } return 0; }