2

フォーカスがあるとうまく描画される Direct2D ウィンドウがあります。ただし、フォーカスが別のウィンドウ (同じアプリケーションまたは別のアプリケーション) に移動すると、ウィンドウ全体が黒くなります。問題を の使用に突き止めましたID2D1HwndRenderTarget::Clear。この機能は私のアプリケーションにとって不可欠です。

フォーカスされていない Direct2D ウィンドウを通常どおりに描画する方法はありますか (注:WM_PAINTは通常どおり呼び出され、そのままClearBeginPaintなど、すべてエラーなしで呼び出されます)

前もって感謝します。

4

2 に答える 2

2

MSDN から、

Handling Device Loss

プログラムの実行中に、使用しているグラフィック デバイスが使用できなくなる場合があります。たとえば、ディスプレイの解像度が変わったり、ユーザーがディスプレイ アダプタを取り外したりすると、デバイスが失われる可能性があります。デバイスが失われると、デバイスに関連付けられていたデバイス依存のリソースと共に、レンダー ターゲットも無効になります。Direct2D は、EndDraw メソッドからエラー コード D2DERR_RECREATE_TARGET を返すことによって、失われたデバイスを通知します。このエラー コードを受け取った場合は、レンダー ターゲットとすべてのデバイス依存リソースを再作成する必要があります。

詳細については、リンクを確認してください。http://msdn.microsoft.com/en-us/library/ff684174(VS.85).aspx

于 2010-07-28T00:54:23.433 に答える
1

DirectX での私の経験では、DX が「ペイント」していたデバイスを失ったために画面が元に戻った場合。これは、たとえば、フルスクリーンの DirectX ウィンドウから別のアプリケーションに切り替えるとき、またはその逆のときによく発生します。

そのため、ペイント操作を再開できるように、DX デバイスを再初期化する必要があります。

これはもう少し役立つかもしれません(私のウェブサイトではありませんが、簡単なGoogle検索でそれが見つかりました)

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

于 2010-05-30T07:04:26.693 に答える