Direct2D窗口在黑色时未对焦

我有一个Direct2D窗口,在对焦时可以很好地进行绘制; 但是,当焦点移动到另一个窗口(相同的应用程序或另一个窗口)时,整个窗口变黑。 我把这个问题归结为使用ID2D1HwndRenderTarget::Clear 。 这个function对我的应用程序是至关重要的,因为没有它,绘画变得相当…怪异。

有没有办法一个未聚焦的Direct2D窗口可以正常绘制(注意: WM_PAINT像平常一样被调用, ClearBeginPaint等都是没有错误的)

提前致谢。

凭借我对DirectX的经验,如果屏幕倒退了,因为DX丢失了设备,这就是“绘画”。 例如,在全屏DirectX窗口切换到另一个应用程序时,会发生很多情况,反之亦然。

所以你需要做的就是重新设计DX设备,这样它就可以重新开始绘画了。

这可能会帮助更多(不是我的网站,但一个快速的谷歌搜索把它翻了)

http://www.programmersheaven.com/2/FAQ-DIRECTX-Avoid-task-switching

从MSDN,

 Handling Device Loss 

程序正在运行时,正在使用的图形设备可能不可用。 例如,如果显示分辨率改变,或者用户移除了显示适配器,则设备可能会丢失。 如果设备丢失,则渲染目标也会与设备关联的任何设备相关资源一起失效。 Direct2D通过从EndDraw方法返回错误代码D2DERR_RECREATE_TARGET来指示丢失的设备。 如果收到此错误代码,则必须重新创建渲染目标和所有设备相关的资源。

请检查链接了解更多信息。 http://msdn.microsoft.com/en-us/library/ff684174(VS.85).aspx