是否可以在wxwidgets中确定窗口当前是否可见?

时间:2013-05-15 14:51:37

标签: user-interface wxpython wxwidgets polling

在我的wxWidgets(wxPython)应用程序中,如果有任何更改,我使用50毫秒计时器进行一些轮询并更新窗口。如果检测到更改,则调用wxWindow.Refresh来更新窗口,并且在EVT_PAINT处理程序中完成窗口小部件的实际更新。如果我可以禁用绘画和/或计时器,如果用户没有看到窗口,那将是很好的。但是,即使窗口被图标化或隐藏在不同窗口后面,EVT_PAINT仍然会被触发。

有没有办法检测窗口当前是否在屏幕上可见,或者是否阻止EVT_PAINT事件不必要地触发?

IsActive方法和EVT_ACTIVATE事件来测试窗口是否具有焦点,但是如果窗口没有聚焦但仍然可见,我想继续更新窗口。 wxWindow.IsShown系列函数没有帮助,它们仍然为隐藏/图标化窗口返回True。

1 个答案:

答案 0 :(得分:0)

IsShownOnScreen()可以帮助处理图标化案例。 编辑:但实际上不是

或者您可以捕获wxEVT_ICONIZE以检测窗口何时最小化。

但说实话,我很惊讶刷新隐藏在另一个窗口后面的窗口仍然会导致重画。如果前面的窗口不透明,那真的不应该发生。