Как сохранить состояние окна на wxWidgets? - PullRequest
0 голосов
/ 23 сентября 2011

Я создаю пользовательский интерфейс с помощью wxWidgets.

В моем графическом интерфейсе я генерирую окно (класс wxFrame), которое доступно при нажатии кнопки растрового изображения.В этом окне я также выполняю некоторые задачи, снова нажимая некоторые растровые кнопки, набирая их и т. Д. Но я не могу закрыть и снова открыть это окно с сохраненным состоянием.Я всегда должен заново инициализировать его, и это очень непрактично.

Как я могу сохранить состояние моего окна?Я проверил интернет, предлагается использовать класс wxPersistent, но этот класс отсутствует в моих wxWidgets.

Спасибо за любую помощь,

С наилучшими пожеланиями.

1 Ответ

1 голос
/ 23 сентября 2011

Вместо того, чтобы разрушать окно каждый раз, вы можете просто скрыть его с помощью функции-члена wxWindow::Show(), передав в качестве аргумента false, когда получите wxCloseEvent.Затем вы накладываете вето на wxCloseEvent, чтобы WxWidgets не разрушал ваше окно:

// In your close handler:
if(evt.CanVeto()) // Where evt is a wxCloseEvent
{
    Show(false);  // Hide window
    evt.Veto();   // Prevent window destruction
}

Это должно удалить его с экрана, но все инициализированные части все еще должны быть там.Если вам нужно показать его снова, вызовите метод Show() еще раз с true.

...