bool Application::OnInit() { wxSocketBase::Initialize(); UI::Initialize(); m_isLogin = false; m_checker = new wxSingleInstanceChecker(); if (m_checker->IsAnotherRunning()) { return false; } LoginDialog * dialog = new LoginDialog(); if (dialog->ShowModal() == wxID_OK) { wxString id = dialog->GetId(); wxString password = dialog->GetPassword(); UI& ui = UI::Instance(); m_isLogin = true; ui.mainframe = new MainFrame(); ui.mainframe->Show(); ui.taskIcon = new TaskIcon(); } delete dialog; if(m_isLogin == false) { delete m_checker; dialog = nullptr; UI::Release(); ClientFileTransfer::Release(); return false; } ClientFileTransfer::Instance().AddCommand(new CommandGetRemainedFileList()); return true; }