]> git.saurik.com Git - wxWidgets.git/blob - include/wx/app.h
64b479d1f05c58c252e3e57ff43745f1301e9ceb
[wxWidgets.git] / include / wx / app.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: app.h
3 // Purpose: wxApp inclusion
4 // Author: Julian Smart
5 // Modified by:
6 // Created: 01/02/97
7 // RCS-ID: $Id$
8 // Copyright: (c) Julian Smart and Markus Holzem
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11
12 #ifndef _WX_APP_H_BASE_
13 #define _WX_APP_H_BASE_
14
15 #ifdef __WXMSW__
16 class WXDLLEXPORT wxApp;
17 typedef wxApp* (*wxAppInitializerFunction) (void);
18 #endif
19
20 #include "wx/object.h"
21
22 #ifndef __WXMSW__
23 typedef wxObject* (*wxAppInitializerFunction) (void); // returning wxApp* won't work with gcc
24 #endif
25
26 #if defined(__WXMSW__)
27 #include "wx/msw/app.h"
28 #elif defined(__WXMOTIF__)
29 #include "wx/motif/app.h"
30 #elif defined(__WXQT__)
31 #include "wx/qt/app.h"
32 #elif defined(__WXGTK__)
33 #include "wx/gtk/app.h"
34 #elif defined(__WXMAC__)
35 #include "wx/mac/app.h"
36 #elif defined(__WXSTUBS__)
37 #include "wx/stubs/app.h"
38 #endif
39
40 // Having a global instance of this class allows
41 // wxApp to be aware of the app creator function.
42 // wxApp can then call this function to create a new
43 // app object. Convoluted, but necessary.
44
45 class WXDLLEXPORT wxAppInitializer
46 {
47 public:
48 wxAppInitializer(wxAppInitializerFunction fn)
49 {
50 wxApp::SetInitializerFunction(fn);
51 }
52 };
53
54 // Here's a macro you can use if your compiler
55 // really, really wants main() to be in your main program
56 // (e.g. hello.cpp).
57 // Now IMPLEMENT_APP should add this code if required.
58
59 #if defined(__AIX__) || defined(__HPUX__)
60 #define IMPLEMENT_WXWIN_MAIN \
61 extern int wxEntry( int argc, char *argv[] ); \
62 int main(int argc, char *argv[]) { return wxEntry(argc, argv); }
63
64 #elif defined(__WXMSW__) && defined(WXUSINGDLL)
65
66 // NT defines APIENTRY, 3.x not
67 #if !defined(WXAPIENTRY)
68 # ifdef __WATCOMC__
69 # define WXAPIENTRY PASCAL
70 # else
71 # define WXAPIENTRY FAR PASCAL
72 # endif
73 #endif
74
75 #define IMPLEMENT_WXWIN_MAIN \
76 int WXAPIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,\
77 LPSTR m_lpCmdLine, int nCmdShow )\
78 {\
79 return wxEntry((WXHINSTANCE) hInstance, (WXHINSTANCE) hPrevInstance,\
80 m_lpCmdLine, nCmdShow);\
81 }
82
83 #else
84 #define IMPLEMENT_WXWIN_MAIN
85 #endif
86
87 #define IMPLEMENT_APP(appname) \
88 wxApp *wxCreateApp(void) { return new appname; } \
89 wxAppInitializer wxTheAppInitializer((wxAppInitializerFunction) wxCreateApp); \
90 appname& wxGetApp(void) { return *(appname *)wxTheApp; } \
91 IMPLEMENT_WXWIN_MAIN
92
93 #define DECLARE_APP(appname) \
94 extern appname& wxGetApp(void) ;
95
96
97 #endif
98 // _WX_APP_H_BASE_