C++ Direct2D窗口不对焦时为黑色

C++ Direct2D窗口不对焦时为黑色,c++,windows,focus,hwnd,direct2d,C++,Windows,Focus,Hwnd,Direct2d,我有一个Direct2D窗口,在对焦时画质很好;但是,当焦点移动到另一个窗口(同一个应用程序或其他应用程序)时,整个窗口变黑。我把这个问题归结为使用了ID2D1HwndRenderTarget::Clear。这个功能对我的应用至关重要,因为没有它,绘画就变得相当。。。奇怪 是否有一种方法可以让未聚焦的Direct2D窗口正常绘制(注意:WM_paint像往常一样被调用,就像Clear、BeginPaint等一样,都没有错误) 提前感谢。根据我使用DirectX的经验,如果由于DX丢失了它“绘制”

我有一个Direct2D窗口,在对焦时画质很好;但是,当焦点移动到另一个窗口(同一个应用程序或其他应用程序)时,整个窗口变黑。我把这个问题归结为使用了
ID2D1HwndRenderTarget::Clear
。这个功能对我的应用至关重要,因为没有它,绘画就变得相当。。。奇怪

是否有一种方法可以让未聚焦的Direct2D窗口正常绘制(注意:
WM_paint
像往常一样被调用,就像
Clear
BeginPaint
等一样,都没有错误)


提前感谢。

根据我使用DirectX的经验,如果由于DX丢失了它“绘制”到的设备而导致屏幕反转,那么。例如,在一个全屏DirectX窗口和另一个应用程序之间切换时,这种情况经常发生,反之亦然

因此,您需要做的是重新初始化DX设备,以便它可以恢复绘制操作

这可能会有更多的帮助(不是我的网站,而是谷歌的快速搜索)

来自MSDN

Handling Device Loss
当您的程序运行时 您正在使用的图形设备 可能会变得不可用。例如 如果显示器损坏,设备可能会丢失 分辨率更改,或者如果用户 移除显示适配器。如果 设备丢失,渲染目标也将丢失 与任何 已删除的设备相关资源 与设备关联。Direct2D 通过返回 错误代码D2DERR_从重新创建目标 EndDraw方法。如果你收到 此错误代码,您必须重新创建 渲染目标和所有 依赖于设备的资源


请查看链接以了解更多信息

你没有说你想在这里完成什么。我假设你不想让窗口变黑,但你应该编辑它来说出你想要的。