X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6c9a19aabab3a878b565e6c2a5f2a3824277c4dc..c15d9c859c64f28c56d1e61b7d031a74e6018583:/src/msw/main.cpp diff --git a/src/msw/main.cpp b/src/msw/main.cpp index a2f18278cf..94299293e1 100644 --- a/src/msw/main.cpp +++ b/src/msw/main.cpp @@ -1,6 +1,6 @@ ///////////////////////////////////////////////////////////////////////////// // Name: msw/main.cpp -// Purpose: Main/DllMain +// Purpose: WinMain/DllMain // Author: Julian Smart // Modified by: // Created: 04/01/98 @@ -33,85 +33,74 @@ #include "wx/msw/private.h" -// Don't implement WinMain if we're building an MFC/wxWindows -// hybrid app. +// Don't implement WinMain if we're building an MFC/wxWindows hybrid app. #if wxUSE_MFC && !defined(NOMAIN) -#define NOMAIN 1 + #define NOMAIN 1 #endif -// from src/msw/app.cpp -extern void WXDLLEXPORT wxEntryCleanup(); +#ifdef __BORLANDC__ + // BC++ has to be special: its run-time expects the DLL entry point to be + // named DllEntryPoint instead of the (more) standard DllMain + #define DllMain DllEntryPoint +#endif + +#if defined(__WXMICROWIN__) + #define HINSTANCE HANDLE +#endif // ---------------------------------------------------------------------------- -// globals +// function prototypes // ---------------------------------------------------------------------------- -HINSTANCE wxhInstance = 0; +// from src/msw/app.cpp +extern void WXDLLEXPORT wxEntryCleanup(); // ============================================================================ -// implementation +// implementation: various entry points // ============================================================================ -// ---------------------------------------------------------------------------- -// various entry points -// ---------------------------------------------------------------------------- - // May wish not to have a DllMain or WinMain, e.g. if we're programming // a Netscape plugin or if we're writing a console application #if wxUSE_GUI && !defined(NOMAIN) -// NT defines APIENTRY, 3.x not -#if !defined(APIENTRY) - #define APIENTRY FAR PASCAL -#endif +extern "C" +{ -///////////////////////////////////////////////////////////////////////////////// +// ---------------------------------------------------------------------------- // WinMain +// ---------------------------------------------------------------------------- + // 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) -#if defined(__TWIN32__) || defined(__WXMICROWIN__) - #define HINSTANCE HANDLE - - extern "C" -#endif - int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { - return wxEntry((WXHINSTANCE) hInstance, (WXHINSTANCE) hPrevInstance, - lpCmdLine, nCmdShow); + return wxEntry((WXHINSTANCE) hInstance, + (WXHINSTANCE) hPrevInstance, + lpCmdLine, + nCmdShow); } -#endif // !defined(_WINDLL) - -///////////////////////////////////////////////////////////////////////////////// -// DllMain - -#if defined(_WINDLL) +#else // _WINDLL // DLL entry point -extern "C" -#ifdef __BORLANDC__ -// SCD: I don't know why, but also OWL uses this function -BOOL WINAPI DllEntryPoint (HANDLE hModule, DWORD fdwReason, LPVOID lpReserved) -#else -BOOL WINAPI DllMain (HANDLE hModule, DWORD fdwReason, LPVOID lpReserved) -#endif +BOOL WINAPI +DllMain(HANDLE hModule, DWORD fdwReason, LPVOID WXUNUSED(lpReserved)) { + // Only call wxEntry if the application itself is part of the DLL. + // If only the wxWindows library is in the DLL, then the + // initialisation will be called when the application implicitly + // calls WinMain. #ifndef WXMAKINGDLL switch (fdwReason) { case DLL_PROCESS_ATTACH: - // Only call wxEntry if the application itself is part of the DLL. - // If only the wxWindows library is in the DLL, then the - // initialisation will be called when the application implicitly - // calls WinMain. return wxEntry((WXHINSTANCE) hModule); case DLL_PROCESS_DETACH: @@ -124,18 +113,24 @@ BOOL WINAPI DllMain (HANDLE hModule, DWORD fdwReason, LPVOID lpReserved) (void)hModule; (void)fdwReason; #endif // !WXMAKINGDLL - (void)lpReserved; + return TRUE; } -#endif // _WINDLL +#endif // _WINDLL/!_WINDLL + +} // extern "C" #endif // !NOMAIN // ---------------------------------------------------------------------------- -// global functions +// global HINSTANCE // ---------------------------------------------------------------------------- +#if wxUSE_BASE + +HINSTANCE wxhInstance = 0; + HINSTANCE wxGetInstance() { return wxhInstance; @@ -146,3 +141,5 @@ void wxSetInstance(HINSTANCE hInst) wxhInstance = hInst; } +#endif // wxUSE_BASE +