【问题标题】:Direct2D window black when not in focusDirect2D 窗口在未聚焦时为黑色
【发布时间】:2011-02-06 04:30:51
【问题描述】:

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

有没有办法让未聚焦的 Direct2D 窗口正常绘制(注意:WM_PAINT 像往常一样被调用,ClearBeginPaint 等也正常调用)

提前致谢。

【问题讨论】:

  • 你实际上并没有在这里说你想要完成什么。我假设您不希望窗口变黑,但您应该编辑它以说出您想要的内容。

标签: c++ windows focus hwnd direct2d


【解决方案1】:

来自 MSDN,

Handling Device Loss

当您的程序运行时, 您正在使用的图形设备 可能变得不可用。例如, 如果显示设备可能会丢失 分辨率改变,或者如果用户 移除显示适配器。如果 设备丢失,渲染目标也 变得无效,连同任何 依赖于设备的资源 与设备相关联。直接二维 通过返回的信号丢失的设备 错误代码 D2DERR_RECREATE_TARGET 来自 EndDraw 方法。如果您收到 这个错误代码,你必须重新创建 渲染目标和所有 设备相关资源。

请查看链接以获取更多信息。 http://msdn.microsoft.com/en-us/library/ff684174(VS.85).aspx

【讨论】:

    【解决方案2】:

    根据我使用 DirectX 的经验,如果屏幕变回是因为 DX 丢失了它正在“绘画”的设备。这种情况经常发生 - 例如 - 在全屏 DirectX 窗口和另一个应用程序之间切换时,反之亦然。

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

    这可能会有所帮助(不是我的网站,而是通过 Google 快速搜索找到的)

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

    【讨论】:

      猜你喜欢
      • 2016-12-07
      • 2011-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-09
      相关资源
      最近更新 更多