#if wxUSE_GUI
#include "wx/window.h" // for wxTopLevelWindows
+
+ #include "wx/vidmode.h"
#endif // wxUSE_GUI
#include "wx/build.h"
class WXDLLIMPEXP_BASE wxLog;
class WXDLLIMPEXP_BASE wxMessageOutput;
-class WXDLLEXPORT wxEventLoop;
+// wxUSE_EVTLOOP_IN_APP is a temporary hack needed until all ports are updated
+// to use wxEventLoop, otherwise we get linking errors on wxMac, it's going to
+// disappear a.s.a.p.
+#ifdef __WXMAC__
+ #define wxUSE_EVTLOOP_IN_APP 0
+#else
+ #define wxUSE_EVTLOOP_IN_APP 1
+ class WXDLLEXPORT wxEventLoop;
+#endif
// ----------------------------------------------------------------------------
// typedefs
wxPRINT_POSTSCRIPT = 2
};
-// ----------------------------------------------------------------------------
-// support for framebuffer ports
-// ----------------------------------------------------------------------------
-
-#if wxUSE_GUI
-// 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 WXDLLIMPEXP_CORE wxDisplayModeInfo
-{
-public:
- wxDisplayModeInfo() : m_ok(FALSE) {}
- wxDisplayModeInfo(unsigned width, unsigned height, unsigned depth)
- : m_width(width), m_height(height), m_depth(depth), m_ok(TRUE) {}
-
- unsigned GetWidth() const { return m_width; }
- unsigned GetHeight() const { return m_height; }
- unsigned GetDepth() const { return m_depth; }
- bool IsOk() const { return m_ok; }
-
-private:
- unsigned m_width, m_height, m_depth;
- bool m_ok;
-};
-#endif // wxUSE_GUI
-
-
// ----------------------------------------------------------------------------
// wxAppConsole: wxApp for non-GUI applications
// ----------------------------------------------------------------------------
// crash.
virtual void OnFatalException() { }
+#if wxUSE_EXCEPTIONS
+ // function called if an uncaught exception is caught inside the main
+ // event loop: it may return true to continue running the event loop or
+ // false to stop it (in the latter case it may rethrow the exception as
+ // well)
+ virtual bool OnExceptionInMainLoop() {
+ throw;
+#if defined(__DMC__) || (defined(_MSC_VER) && _MSC_VER < 1200)
+ return false;
+#endif
+ }
+
+ // Called when an unhandled C++ exception occurs inside OnRun(): note that
+ // the exception type is lost by now, so if you really want to handle the
+ // exception you should override OnRun() and put a try/catch around
+ // MainLoop() call there
+ virtual void OnUnhandledException() { }
+#endif // wxUSE_EXCEPTIONS
+
// Called from wxExit() function, should terminate the application a.s.a.p.
virtual void Exit();
// had been already processed or won't be processed at all, respectively
virtual int FilterEvent(wxEvent& event);
+#if wxUSE_EXCEPTIONS
+ // call the specified handler on the given object with the given event
+ //
+ // this method only exists to allow catching the exceptions thrown by any
+ // event handler, it would lead to an extra (useless) virtual function call
+ // if the exceptions were not used, so it doesn't even exist in that case
+ virtual void HandleEvent(wxEvtHandler *handler,
+ wxEventFunction func,
+ wxEvent& event) const;
+#endif // wxUSE_EXCEPTIONS
+
// process all events in the wxPendingEvents list -- it is necessary to
// call this function to process posted events. This happens during each
// event loop iteration in GUI mode but if there is no main loop, it may be
// stop the program immediately!)
virtual void ExitMainLoop();
- // returns true if the program is initialized, i.e. OnInit() has been
- // completed successfully
- virtual bool Initialized() = 0;
-
// returns TRUE if there are unprocessed events in the event queue
virtual bool Pending();
// Get display mode that is used use. This is only used in framebuffer
// wxWin ports (such as wxMGL).
- virtual wxDisplayModeInfo GetDisplayMode() const { return wxDisplayModeInfo(); }
+ virtual wxVideoMode GetDisplayMode() const { return wxVideoMode(); }
// Set display mode to use. This is only used in framebuffer wxWin
// ports (such as wxMGL). This method should be called from
// wxApp::OnInitGui
- virtual bool SetDisplayMode(const wxDisplayModeInfo& WXUNUSED(info)) { return TRUE; }
+ virtual bool SetDisplayMode(const wxVideoMode& WXUNUSED(info)) { return TRUE; }
// set use of best visual flag (see below)
void SetUseBestVisual( bool flag ) { m_useBestVisual = flag; }
// deactivated
virtual void SetActive(bool isActive, wxWindow *lastFocus);
+ // OBSOLETE: don't use, always returns true
+ //
+ // returns true if the program is successfully initialized
+ bool Initialized() { return true; }
+
protected:
// delete all objects in wxPendingDelete list
virtual wxAppTraits *CreateTraits();
+#if wxUSE_EVTLOOP_IN_APP
// the main event loop of the application (may be NULL if the loop hasn't
// been started yet or has already terminated)
wxEventLoop *m_mainLoop;
+#endif // wxUSE_EVTLOOP_IN_APP
// the main top level window (may be NULL)
wxWindow *m_topWindow;
// we need HINSTANCE declaration to define WinMain()
#include "wx/msw/wrapwin.h"
- #ifdef SW_SHOWNORMAL
- #define wxSW_SHOWNORMAL SW_SHOWNORMAL
+ #ifndef SW_SHOWNORMAL
+ #define SW_SHOWNORMAL 1
+ #endif
+
+ // WinMain() is always ANSI, even in Unicode build, under normal Windows
+ // but is always Unicode under CE
+ #ifdef __WXWINCE__
+ typedef wchar_t *wxCmdLineArgType;
#else
- #define wxSW_SHOWNORMAL 0
+ typedef char *wxCmdLineArgType;
#endif
#define IMPLEMENT_WXWIN_MAIN \
extern int wxEntry(HINSTANCE hInstance, \
HINSTANCE hPrevInstance = NULL, \
- char *pCmdLine = NULL, \
- int nCmdShow = wxSW_SHOWNORMAL); \
+ wxCmdLineArgType pCmdLine = NULL, \
+ int nCmdShow = SW_SHOWNORMAL); \
extern "C" int WINAPI WinMain(HINSTANCE hInstance, \
HINSTANCE hPrevInstance, \
- char *lpCmdLine, \
+ wxCmdLineArgType lpCmdLine, \
int nCmdShow) \
{ \
return wxEntry(hInstance, hPrevInstance, lpCmdLine, nCmdShow); \