#include <commctrl.h>
#endif
+// use debug CRT functions for memory leak detections in VC++
+/* Doesn't work when using the makefiles, for some reason.
+#if defined(__WXDEBUG__) && defined(_MSC_VER)
+ #include <crtdbg.h>
+#endif
+*/
+
extern char *wxBuffer;
extern char *wxOsVersion;
extern wxList *wxWinHandleList;
memset(&wndclass3, 0, sizeof(WNDCLASS)); // start with NULL defaults
// Use CS_OWNDC to avoid messing about restoring the context
// for every graphic operation.
-// wndclass3.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC | CS_DBLCLKS ;
+// wndclass3.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC | CS_DBLCLKS ;
// wxWin 2.0
- wndclass3.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS ;
+ wndclass3.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS ;
wndclass3.lpfnWndProc = (WNDPROC)wxWndProc;
wndclass3.cbClsExtra = 0;
wndclass3.cbWndExtra = sizeof( DWORD ); // was 4
if (wxWinHandleList)
delete wxWinHandleList ;
-
+
// do it as the very last thing because everything else can log messages
+ wxLog::DontCreateOnDemand();
delete wxLog::SetActiveTarget(NULL);
}
wxTheColourDatabase = new wxColourDatabase(wxKEY_STRING);
wxTheColourDatabase->Initialize();
+
+ wxInitializeStockLists();
wxInitializeStockObjects();
#if USE_WX_RESOURCES
// wxDefaultResourceTable->ClearTable();
#endif
+
// Indicate that the cursor can be freed,
// so that cursor won't be deleted by deleting
// the bitmap list before g_globalCursor goes out
wxDeleteStockObjects() ;
// Destroy all GDI lists, etc.
- delete wxTheBrushList;
- wxTheBrushList = NULL;
-
- delete wxThePenList;
- wxThePenList = NULL;
-
- delete wxTheFontList;
- wxTheFontList = NULL;
-
- delete wxTheBitmapList;
- wxTheBitmapList = NULL;
+ wxDeleteStockLists();
delete wxTheColourDatabase;
wxTheColourDatabase = NULL;
{
wxhInstance = (HINSTANCE) hInstance;
+/* Doesn't work when using the makefiles, for some reason.
+ #if defined(__WXDEBUG__) && defined(_MSC_VER)
+ // 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++
+*/
+
#if (WXDEBUG && USE_MEMORY_TRACING) || USE_DEBUG_CONTEXT
#if !defined(_WINDLL)
ostream* oStr = new ostream(sBuf) ;
wxDebugContext::SetStream(oStr, sBuf);
-#endif
+#endif // USE_MEMORY_TRACING
if (!wxApp::Initialize((WXHINSTANCE) wxhInstance))
return 0;
// Split command line into tokens, as in usual main(argc, argv)
char **command = new char*[50];
-
+
int count = 0;
char *buf = new char[strlen(m_lpCmdLine) + 1];
-
+
// Hangs around until end of app. in case
// user carries pointers to the tokens
wxTheApp->SetTopWindow(NULL);
}
}
-
+
wxTheApp->OnExit();
wxApp::CleanUp();
{
return FALSE;
}
-
+
// Process the message
if (!ProcessMessage((WXMSG *)&s_currentMsg))
{
while (node)
{
wxObject *obj = (wxObject *)node->Data();
-
+
delete obj;
if (wxPendingDelete.Member(obj))
// have we loaded COMCTL32 yet?
HMODULE theModule = ::GetModuleHandle("COMCTL32");
int version = 0;
-
+
// if so, then we can check for the version
if (theModule)
{
// InitCommonControlsEx is unique to 4.7 and later
FARPROC theProc = ::GetProcAddress(theModule, "InitCommonControlsEx");
-
+
if (! theProc)
{ // not found, must be 4.00
version = 400;