X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9482617091b084d4ee006679a450176715d465e0..75d3838010e2d8a9592a4a016e2994f4f0d3070b:/include/wx/app.h diff --git a/include/wx/app.h b/include/wx/app.h index 5ed82cebef..35d9b5d06e 100644 --- a/include/wx/app.h +++ b/include/wx/app.h @@ -24,13 +24,13 @@ #endif // wxUSE_GUI #include "wx/build.h" -#include "wx/init.h" +#include "wx/init.h" // we must declare wxEntry() -class WXDLLEXPORT wxApp; -class WXDLLEXPORT wxAppTraits; -class WXDLLEXPORT wxCmdLineParser; -class WXDLLEXPORT wxLog; -class WXDLLEXPORT wxMessageOutput; +class WXDLLIMPEXP_CORE wxApp; +class WXDLLIMPEXP_BASE wxAppTraits; +class WXDLLIMPEXP_BASE wxCmdLineParser; +class WXDLLIMPEXP_BASE wxLog; +class WXDLLIMPEXP_BASE wxMessageOutput; // ---------------------------------------------------------------------------- // typedefs @@ -57,7 +57,7 @@ enum // VS: Fullscreen/framebuffer application needs to choose display mode prior // to wxWindows initialization. This class holds information about display // mode. It is used by wxApp::Set/GetDisplayMode. -class WXDLLEXPORT wxDisplayModeInfo +class WXDLLIMPEXP_CORE wxDisplayModeInfo { public: wxDisplayModeInfo() : m_ok(FALSE) {} @@ -79,7 +79,7 @@ private: // wxAppConsole: wxApp for non-GUI applications // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxAppConsole : public wxEvtHandler +class WXDLLIMPEXP_BASE wxAppConsole : public wxEvtHandler { public: // ctor and dtor @@ -95,7 +95,10 @@ public: // reason, you must override it (instead of just overriding OnInit(), as // usual, for app-specific initializations), do not forget to call the base // class version! - virtual bool Initialize(int argc, wxChar **argv); + virtual bool Initialize(int& argc, wxChar **argv); + + // This gives wxCocoa a chance to call OnInit() with a memory pool in place + virtual bool CallOnInit() { return OnInit(); } // Called before OnRun(), this is a good place to do initialization -- if // anything fails, return false from here to prevent the program from @@ -302,7 +305,7 @@ protected: #if wxUSE_GUI -class WXDLLEXPORT wxAppBase : public wxAppConsole +class WXDLLIMPEXP_CORE wxAppBase : public wxAppConsole { public: wxAppBase(); @@ -314,7 +317,7 @@ public: // very first initialization function // // Override: very rarely - virtual bool Initialize(int argc, wxChar **argv); + virtual bool Initialize(int& argc, wxChar **argv); // a platform-dependent version of OnInit(): the code here is likely to // depend on the toolkit. default version does nothing. @@ -376,7 +379,14 @@ public: // parties // // it should return TRUE if more idle events are needed, FALSE if not - virtual bool ProcessIdle() = 0; + virtual bool ProcessIdle() ; + + // Send idle event to window and all subwindows + // Returns TRUE if more idle time is requested. + virtual bool SendIdleEvents(wxWindow* win, wxIdleEvent& event); + + // Perform standard OnIdle behaviour: call from port's OnIdle + void OnIdle(wxIdleEvent& event); // top level window functions @@ -503,7 +513,7 @@ protected: #endif #else // !GUI // can't use typedef because wxApp forward declared as a class - class WXDLLEXPORT wxApp : public wxAppConsole + class WXDLLIMPEXP_BASE wxApp : public wxAppConsole { }; #endif // GUI/!GUI @@ -516,7 +526,7 @@ protected: // is discouraged, consider using DECLARE_APP() after which you may call // wxGetApp() which will return the object of the correct type (i.e. MyApp and // not wxApp) -WXDLLEXPORT_DATA(extern wxApp*) wxTheApp; +WXDLLIMPEXP_DATA_BASE(extern wxApp*) wxTheApp; // ---------------------------------------------------------------------------- // global functions @@ -526,13 +536,13 @@ WXDLLEXPORT_DATA(extern wxApp*) wxTheApp; // ------------------------------------------------------ // Force an exit from main loop -extern void WXDLLEXPORT wxExit(); +extern void WXDLLIMPEXP_BASE wxExit(); // Yield to other apps/messages -extern bool WXDLLEXPORT wxYield(); +extern bool WXDLLIMPEXP_BASE wxYield(); // Yield to other apps/messages -extern void WXDLLEXPORT wxWakeUpIdle(); +extern void WXDLLIMPEXP_BASE wxWakeUpIdle(); // ---------------------------------------------------------------------------- // macros for dynamic creation of the application object @@ -542,7 +552,7 @@ extern void WXDLLEXPORT wxWakeUpIdle(); // creator function. wxApp can then call this function to create a new app // object. Convoluted, but necessary. -class WXDLLEXPORT wxAppInitializer +class WXDLLIMPEXP_BASE wxAppInitializer { public: wxAppInitializer(wxAppInitializerFunction fn) @@ -553,25 +563,23 @@ public: // be in your main program (e.g. hello.cpp). Now IMPLEMENT_APP should add this // code if required. -#if !wxUSE_GUI || defined(__WXMOTIF__) || defined(__WXGTK__) || defined(__WXPM__) || defined(__WXMGL__) || defined(__WXCOCOA__) - #define IMPLEMENT_WXWIN_MAIN \ - extern int wxEntry( int argc, char **argv ); \ - int main(int argc, char **argv) { return wxEntry(argc, argv); } -#elif defined(__WXMAC__) - // wxMac seems to have a specific wxEntry prototype - #define IMPLEMENT_WXWIN_MAIN \ - extern int wxEntry( int argc, char **argv, bool enterLoop = TRUE ); \ +#if !wxUSE_GUI || !defined(__WXMSW__) + #define IMPLEMENT_WXWIN_MAIN \ int main(int argc, char **argv) { return wxEntry(argc, argv); } #elif defined(__WXMSW__) && defined(WXUSINGDLL) + // we need HINSTANCE declaration to define WinMain() + #include + #include "wx/msw/winundef.h" + #define IMPLEMENT_WXWIN_MAIN \ - extern int wxEntry(WXHINSTANCE hInstance, \ - WXHINSTANCE hPrevInstance, \ - char *pCmdLine, \ - int nCmdShow); \ - extern "C" int wxSTDCALL WinMain(WXHINSTANCE hInstance, \ - WXHINSTANCE hPrevInstance, \ - char *lpCmdLine, \ - int nCmdShow) \ + extern int wxEntry(HINSTANCE hInstance, \ + HINSTANCE hPrevInstance = NULL, \ + char *pCmdLine = NULL, \ + int nCmdShow = SW_NORMAL); \ + extern "C" int WINAPI WinMain(HINSTANCE hInstance, \ + HINSTANCE hPrevInstance, \ + char *lpCmdLine, \ + int nCmdShow) \ { \ return wxEntry(hInstance, hPrevInstance, lpCmdLine, nCmdShow); \ }