- wxCHECK_MSG( wxTheApp, -1, wxT("wxWindows error: no application object") );
-
- wxTheApp->argc = argc;
-#if wxUSE_UNICODE
- wxTheApp->argv = new wxChar*[argc+1];
- int mb_argc = 0;
- while (mb_argc < argc)
- {
- wxTheApp->argv[mb_argc] = wxStrdup(wxConvLibc.cMB2WX(argv[mb_argc]));
- mb_argc++;
- }
- wxTheApp->argv[mb_argc] = (wxChar *)NULL;
-#else
- wxTheApp->argv = argv;
-#endif
-
- wxString name(wxFileNameFromPath(argv[0]));
- wxStripExtension( name );
- wxTheApp->SetAppName( name );
-
- int retValue;
- retValue = wxEntryInitGui();
-
- // Here frames insert themselves automatically into wxTopLevelWindows by
- // getting created in OnInit().
- if ( retValue == 0 )
- {
- if ( !wxTheApp->OnInit() )
- retValue = -1;
- }
-
- if ( retValue == 0 )
- {
- // Delete pending toplevel windows
- wxTheApp->DeletePendingObjects();
-
- // When is the app not initialized ?
- wxTheApp->m_initialized = TRUE;
-
- if (wxTheApp->Initialized())
- {
- wxTheApp->OnRun();
-
- wxWindow *topWindow = wxTheApp->GetTopWindow();
-
- // Delete all pending windows if any
- wxTheApp->DeletePendingObjects();
-
- // Reset top window
- if (topWindow)
- wxTheApp->SetTopWindow( (wxWindow*) NULL );
-
- retValue = wxTheApp->OnExit();
- }
- }
-
- wxEntryCleanup();
-
- return retValue;