我回来了一个以此开始的实验项目: 我有一个包含的10000个元素的数组,POINT类型。它们应该是具有x和y坐标的像素,可以在窗口上绘制(SetPixel())。我创建了创建DC,您可以通过阵列的每个点,并绘制在屏幕上简单的功能:Windows中的C++异步功能
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为我提供了什么?通常的做法是什么?我需要一些外部库吗?我只是不知道如何开始。我希望你明白我想要的。谢谢!
是的,但我不希望它只在调用WM_PAINT时运行,我希望它持续运行 – ali 2012-07-27 12:35:01
@ali在'WM_PAINT'中调用它,并且如果你改变某些点,例如调用[''RedrawWindow'](http://msdn.microsoft.com/en-us/library/windows/desktop/dd162911%28v=vs.85%29.aspx)或['UpdateWindow'](http:// msdn .microsoft.com/en-us/library/windows/desktop/dd145167%28v = vs.85%29.aspx),你将得到一个'WM_PAINT'事件。除非你真的需要,否则不要抽签。 – 2012-07-27 12:37:33
是的,这可能是一个很好的选择。我知道在这种情况下异步线程并不是很常用 – ali 2012-07-27 12:59:28