wxBase/GUI separation: 1st step, wxMSW should build, all the rest is broken

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21342 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2003-06-24 00:56:19 +00:00
parent 433f5675a9
commit e2478fde62
64 changed files with 7364 additions and 3583 deletions

View File

@@ -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
#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
// ----------------------------------------------------------------------------
// function prototypes
// ----------------------------------------------------------------------------
// from src/msw/app.cpp
extern void WXDLLEXPORT wxEntryCleanup();
// ----------------------------------------------------------------------------
// globals
// ----------------------------------------------------------------------------
HINSTANCE wxhInstance = 0;
// ============================================================================
// 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(__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
// ----------------------------------------------------------------------------
#ifdef __WXBASE__
HINSTANCE wxhInstance = 0;
HINSTANCE wxGetInstance()
{
return wxhInstance;
@@ -146,3 +141,5 @@ void wxSetInstance(HINSTANCE hInst)
wxhInstance = hInst;
}
#endif // __WXBASE__