#include <wx\wx.h>
class Form :public wxApp
{
wxFrame*window;
public:
bool OnInit()
{
window = new wxFrame(nullptr, -1, "Form", wxPoint(100, 100), wxSize(840, 640));
window->Centre(wxBOTH);
window->Show(true);
return true;
}
~Form()
{
wxMessageBox("Bye", "Info");
}
};
class Win :public wxApp
{
wxFrame*window;
public:
bool OnInit()
{
window = new wxFrame(nullptr, -1, "hi", wxPoint(100, 100), wxSize(840, 640));
window->Centre(wxBOTH);
window->Show(true);
Form *form = new Form();
form->OnInit();
return true;
}
void form_close()
{
wxMessageBox("Form closed", "Info");
}
};
IMPLEMENT_APP(Win);
как отследить закрытие окна Form в Win
Для начала вам надо разобраться какое именно событие вы хотите отследить - закрытие окна (в вашем случае, представленного экземпляром класса wxFrame) или закрытие всего приложения.
Первое имеет тип wxEVT_CLOSE_WINDOW и произойдет при нажатии пользователем на кнопку закрытия или создано программно, после вызова функции Close/1.
Чтобы его обработать можно воспользоваться таблицей событий или с помощью wxEvtHandler::Bind<>(), если ваш компилятор умеет задействовать возможности C++11. Пример:
frame->Bind(wxEVT_CLOSE_WINDOW, [&](wxCloseEvent& event)
{
if ( event.CanVeto())
{
if ( wxMessageBox("Уверены что хотите закрыть?",
"Подтвердите действие",
wxICON_QUESTION | wxYES_NO) != wxYES )
{
event.Veto();
return;
}
}
event.Skip();//вызовет Destroy/0 по-умолчанию
});
тоже самое можно сделать и в конструкторе фрейма:
Bind(wxEVT_CLOSE_WINDOW, [&](wxCloseEvent& event)
{
if ( event.CanVeto())
{
if ( wxMessageBox("Уверены что хотите закрыть?",
"Подтвердите действие",
wxICON_QUESTION | wxYES_NO) != wxYES )
{
event.Veto();
return;
}
}
event.Skip();
});
Если про второе, то для выполнения операций при закрытии приложения(оно выполняется автоматически после уничтожения всех окон[речь об обычном GUI приложении]), достаточно перегрузить функцию OnExit/0. При неудачном вызове OnInit/0 функция OnExit/0 не вызывается.
Как обычно, подробности вы можете прочесть в документации(она на английском):
Советую также обратить внимание на примеры из папки samples - они очень полезны.
Из файла нужно считать массив в таблицу, а затем производить манипуляции с этой таблицей:
Вот код для подключения Sql Lite файла но не может открыть Db файл в правильном директории
Здравствуйтедве недели назад столкнулся с проблемой и никак не могу ее решить