gpt4 book ai didi

c++ - 为什么我调用 D2D1::RenderTarget::DrawText() 导致重复发送 WM_PAINT?

转载 作者:行者123 更新时间:2023-11-30 05:18:17 25 4
gpt4 key购买 nike

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

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

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

这是正常行为吗?如何处理?

(我也在使用 visual studio community 2013。)

最佳答案

我终于找到了错误。

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

由于某些不为人知的原因,这触发了一个 WM_PAINT ……可怕的错误。

谢谢大家!

关于c++ - 为什么我调用 D2D1::RenderTarget::DrawText() 导致重复发送 WM_PAINT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41783234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com