]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/main.cpp
Fixed bug [ 754596 ] wxUSE_CONSTRAINTS 0 breaks AutoLayout() with sizers
[wxWidgets.git] / src / msw / main.cpp
index 13c6321b2bb40e563e23399b88451127b2efadb4..9f96ac237c957a9a42556a1a038404f1ed8a2c77 100644 (file)
@@ -17,7 +17,7 @@
 // headers
 // ----------------------------------------------------------------------------
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
     #pragma implementation
 #endif
 
@@ -28,7 +28,6 @@
     #pragma hdrstop
 #endif
 
-#include "wx/init.h"
 #include "wx/event.h"
 #include "wx/app.h"
 #include "wx/cmdline.h"
@@ -56,9 +55,6 @@
 // function prototypes
 // ----------------------------------------------------------------------------
 
-// from src/msw/app.cpp
-extern void WXDLLEXPORT wxEntryCleanup();
-
 static wxChar **ConvertToStandardCommandArgs(const wxChar *p, int& argc);
 
 // ============================================================================
@@ -69,13 +65,13 @@ static wxChar **ConvertToStandardCommandArgs(const wxChar *p, int& argc);
 // Windows-specific wxEntry
 // ----------------------------------------------------------------------------
 
-int wxEntry(WXHINSTANCE hInstance,
-            WXHINSTANCE WXUNUSED(hPrevInstance),
-            char *pCmdLine,
-            int nCmdShow)
+WXDLLEXPORT int wxEntry(HINSTANCE hInstance,
+                        HINSTANCE WXUNUSED(hPrevInstance),
+                        char *pCmdLine,
+                        int nCmdShow)
 {
     // remember the parameters Windows gave us
-    wxSetInstance((HINSTANCE)hInstance);
+    wxSetInstance(hInstance);
     wxApp::m_nCmdShow = nCmdShow;
 
     // parse the command line
@@ -99,20 +95,7 @@ extern "C"
 // Note that WinMain is also defined in dummy.obj, which is linked to
 // an application that is using the DLL version of wxWindows.
 
-#if !defined(_WINDLL)
-
-int PASCAL WinMain(HINSTANCE hInstance,
-                   HINSTANCE hPrevInstance,
-                   LPSTR lpCmdLine,
-                   int nCmdShow)
-{
-    return wxEntry((WXHINSTANCE) hInstance,
-                   (WXHINSTANCE) hPrevInstance,
-                   lpCmdLine,
-                   nCmdShow);
-}
-
-#else // _WINDLL
+#if defined(_WINDLL)
 
 // DLL entry point
 
@@ -127,7 +110,7 @@ DllMain(HANDLE hModule, DWORD fdwReason, LPVOID WXUNUSED(lpReserved))
     switch (fdwReason)
     {
         case DLL_PROCESS_ATTACH:
-            return wxEntry((WXHINSTANCE) hModule);
+            return wxEntry(hModule);
 
         case DLL_PROCESS_DETACH:
             wxEntryCleanup();
@@ -141,7 +124,7 @@ DllMain(HANDLE hModule, DWORD fdwReason, LPVOID WXUNUSED(lpReserved))
     return TRUE;
 }
 
-#endif // _WINDLL/!_WINDLL
+#endif // _WINDLL
 
 } // extern "C"
 
@@ -166,7 +149,9 @@ wxChar **ConvertToStandardCommandArgs(const wxChar *p, int& argc)
     // and +1 here for the terminating NULL
     wxChar **argv = new wxChar *[argc + 1];
 
-    argv[0] = new wxChar[MAX_PATH];
+    // as we use wxStrdup below we must allocate the first argument using
+    // malloc(), not new[], as well
+    argv[0] = (wxChar *)malloc(MAX_PATH * sizeof(wxChar));
     ::GetModuleFileName(wxhInstance, argv[0], MAX_PATH);
 
     // copy all the other arguments to wxApp::argv[]