#include "../xvaga/wxinc.h" #include "xvt.h" #include #include extern int xvt_main(int argc, char** argv); class TMainApp : public wxApp { wxSingleInstanceChecker* m_sic; protected: virtual bool OnInit(); virtual int OnExit(); void OnTimer(wxTimerEvent& evt); DECLARE_EVENT_TABLE() DECLARE_DYNAMIC_CLASS(TMainApp); }; IMPLEMENT_DYNAMIC_CLASS(TMainApp, wxApp) IMPLEMENT_APP(TMainApp) #define TIMER_ID 883 BEGIN_EVENT_TABLE(TMainApp, wxApp) EVT_TIMER(TIMER_ID, TMainApp::OnTimer) END_EVENT_TABLE() void TMainApp::OnTimer(wxTimerEvent& evt) { xvt_app_pre_create(); xvt_main(argc, argv); } bool TMainApp::OnInit() { const wxFileName strWrk = argv[0]; const wxString strApp = strWrk.GetName().Lower(); m_sic = new wxSingleInstanceChecker(strApp); xvt_vobj_set_attr(NULL_WIN, ATTR_APPL_ALREADY_RUNNING, m_sic->IsAnotherRunning()); // Non eseguo direttamente xvt_main per dar modo al main event loop di partire wxTimerEvent evt(TIMER_ID); AddPendingEvent(evt); return true; } int TMainApp::OnExit() { delete m_sic; m_sic = NULL; return wxApp::OnExit(); }