1

我有一个在 Win32 应用程序上运行的 C++ 小型 2D 渲染库,并使用 Direct2D 进行绘图。我调用了 BeginDraw(),完成了大量绘图,然后调用了 DrawText()。这当然是在 EndDraw() 之前。

不是返回,所以我可以继续调用渲染函数,它停止是因为它已经发送了一个 WM_PAINT (大概没有等待)。(并且会继续发送消息直到窗口被验证?我不知道)

我试图接听电话并测试我当时是否正在绘图,在这种情况下,假装我已经正确处理了消息(但实际上没有手动验证任何客户区域),但它只是继续发送它,并且 DrawText()不回来。

这是正常行为吗?该怎么办?

(我也在使用 Visual Studio Community 2013。)

4

1 回答 1

1

我最终发现了错误。

我传递给 DIrect2D 函数的参数之一是无效的对象指针,因为我不知道我已经释放了内存,然后试图使用该对象来绘制东西。如果我知道已发布的 Direct2D 指针的默认内存模式是 0xcdcdcdcd(或类似的东西),我会更快看到它。

出于某种人类不知道的原因,这触发了 WM_PAINT... 可怕的错误。

谢谢大家!

于 2017-03-07T22:22:09.560 回答