1 /////////////////////////////////////////////////////////////////////////////// 2 // Name: src/msw/basemsw.cpp 3 // Purpose: misc stuff only used in console applications under MSW 4 // Author: Vadim Zeitlin 5 // Modified by: 6 // Created: 22.06.2003 7 // Copyright: (c) 2003 Vadim Zeitlin <vadim@wxwindows.org> 8 // Licence: wxWindows licence 9 /////////////////////////////////////////////////////////////////////////////// 10 11 // ============================================================================ 12 // declarations 13 // ============================================================================ 14 15 // ---------------------------------------------------------------------------- 16 // headers 17 // ---------------------------------------------------------------------------- 18 19 // for compilers that support precompilation, includes "wx.h". 20 #include "wx/wxprec.h" 21 22 #ifdef __BORLANDC__ 23 #pragma hdrstop 24 #endif 25 26 #ifndef WX_PRECOMP 27 #include "wx/event.h" 28 #endif //WX_PRECOMP 29 30 #include "wx/apptrait.h" 31 #include "wx/evtloop.h" 32 #include "wx/msw/private/timer.h" 33 // MBN: this is a workaround for MSVC 5: if it is not #included in 34 // some wxBase file, wxRecursionGuard methods won't be exported from 35 // wxBase.dll, and MSVC 5 will give linker errors 36 #include "wx/recguard.h" 37 38 #include "wx/crt.h" 39 #include "wx/msw/private.h" 40 41 // ============================================================================ 42 // wxAppTraits implementation 43 // ============================================================================ 44 45 #if wxUSE_THREADS DoSimpleWaitForThread(WXHANDLE hThread)46WXDWORD wxAppTraits::DoSimpleWaitForThread(WXHANDLE hThread) 47 { 48 return ::WaitForSingleObject((HANDLE)hThread, INFINITE); 49 } 50 #endif // wxUSE_THREADS 51 52 // ============================================================================ 53 // wxConsoleAppTraits implementation 54 // ============================================================================ 55 BeforeChildWaitLoop()56void *wxConsoleAppTraits::BeforeChildWaitLoop() 57 { 58 // nothing to do here 59 return NULL; 60 } 61 AfterChildWaitLoop(void * WXUNUSED (data))62void wxConsoleAppTraits::AfterChildWaitLoop(void * WXUNUSED(data)) 63 { 64 // nothing to do here 65 } 66 67 #if wxUSE_THREADS DoMessageFromThreadWait()68bool wxConsoleAppTraits::DoMessageFromThreadWait() 69 { 70 // nothing to process here 71 return true; 72 } 73 WaitForThread(WXHANDLE hThread,int WXUNUSED (flags))74WXDWORD wxConsoleAppTraits::WaitForThread(WXHANDLE hThread, int WXUNUSED(flags)) 75 { 76 return DoSimpleWaitForThread(hThread); 77 } 78 #endif // wxUSE_THREADS 79 80 #if wxUSE_TIMER 81 CreateTimerImpl(wxTimer * timer)82wxTimerImpl *wxConsoleAppTraits::CreateTimerImpl(wxTimer *timer) 83 { 84 return new wxMSWTimerImpl(timer); 85 } 86 87 #endif // wxUSE_TIMER 88 CreateEventLoop()89wxEventLoopBase *wxConsoleAppTraits::CreateEventLoop() 90 { 91 #if wxUSE_CONSOLE_EVENTLOOP 92 return new wxEventLoop(); 93 #else // !wxUSE_CONSOLE_EVENTLOOP 94 return NULL; 95 #endif // wxUSE_CONSOLE_EVENTLOOP/!wxUSE_CONSOLE_EVENTLOOP 96 } 97 98 WriteToStderr(const wxString & text)99bool wxConsoleAppTraits::WriteToStderr(const wxString& text) 100 { 101 return wxFprintf(stderr, "%s", text) != -1; 102 } 103