X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0fcbaf23fd4ab7bcb0f3bc7cb9b7cf0ee28de744..2d9c0e97c580cff977d75760dc0d82c5852eec2c:/include/wx/app.h diff --git a/include/wx/app.h b/include/wx/app.h index d01a8c6d59..35d9b5d06e 100644 --- a/include/wx/app.h +++ b/include/wx/app.h @@ -26,11 +26,11 @@ #include "wx/build.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 @@ -97,6 +97,9 @@ public: // class version! 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 // continuing. The command line is normally parsed here, call the base @@ -302,7 +305,7 @@ protected: #if wxUSE_GUI -class WXDLLEXPORT wxAppBase : public wxAppConsole +class WXDLLIMPEXP_CORE wxAppBase : public wxAppConsole { public: wxAppBase(); @@ -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) @@ -557,15 +567,19 @@ public: #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); \ }