私の wxWidgets (wxPython) アプリでは、50 ミリ秒のタイマーを使用してポーリングを行い、変更があればウィンドウを更新しています。wxWindow.Refresh変更が検出されると、ウィンドウを更新するために呼び出され、ウィジェットの実際の更新はEVT_PAINTハンドラーで行われます。とにかくユーザーがウィンドウを見ていなければ、ペイントやタイマーを無効にできればいいと思います。ただし、ウィンドウがアイコン化されているか、別のウィンドウの背後に隠されている場合でも、 EVT_PAINT は引き続き起動されます。
ウィンドウが現在画面に表示されていないかどうかを検出する方法、または EVT_PAINT イベントが不必要に発生するのを防ぐ方法はありますか?
IsActiveウィンドウにフォーカスがあるかどうかをテストするメソッドとイベントがありEVT_ACTIVATEますが、フォーカスされていなくてもウィンドウが表示されている場合は、ウィンドウを更新し続けたいと思います。関数のwxWindow.IsShownファミリーは役に立たず、非表示/アイコン化されたウィンドウに対して True を返します。