D1194:刷新未完成 DC

在 GetDC/ReleaseDC 对之间调用 Flush 或 EndDraw 是无效的。

 

可能的原因

使用 GDI 互作的 rendertarget 时,应用程序可以使用 IGdiInteropRenderTarget::GetDC 或 IGdiInteropRenderTarget::ReleaseDC 来控制目标的 DC 的所有权。 但是,当应用程序控制 DC 时,调用 ID2D1RenderTarget::Flush 或 ID2D1RenderTarget::EndDraw 无效。 刷新和 EndDraw 可能会导致呈现在目标资源上,并且 Direct2D 不应尝试与应用程序同时修改资源。

可能的修复方法

若要解决此消息,请确保应用程序没有调用 ID2D1RenderTarget::Flush 或 ID2D1RenderTarget::EndDraw,而应用程序拥有 IGdiInteropRenderTarget 的 DC 的所有权。 如果可能,请组织应用程序将其 Direct2D 呈现行为与其 GDI 行为分开,以使 DC 所有权的区别更加清晰。