0

我带着一个实验项目回来了:我有一个包含 10000 个POINT类型元素的数组。它们应该是具有 x 和 y 坐标的像素,要在窗口上绘制(SetPixel())。我创建了一个简单的函数来创建 DC,从数组中获取每个 POINT 并将其绘制在屏幕上:

void draw_points() {
    HDC hdc = GetDC(hWnd);
    for (int i = 0; i < 10000; i++) {
        SetPixel(hdc, points[i].x, points[i].y, RGB(0, 0, 0));
    }
    ReleaseDC(hWnd, hdc);
}

好吧,我把这个函数放在了WinMain()函数的主循环中。有用。我可以看到在屏幕上绘制的点。问题是在显示点时我不能做任何其他事情,所以我发现我需要异步函数,就像在 Java 中一样。那是因为我希望能够在draw_points()函数运行时从数组中添加、删除、修改点。

我不需要它的任何结果,我只希望它在另一个线程中运行,同时我对其他功能做任何我想做的事情。所以,我的问题是:Windows API 为我提供了什么?通常的方法是什么?我需要一些外部库吗?我只是不知道如何开始。我希望你明白我想要什么。谢谢!

4

2 回答 2

1

你不应该从主循环中调用它。WM_PAINT相反,当您在窗口消息循环中收到事件时,您应该调用它。

于 2012-07-27T12:32:50.173 回答
1

您无能为力的原因是您没有响应 Windows 消息。您应该在循环中调用 PeekMessage() 以定期检查消息队列。当你得到一个时,你需要调用 TranslateMessage() 和 DispatchMessage()。

于 2012-07-27T12:46:12.453 回答