git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8919 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
140 lines
3.8 KiB
C++
140 lines
3.8 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: msw/main.cpp
|
|
// Purpose: Main/DllMain
|
|
// Author: Julian Smart
|
|
// Modified by:
|
|
// Created: 04/01/98
|
|
// RCS-ID: $Id$
|
|
// Copyright: (c) Julian Smart and Markus Holzem
|
|
// Licence: wxWindows license
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// ============================================================================
|
|
// declarations
|
|
// ============================================================================
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// headers
|
|
// ----------------------------------------------------------------------------
|
|
|
|
#ifdef __GNUG__
|
|
#pragma implementation
|
|
#endif
|
|
|
|
// For compilers that support precompilation, includes "wx.h".
|
|
#include "wx/wxprec.h"
|
|
|
|
#ifdef __BORLANDC__
|
|
#pragma hdrstop
|
|
#endif
|
|
|
|
#include "wx/event.h"
|
|
#include "wx/app.h"
|
|
|
|
#include "wx/msw/private.h"
|
|
|
|
// from src/msw/app.cpp
|
|
extern void WXDLLEXPORT wxEntryCleanup();
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// globals
|
|
// ----------------------------------------------------------------------------
|
|
|
|
HINSTANCE wxhInstance = 0;
|
|
|
|
// ============================================================================
|
|
// implementation
|
|
// ============================================================================
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// 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
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
// 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(__WXWINE__)
|
|
#define HINSTANCE HANDLE
|
|
|
|
extern "C"
|
|
#endif // WINE
|
|
|
|
int PASCAL WinMain(HINSTANCE hInstance,
|
|
HINSTANCE hPrevInstance,
|
|
LPSTR lpCmdLine,
|
|
int nCmdShow)
|
|
{
|
|
return wxEntry((WXHINSTANCE) hInstance, (WXHINSTANCE) hPrevInstance,
|
|
lpCmdLine, nCmdShow);
|
|
}
|
|
|
|
#endif // !defined(_WINDLL)
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
// DllMain
|
|
|
|
#if defined(_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
|
|
{
|
|
#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:
|
|
if ( wxTheApp )
|
|
wxTheApp->OnExit();
|
|
wxEntryCleanup();
|
|
break;
|
|
}
|
|
#endif // !WXMAKINGDLL
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
#endif // _WINDLL
|
|
|
|
#endif // !NOMAIN
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// global functions
|
|
// ----------------------------------------------------------------------------
|
|
|
|
HINSTANCE wxGetInstance()
|
|
{
|
|
return wxhInstance;
|
|
}
|
|
|
|
void wxSetInstance(HINSTANCE hInst)
|
|
{
|
|
wxhInstance = hInst;
|
|
}
|
|
|