X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c8026dea6cf102fb741f132142f9d6584d3e0cef..c29e714c378d7e3164d71e2c306d990802fe678b:/include/wx/msw/evtloop.h diff --git a/include/wx/msw/evtloop.h b/include/wx/msw/evtloop.h index 1d745152bc..fd548b87f2 100644 --- a/include/wx/msw/evtloop.h +++ b/include/wx/msw/evtloop.h @@ -12,30 +12,43 @@ #ifndef _WX_MSW_EVTLOOP_H_ #define _WX_MSW_EVTLOOP_H_ +#if wxUSE_GUI +#include "wx/window.h" +#endif + // ---------------------------------------------------------------------------- // wxEventLoop // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxEventLoop : public wxEventLoopManual +class WXDLLIMPEXP_BASE wxMSWEventLoopBase : public wxEventLoopManual { public: - wxEventLoop(); + wxMSWEventLoopBase(); // implement base class pure virtuals - virtual void Exit(int rc = 0); virtual bool Pending() const; - virtual bool Dispatch(); - // MSW-specific methods - // -------------------- +protected: + // get the next message from queue and return true or return false if we + // got WM_QUIT or an error occurred + bool GetNextMessage(WXMSG *msg); +}; + +#if wxUSE_GUI + +class WXDLLIMPEXP_CORE wxGUIEventLoop : public wxMSWEventLoopBase +{ +public: + wxGUIEventLoop() { } + + // process a single message: calls PreProcessMessage() before dispatching + // it + virtual void ProcessMessage(WXMSG *msg); // preprocess a message, return true if processed (i.e. no further // dispatching required) virtual bool PreProcessMessage(WXMSG *msg); - // process a single message - virtual void ProcessMessage(WXMSG *msg); - // set the critical window: this is the window such that all the events // except those to this window (and its children) stop to be processed // (typical examples: assert or crash report dialog) @@ -51,7 +64,14 @@ public: return !ms_winCritical || IsChildOfCriticalWindow(win); } + // override/implement base class virtuals + virtual bool Dispatch(); + virtual void WakeUp(); + protected: + virtual void OnNextIteration(); + +private: // check if the given window is a child of ms_winCritical (which must be // non NULL) static bool IsChildOfCriticalWindow(wxWindowMSW *win); @@ -61,5 +81,25 @@ protected: static wxWindowMSW *ms_winCritical; }; -#endif // _WX_MSW_EVTLOOP_H_ +#else // !wxUSE_GUI + +#if wxUSE_CONSOLE_EVENTLOOP + +class WXDLLIMPEXP_BASE wxConsoleEventLoop : public wxMSWEventLoopBase +{ +public: + wxConsoleEventLoop() { } + + // override/implement base class virtuals + virtual bool Dispatch(); + virtual void WakeUp(); + +protected: + virtual void OnNextIteration(); +}; +#endif // wxUSE_CONSOLE_EVENTLOOP + +#endif // wxUSE_GUI/!wxUSE_GUI + +#endif // _WX_MSW_EVTLOOP_H_