ScreenToClient没有获取窗口客户端

时间:2018-03-22 22:38:27

标签: c++ c++11 graphics window

首先让我从ScreenToClient上的MSDN中引用一句话:

  

新坐标相对于左上角   指定窗口的客户区。

现在,我基本上是在制作一个类似绘画的应用程序,我只是创建了一个简单的程序来检查鼠标左键是否被保持,使用GetCursorPos和ScreenToClient捕获当前坐标并使用SetPixel进行绘制。

case WM_PAINT: 
    {
        if (GetKeyState(VK_LBUTTON) & 256 && !bStopDrawing)
        {
            HDC hDc = GetDC(hWnd);

            SetCapture(hWnd);
            POINT lpCursorPoint;
            GetCursorPos(&lpCursorPoint);
            ScreenToClient(hWnd, &lpCursorPoint);

            SetPixel(hDc, lpCursorPoint.x, lpCursorPoint.y, RGB(1, 1, 1));

            ReleaseCapture();
            DeleteDC(hDc);
        }

        return 0;
    }

现在,当我尝试移动窗口或调整窗口大小时出现问题。它没有这样做,而是在窗口的标题栏后面绘制。纠正我,如果我错了,但标题栏不是窗口客户区的一部分,对吗?

如果你们能指出我正确的方向,那就太好了。

在发布之前阅读:如果你想告诉我有关GetDC的使用情况,我认为它与GetCursorPos没有任何关系,但无论如何,使用BeingPaint和EndPaint并非如此由于某种原因工作,所以我不得不使用它。就在你烧我使用它之前:D

0 个答案:

没有答案