c++ - 使用 OnDraw() 的 MFC 并发

标签 c++ concurrency mfc gdi

我正在 MFC 中构建 Conway 的人生游戏。我在使用 Allegro 之前构建了它,并想使用 MFC 试用它。所以我开始迁移算法和东西。它使用一个核心渲染得很好,并且它的生命游戏算法非常漂亮,就像在快板中一样。 Conway 的人生游戏由使用 pDC->rectangle(x1, y1, x2, y2) 绘制的小矩形组成。

我的问题实际上有两个,其中之一是每次我调用 pDC->rectangle(...) 它都会立即绘制它,从而导致这种链式 react 渲染风格。我希望它在完成工作时显示(我知道您可以在 directx 中执行此操作,但我只想使用 MFC 的设备上下文执行此操作)。

另一个问题是标题,可能是我的主要问题。你如何使用并发 pDC,我试过了,它做了一些奇怪的事情。我知道我不能在 OnDraw 中以并发方式使用 pDC,因为它是占用相同内存但在我的 6 核中使用的相同设备上下文。就这些,先谢谢了。

最佳答案

为了避免立即绘制,可以在内存中绘制abitmap,完成后blit到真正的dc上。有一个look here as a starting point ,或在 this article在 CodeProject 上。对于多线程部分,您应该能够在多个线程的内存设备上下文中使用相同的上下文,只需确保正确协调共享 DC 的创建和 blitting/release。

关于c++ - 使用 OnDraw() 的 MFC 并发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12252305/

相关文章:

concurrency - Go 的 range time.Tick 相当于什么?

c++ - Visual Studio 2008 中的非托管 C++ 单元测试

c++ - 在 C++ 中打印多维 map

c++ - 如何使用 operator[] 访问结构的指定字段值

.net - 我们能保证通过数据竞争缓存哈希码能正常工作吗?

swift - 你必须手动指定你的DispatchQueue是串行的吗?

c++ - 成员函数无法访问私有(private)变量未在范围类中声明

c++ - Boost.PropertyTree 中的属性是如何解析的?

c++ - MFC默认选择路径

c++ - 使用 C++ 在 MySQL 中为 MFC Dialog Base App 插入一行