WM_LBUTTONDOWN,WM_LBUTTONUP

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;
}
签名:GreenLeaf1976
原文地址:https://www.cnblogs.com/greenleaf1976/p/14854384.html