#include "wx/dialog.h"
#include "wx/msgdlg.h"
#include "wx/intl.h"
+ #include "wx/dynarray.h"
#endif
#include "wx/msw/private.h"
// Also, OLE is used not just for drag and drop (it's used by automatn.cpp).
// #if wxUSE_DRAG_AND_DROP
#if !defined(__GNUWIN32__) && !defined(__SC__) && !defined(__SALFORDC__)
-#include <ole2.h>
+ #include <ole2.h>
#endif
-// #endif
-
#include <string.h>
#include <ctype.h>
#include <commctrl.h>
#endif
-// use debug CRT functions for memory leak detections in VC++ if we're not
-// using wxWindows own methods
-#if defined(__WXDEBUG__) && defined(_MSC_VER) && !wxUSE_GLOBAL_MEMORY_OPERATORS && !defined(__NO_VC_CRTDBG__)
- #define wxUSE_VC_CRTDBG
-#else
- #undef wxUSE_VC_CRTDBG
-#endif
-
-#ifdef wxUSE_VC_CRTDBG
- // VC++ uses this macro as debug/release mode indicator
- #ifndef _DEBUG
- #define _DEBUG
- #endif
-
- /* Need to undef new if including crtdbg.h */
- #ifdef new
- #undef new
- #endif
-
- #include <crtdbg.h>
-
- #if defined(__WXDEBUG__) && wxUSE_GLOBAL_MEMORY_OPERATORS && wxUSE_DEBUG_NEW_ALWAYS
- #define new new(__FILE__,__LINE__)
- #endif
-#endif // wxUSE_VC_CRTDBG
+#include "wx/msw/msvcrt.h"
extern char *wxBuffer;
extern char *wxOsVersion;
wxBuffer = new char[1500];
-#ifdef wxUSE_VC_CRTDBG
- // do check for memory leaks on program exit
- // (another useful flag is _CRTDBG_DELAY_FREE_MEM_DF which doesn't free
- // deallocated memory which may be used to simulate low-memory condition)
- _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF);
-#endif // debug build under MS VC++
-
wxClassInfo::InitializeClasses();
#if wxUSE_RESOURCES
wxFatalError(_("Cannot initialize OLE"));
#endif
-#if CTL3D
+#if wxUSE_CTL3D
if (!Ctl3dRegister(wxhInstance))
wxFatalError("Cannot register CTL3D");
wxWinHandleList = new wxList(wxKEY_INTEGER);
- // This is to foil optimizations in Visual C++ that
- // throw out dummy.obj.
-#if defined(_MSC_VER) && !defined(WXMAKINGDLL)
+ // This is to foil optimizations in Visual C++ that throw out dummy.obj.
+ // PLEASE DO NOT ALTER THIS.
+#if defined(__VISUALC__) && !defined(WXMAKINGDLL)
extern char wxDummyChar;
if (wxDummyChar) wxDummyChar++;
#endif
// Register the frame window class.
WNDCLASS wndclass; // Structure used to register Windows class.
- wndclass.style = CS_HREDRAW | CS_VREDRAW;
+ wndclass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS ;
wndclass.lpfnWndProc = (WNDPROC)wxWndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = sizeof( DWORD ); // was 4
// Register the MDI frame window class.
WNDCLASS wndclass1; // Structure used to register Windows class.
- wndclass1.style = CS_HREDRAW | CS_VREDRAW;
+ wndclass1.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS ;
wndclass1.lpfnWndProc = (WNDPROC)wxWndProc;
wndclass1.cbClsExtra = 0;
wndclass1.cbWndExtra = sizeof( DWORD ); // was 4
// Register the MDI child frame window class.
WNDCLASS wndclass4; // Structure used to register Windows class.
- wndclass4.style = CS_HREDRAW | CS_VREDRAW;
+ wndclass4.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS ;
wndclass4.lpfnWndProc = (WNDPROC)wxWndProc;
wndclass4.cbClsExtra = 0;
wndclass4.cbWndExtra = sizeof( DWORD ); // was 4
// Register the panel window class.
WNDCLASS wndclass2; // Structure used to register Windows class.
memset(&wndclass2, 0, sizeof(WNDCLASS)); // start with NULL defaults
- // Use CS_OWNDC to avoid messing about restoring the context
- // for every graphic operation.
- wndclass2.style = CS_HREDRAW | CS_VREDRAW;
+ wndclass2.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS ;
wndclass2.lpfnWndProc = (WNDPROC)wxWndProc;
wndclass2.cbClsExtra = 0;
wndclass2.cbWndExtra = sizeof( DWORD ); // was 4
::GetModuleFileName(wxhInstance, name, WXSIZEOF(name));
// GNUWIN32 already fills in the first arg with the application name.
-#if !defined(__GNUWIN32__)
+ // JACS: apparently not now (b20 and above?)
+#if 0 // !defined(__GNUWIN32__)
args.Add(name);
count ++;
#endif
void wxApp::CleanUp()
{
//// COMMON CLEANUP
+
+ // flush the logged messages if any
+ wxLog *pLog = wxLog::GetActiveTarget();
+ if ( pLog != NULL && pLog->HasPendingMessages() )
+ pLog->Flush();
+
+ // One last chance for pending objects to be cleaned up
+ wxTheApp->DeletePendingObjects();
+
wxModule::CleanUpModules();
#if wxUSE_WX_RESOURCES
::OleUninitialize();
#endif
-#if CTL3D
+#if wxUSE_CTL3D
Ctl3dUnregister(wxhInstance);
#endif
#if !defined(_WINDLL) || (defined(_WINDLL) && defined(WXMAKINGDLL))
// temporarily disable this warning
-#ifdef _MSC_VER
+#ifdef __VISUALC__
#pragma warning(disable: 4715) // not all control paths return a value
#endif // Visual C++
int nCmdShow,
bool enterLoop)
{
+ // do check for memory leaks on program exit
+ // (another useful flag is _CRTDBG_DELAY_FREE_MEM_DF which doesn't free
+ // deallocated memory which may be used to simulate low-memory condition)
+ wxCrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF);
+
// take everything into a try-except block in release build
// FIXME other compilers must support Win32 SEH (structured exception
// handling) too, just find the appropriate keyword in their docs!
// Please note that it's _not_ the same as C++ exceptions!
-#if !defined(__WXDEBUG__) && defined(_MSC_VER)
+#if !defined(__WXDEBUG__) && defined(__VISUALC__)
#define CATCH_PROGRAM_EXCEPTIONS
- __try {
+ __try {
#else
#undef CATCH_PROGRAM_EXCEPTIONS
#endif
{
retValue = wxTheApp->OnRun();
}
+ else
+ // We want to initialize, but not run or exit immediately.
+ return 1;
}
//else: app initialization failed, so we skipped OnRun()
wxTheApp->OnExit();
- // flush the logged messages if any
- wxLog *pLog = wxLog::GetActiveTarget();
- if ( pLog != NULL && pLog->HasPendingMessages() )
- pLog->Flush();
-
-
wxApp::CleanUp();
return retValue;
}
// restore warning state
-#ifdef _MSC_VER
+#ifdef __VISUALC__
#pragma warning(default: 4715) // not all control paths return a value
#endif // Visual C++
// For some reason, with MSVC++ 1.5, WinMain isn't linked in properly
// if in a separate file. So include it here to ensure it's linked.
-#if (defined(_MSC_VER) && !defined(__WIN32__)) || (defined(__GNUWIN32__) && !defined(__TWIN32__))
+#if (defined(__VISUALC__) && !defined(__WIN32__)) || (defined(__GNUWIN32__) && !defined(__TWIN32__))
#include "main.cpp"
#endif