From 956495caff00a67e11e76673f1a588e1d076b92b Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 22 Jun 2004 11:07:23 +0000 Subject: [PATCH] moved wxEntry(HINSTANCE, ...) declaration to wx/msw/app.h from wx/app.h git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27939 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/app.h | 46 ++++++++++---------------------------------- include/wx/msw/app.h | 35 +++++++++++++++++++++++++++++++-- 2 files changed, 43 insertions(+), 38 deletions(-) diff --git a/include/wx/app.h b/include/wx/app.h index b2e7a337b9..5c31889fc1 100644 --- a/include/wx/app.h +++ b/include/wx/app.h @@ -613,47 +613,21 @@ public: { wxApp::SetInitializerFunction(fn); } }; -// Here's a macro you can use if your compiler really, really wants main() to -// be in your main program (e.g. hello.cpp). Now IMPLEMENT_APP should add this -// code if required. +// the code below defines a IMPLEMENT_WXWIN_MAIN macro which you can use if +// your compiler really, really wants main() to be in your main program (e.g. +// hello.cpp). Now IMPLEMENT_APP should add this code if required. #define IMPLEMENT_WXWIN_MAIN_CONSOLE \ int main(int argc, char **argv) { return wxEntry(argc, argv); } -#if !wxUSE_GUI || !defined(__WXMSW__) - #define IMPLEMENT_WXWIN_MAIN \ - IMPLEMENT_WXWIN_MAIN_CONSOLE -#elif defined(__WXMSW__) - // we need HINSTANCE declaration to define WinMain() - #include "wx/msw/wrapwin.h" - - #ifndef SW_SHOWNORMAL - #define SW_SHOWNORMAL 1 +// port-specific header could have defined it already in some special wau +#ifndef IMPLEMENT_WXWIN_MAIN + #if !wxUSE_GUI + #define IMPLEMENT_WXWIN_MAIN IMPLEMENT_WXWIN_MAIN_CONSOLE + #else // wxUSE_GUI + #define IMPLEMENT_WXWIN_MAIN #endif - - // WinMain() is always ANSI, even in Unicode build, under normal Windows - // but is always Unicode under CE - #ifdef __WXWINCE__ - typedef wchar_t *wxCmdLineArgType; - #else - typedef char *wxCmdLineArgType; - #endif - - #define IMPLEMENT_WXWIN_MAIN \ - extern int wxEntry(HINSTANCE hInstance, \ - HINSTANCE hPrevInstance = NULL, \ - wxCmdLineArgType pCmdLine = NULL, \ - int nCmdShow = SW_SHOWNORMAL); \ - extern "C" int WINAPI WinMain(HINSTANCE hInstance, \ - HINSTANCE hPrevInstance, \ - wxCmdLineArgType lpCmdLine, \ - int nCmdShow) \ - { \ - return wxEntry(hInstance, hPrevInstance, lpCmdLine, nCmdShow); \ - } -#else - #define IMPLEMENT_WXWIN_MAIN -#endif +#endif // defined(IMPLEMENT_WXWIN_MAIN) #ifdef __WXUNIVERSAL__ #include "wx/univ/theme.h" diff --git a/include/wx/msw/app.h b/include/wx/msw/app.h index 75a6217310..5884d32b6d 100644 --- a/include/wx/msw/app.h +++ b/include/wx/msw/app.h @@ -81,8 +81,39 @@ protected: DECLARE_NO_COPY_CLASS(wxApp) }; -int WXDLLEXPORT wxEntry(WXHINSTANCE hInstance, WXHINSTANCE hPrevInstance, - wxCmdLineArgType *lpszCmdLine, int nCmdShow); +// ---------------------------------------------------------------------------- +// MSW-specific wxEntry() overload and IMPLEMENT_WXWIN_MAIN definition +// ---------------------------------------------------------------------------- + +// we need HINSTANCE declaration to define WinMain() +#include "wx/msw/wrapwin.h" + +#ifndef SW_SHOWNORMAL + #define SW_SHOWNORMAL 1 +#endif + +// WinMain() is always ANSI, even in Unicode build, under normal Windows +// but is always Unicode under CE +#ifdef __WXWINCE__ + typedef wchar_t *wxCmdLineArgType; +#else + typedef char *wxCmdLineArgType; +#endif + +extern int WXDLLEXPORT +wxEntry(HINSTANCE hInstance, + HINSTANCE hPrevInstance = NULL, + wxCmdLineArgType pCmdLine = NULL, + int nCmdShow = SW_SHOWNORMAL); + +#define IMPLEMENT_WXWIN_MAIN \ + extern "C" int WINAPI WinMain(HINSTANCE hInstance, \ + HINSTANCE hPrevInstance, \ + wxCmdLineArgType lpCmdLine, \ + int nCmdShow) \ + { \ + return wxEntry(hInstance, hPrevInstance, lpCmdLine, nCmdShow); \ + } #endif // _WX_APP_H_