#if _WIN32_IE >= 0x0300 && \
(!defined(__MINGW32__) || wxCHECK_W32API_VERSION( 2, 0 )) && \
- !defined(__CYGWIN__)
+ !defined(__CYGWIN__) && !defined(__WXWINCE__)
#include <shlwapi.h>
#endif
// global variables
// ---------------------------------------------------------------------------
-extern wxChar *wxBuffer;
extern wxList WXDLLEXPORT wxPendingDelete;
-#ifndef __WXMICROWIN__
+
+#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
extern void wxSetKeyboardHook(bool doIt);
#endif
wxWindow *winActive = new wxFrame
(
wxTheApp->GetTopWindow(),
- -1,
- _T(""),
+ wxID_ANY,
+ wxEmptyString,
wxPoint(32600, 32600),
wxSize(1, 1),
wxDEFAULT_FRAME_STYLE | wxFRAME_NO_TASKBAR
};
//// Initialize
-bool wxApp::Initialize(int argc, wxChar **argv)
+bool wxApp::Initialize(int& argc, wxChar **argv)
{
if ( !wxAppBase::Initialize(argc, argv) )
return false;
// program under Win9x w/o MSLU emulation layer - if so, abort right now
// as it has no chance to work
#if wxUSE_UNICODE && !wxUSE_UNICODE_MSLU
- if ( wxGetOsVersion() != wxWINDOWS_NT )
+ if ( wxGetOsVersion() != wxWINDOWS_NT && wxGetOsVersion() != wxWINDOWS_CE )
{
// note that we can use MessageBoxW() as it's implemented even under
// Win9x - OTOH, we can't use wxGetTranslation() because the file APIs
::MessageBox
(
NULL,
- _T("This program uses Unicode and requires Windows NT/2000/XP.\nProgram aborted."),
+ _T("This program uses Unicode and requires Windows NT/2000/XP/CE.\nProgram aborted."),
_T("wxWindows Fatal Error"),
MB_ICONERROR | MB_OK
);
}
#endif // wxUSE_UNICODE && !wxUSE_UNICODE_MSLU
- wxBuffer = new wxChar[1500]; // FIXME
-
#if defined(__WIN95__) && !defined(__WXMICROWIN__)
InitCommonControls();
#endif // __WIN95__
#if wxUSE_OLE
// we need to initialize OLE library
+#ifdef __WXWINCE__
+ if ( FAILED(::CoInitializeEx(NULL, COINIT_MULTITHREADED)) )
+ wxLogError(_("Cannot initialize OLE"));
+#else
if ( FAILED(::OleInitialize(NULL)) )
wxLogError(_("Cannot initialize OLE"));
#endif
+#endif
#endif // wxUSE_OLE
RegisterWindowClasses();
-#ifndef __WXMICROWIN__
+#if defined(__WXMICROWIN__) && !defined(__WXWINCE__)
// Create the brush for disabling bitmap buttons
LOGBRUSH lb;
if (wxDummyChar) wxDummyChar++;
#endif
-#ifndef __WXMICROWIN__
+#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
wxSetKeyboardHook(TRUE);
#endif
void wxApp::CleanUp()
{
- delete[] wxBuffer;
- wxBuffer = NULL;
-
-#ifndef __WXMICROWIN__
+#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
wxSetKeyboardHook(FALSE);
#endif
::DeleteObject( wxDisableButtonBrush );
#if wxUSE_OLE
+#ifdef __WXWINCE__
+ ::CoUninitialize();
+#else
::OleUninitialize();
+#endif
#endif
// for an EXE the classes are unregistered when it terminates but DLL may
return s_currentMsg.wParam;
}
-// Returns TRUE if more time is needed.
-bool wxApp::ProcessIdle()
-{
- wxIdleEvent event;
- event.SetEventObject(this);
- ProcessEvent(event);
-
- return event.MoreRequested();
-}
-
void wxApp::ExitMainLoop()
{
// this will set m_keepGoing to FALSE a bit later
return;
wxIsInOnIdleFlag = TRUE;
-
- // If there are pending events, we must process them: pending events
- // are either events to the threads other than main or events posted
- // with wxPostEvent() functions
- // GRG: I have moved this here so that all pending events are processed
- // before starting to delete any objects. This behaves better (in
- // particular, wrt wxPostEvent) and is coherent with wxGTK's current
- // behaviour. Changed Feb/2000 before 2.1.14
- ProcessPendingEvents();
-
- // 'Garbage' collection of windows deleted with Close().
- DeletePendingObjects();
-
-#if wxUSE_LOG
- // flush the logged messages if any
- wxLog::FlushActive();
-#endif // wxUSE_LOG
+
+ wxAppBase::OnIdle(event);
#if wxUSE_DC_CACHEING
// automated DC cache management: clear the cached DCs and bitmap
wxDC::ClearCache();
#endif // wxUSE_DC_CACHEING
- // Send OnIdle events to all windows
- if ( SendIdleEvents() )
- {
- // SendIdleEvents() returns TRUE if at least one window requested more
- // idle events
- event.RequestMore(TRUE);
- }
-
wxIsInOnIdleFlag = FALSE;
}
-// Send idle event to all top-level windows
-bool wxApp::SendIdleEvents()
-{
- bool needMore = FALSE;
-
- wxWindowList::Node* node = wxTopLevelWindows.GetFirst();
- while (node)
- {
- wxWindow* win = node->GetData();
- if (SendIdleEvents(win))
- needMore = TRUE;
- node = node->GetNext();
- }
-
- return needMore;
-}
-
-// Send idle event to window and all subwindows
-bool wxApp::SendIdleEvents(wxWindow* win)
-{
- wxIdleEvent event;
- event.SetEventObject(win);
- win->GetEventHandler()->ProcessEvent(event);
-
- bool needMore = event.MoreRequested();
-
- wxWindowList::Node *node = win->GetChildren().GetFirst();
- while ( node )
- {
- wxWindow *win = node->GetData();
- if (SendIdleEvents(win))
- needMore = TRUE;
-
- node = node->GetNext();
- }
-
- return needMore;
-}
-
void wxApp::WakeUpIdle()
{
// Send the top window a dummy message so idle handler processing will
/* static */
int wxApp::GetComCtl32Version()
{
-#ifdef __WXMICROWIN__
+#if defined(__WXMICROWIN__) || defined(__WXWINCE__)
return 0;
#else
// cache the result