X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9a4c649ea27c34f8613b3fc43106556bbe2ecd33..cb73e6001f891ae46b12a1e4ca39b93649cb6099:/src/msw/main.cpp diff --git a/src/msw/main.cpp b/src/msw/main.cpp index 13c6321b2b..9f96ac237c 100644 --- a/src/msw/main.cpp +++ b/src/msw/main.cpp @@ -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[]