我对C++编程GUI并不十分熟悉,但我遇到了一个问题,在移动/拖动应用程序窗口后,我的程序无法响应鼠标左键单击。我应该怎么做才能使其正常工作?这是我在回调函数中处理左键单击消息的方式:

case WM_LBUTTONDOWN:
    {
        POINT point;
        GetCursorPos(&point);
        break;
    }

最佳答案

鼠标位置作为LPARAM包含在消息中。

POINT point;
point.x = GET_X_LPARAM(lParam);
point.y = GET_Y_LPARAM(lParam);

MSDN所述,该点相对于客户区的左上角。因此,如果您移动窗口,point仍将相对于您的窗口。

GetCursorPos获取光标在屏幕坐标中的位置。因此,您必须补偿窗口在屏幕上的位置才能获得可用的位置。

关于c++ - 窗口移动后单击坐标,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7475711/

10-16 04:23