1

アプリケーションでWS_EX_COMPOSITEDスタイルを使用していますが、CPUを100%実行していますが、アプリケーションの描画をしばらく停止し、必要な場合にのみ再開する方法はありますか?Sleepを使用することを提案している人もいますが、WndProcのどこにスリープを設定しますか?

前もって感謝します。

4

2 に答える 2

4

使用しないでくださいSleep。それはほとんど問題のない解決策です。

確かにWS_EX_COMPOSITEDCPUを占有する可能性がありますが、私の経験ではほとんどがXPです。Vista以降では、パフォーマンスへの影響はそれほど大きくありません。ただし、アプリがアイドル状態の場合、再描画は行われません。CPUが100%で、アプリがアイドル状態の場合は、処理に問題がありますWM_PAINT。あなたが説明することは、ペイントサイクルの無限のループのように聞こえます。正しくやれば、使ってもそんなことはありませんWS_EX_COMPOSITED

ダブルバッファリングを行う正しい方法に関しては、BeginBufferedPaintVista以降でこれを行うための最新の方法です。

于 2012-05-15T19:04:33.557 に答える
0

アプリケーションのスレッドをスリープ状態にすると、アプリケーションのUIが応答しなくなります。独自のスレッドで描画コードを実装する必要があるように思えます。その後、アプリケーションの残りの部分に影響を与えることなくそのスレッドをスリープできますが、スリープの代わりにイベントとWaitForSingleObject/WaitForMultipleObjects呼び出しを使用することをお勧めします。

于 2012-05-15T18:53:26.677 に答える