首先让我从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