2010-04-09 54 views
2

我有一個Direct2D窗口,它在對焦時可以很好地進行繪製;但是,當焦點移動到另一個窗口(相同的應用程序或另一個窗口)時,整個窗口會變黑。我把這個問題固定爲使用ID2D1HwndRenderTarget::Clear。這個功能對我的應用程序至關重要,因爲沒有它,繪畫變得相當......怪異。Direct2D窗口在黑暗中時沒有對焦

是有辦法的聯合國爲中心的Direct2D的窗口可以畫爲正常(注:WM_PAINT被稱爲像往常一樣,因爲是ClearBeginPaint等所有無誤差)

在此先感謝。

+0

你實際上並沒有說你想在這裏完成什麼。我假設你不希望窗口變黑,但你應該編輯這個來表達你想要的。 – 2010-04-09 15:48:57

+0

謝謝贊,完成:) – Saul 2010-04-09 16:28:01

回答

1

憑藉我對DirectX的經驗,如果屏幕變回原狀,因爲DX丟失了設備,它就是「繪畫」。例如,在全屏DirectX窗口切換到另一個應用程序時發生這種情況,反之亦然。

所以你需要做的是重新初始化DX設備,以便它可以恢復繪畫操作。

這可能有助於一些(不是我的網站,但一個快速谷歌搜索打開它)

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

+0

鏈接已損壞。 – young 2010-07-28 00:57:47

2

從MSDN,

Handling Device Loss 

當你的程序正在運行,您正在使用的 圖形設備可能變得不可用。例如, 如果顯示器 分辨率發生變化,或者用戶 刪除了顯示適配器,則該設備可能會丟失。如果 設備丟失,則渲染目標 也將與設備關聯的任何 設備相關資源 無效。 Direct2D 通過從 EndDraw方法返回 錯誤代碼D2DERR_RECREATE_TARGET來指示丟失的設備。如果您收到 此錯誤代碼,則必須重新創建 渲染目標和所有設備相關資源 。

請檢查鏈接瞭解更多信息。 http://msdn.microsoft.com/en-us/library/ff684174(VS.85).aspx

相關問題