]> git.saurik.com Git - wxWidgets.git/blame - docs/latex/wx/app.tex
compilation fix for wxGTK
[wxWidgets.git] / docs / latex / wx / app.tex
CommitLineData
a660d684
KB
1\section{\class{wxApp}}\label{wxapp}
2
3The {\bf wxApp} class represents the application itself. It is used
4to:
5
6\begin{itemize}\itemsep=0pt
7\item set and get application-wide properties;
8\item implement the windowing system message or event loop;
9\item initiate application processing via \helpref{wxApp::OnInit}{wxapponinit};
10\item allow default processing of events not handled by other
11objects in the application.
12\end{itemize}
13
14You should use the macro IMPLEMENT\_APP(appClass) in your application implementation
15file to tell wxWindows how to create an instance of your application class.
16
17Use DECLARE\_APP(appClass) in a header file if you want the wxGetApp function (which returns
18a reference to your application object) to be visible to other files.
19
20\wxheading{Derived from}
21
22\helpref{wxEvtHandler}{wxevthandler}\\
23\helpref{wxObject}{wxobject}
24
954b8ae6
JS
25\wxheading{Include files}
26
27<wx/app.h>
28
a660d684
KB
29\wxheading{See also}
30
31\helpref{wxApp overview}{wxappoverview}
32
33\latexignore{\rtfignore{\wxheading{Members}}}
34
35\membersection{wxApp::wxApp}
36
2fd284a4 37\func{void}{wxApp}{\void}
a660d684
KB
38
39Constructor. Called implicitly with a definition of a wxApp object.
40
a660d684
KB
41\membersection{wxApp::\destruct{wxApp}}
42
43\func{void}{\destruct{wxApp}}{\void}
44
45Destructor. Will be called implicitly on program exit if the wxApp
46object is created on the stack.
47
48\membersection{wxApp::argc}\label{wxappargc}
49
50\member{int}{argc}
51
52Number of command line arguments (after environment-specific processing).
53
54\membersection{wxApp::argv}\label{wxappargv}
55
56\member{char **}{argv}
57
58Command line arguments (after environment-specific processing).
59
60\membersection{wxApp::CreateLogTarget}\label{wxappcreatelogtarget}
61
62\func{virtual wxLog*}{CreateLogTarget}{\void}
63
64Creates a wxLog class for the application to use for logging errors. The default
65implementation returns a new wxLogGui class.
66
67\wxheading{See also}
68
69\helpref{wxLog}{wxlog}
70
71\membersection{wxApp::Dispatch}\label{wxappdispatch}
72
73\func{void}{Dispatch}{\void}
74
75Dispatches the next event in the windowing system event queue.
76
77This can be used for programming event loops, e.g.
78
79\begin{verbatim}
80 while (app.Pending())
81 Dispatch();
82\end{verbatim}
83
84\wxheading{See also}
85
86\helpref{wxApp::Pending}{wxapppending}
87
88\membersection{wxApp::GetAppName}\label{wxappgetappname}
89
90\constfunc{wxString}{GetAppName}{\void}
91
92Returns the application name.
93
94\wxheading{Remarks}
95
96wxWindows sets this to a reasonable default before
97calling \helpref{wxApp::OnInit}{wxapponinit}, but the application can reset it at will.
98
99\membersection{wxApp::GetAuto3D}\label{wxappgetauto3d}
100
101\constfunc{bool}{GetAuto3D}{\void}
102
103Returns TRUE if 3D control mode is on, FALSE otherwise.
104
105\wxheading{See also}
106
107\helpref{wxApp::SetAuto3D}{wxappsetauto3d}
108
109\membersection{wxApp::GetClassName}\label{wxappgetclassname}
110
111\constfunc{wxString}{GetClassName}{\void}
112
113Gets the class name of the application. The class name may be used in a platform specific
114manner to refer to the application.
115
116\wxheading{See also}
117
118\helpref{wxApp::SetClassName}{wxappsetclassname}
119
f59d80ca 120\membersection{wxApp::GetExitOnFrameDelete}\label{wxappgetexitonframedelete}
a660d684 121
f59d80ca 122\constfunc{bool}{GetExitFrameOnDelete}{\void}
a660d684
KB
123
124Returns TRUE if the application will exit when the top-level window is deleted, FALSE
125otherwise.
126
127\wxheading{See also}
128
f59d80ca 129\helpref{wxApp::SetExitOnFrameDelete}{wxappsetexitonframedelete}
a660d684 130
a660d684
KB
131\membersection{wxApp::GetTopWindow}\label{wxappgettopwindow}
132
83a5b533 133\constfunc{virtual wxWindow *}{GetTopWindow}{\void}
a660d684
KB
134
135Returns a pointer to the top window.
136
2a47d3c1
JS
137\wxheading{Remarks}
138
139If the top window hasn't been set using \helpref{wxApp::SetTopWindow}{wxappsettopwindow}, this
140function will find the first top-level window (frame or dialog) and return that.
141
a660d684
KB
142\wxheading{See also}
143
8480b297
RR
144\helpref{SetTopWindow}{wxappsettopwindow}
145
146\membersection{wxApp::GetUseBestVisual}\label{wxappgetusebestvisual}
147
148\constfunc{bool}{GetUseBestVisual}{\void}
149
103aab26 150Returns TRUE if the application will use the best visual on systems that support
8480b297
RR
151different visuals, FALSE otherwise.
152
153\wxheading{See also}
154
155\helpref{SetUseBestVisual}{wxappsetusebestvisual}
a660d684 156
e06b9569 157\membersection{wxApp::GetVendorName}\label{wxappgetvendorname}
2aa59ef4
VS
158
159\constfunc{wxString}{GetVendorName}{\void}
160
161Returns the application's vendor name.
162
a660d684
KB
163\membersection{wxApp::ExitMainLoop}\label{wxappexitmainloop}
164
165\func{void}{ExitMainLoop}{\void}
166
167Call this to explicitly exit the main message (event) loop.
168You should normally exit the main loop (and the application) by deleting
169the top window.
170
171\membersection{wxApp::Initialized}\label{wxappinitialized}
172
173\func{bool}{Initialized}{\void}
174
175Returns TRUE if the application has been initialized (i.e. if\rtfsp
176\helpref{wxApp::OnInit}{wxapponinit} has returned successfully). This can be useful for error
177message routines to determine which method of output is best for the
178current state of the program (some windowing systems may not like
179dialogs to pop up before the main loop has been entered).
180
181\membersection{wxApp::MainLoop}\label{wxappmainloop}
182
183\func{int}{MainLoop}{\void}
184
185Called by wxWindows on creation of the application. Override this if you wish
186to provide your own (environment-dependent) main loop.
187
188\wxheading{Return value}
189
190Returns 0 under X, and the wParam of the WM\_QUIT message under Windows.
191
192\membersection{wxApp::OnActivate}\label{wxapponactivate}
193
194\func{void}{OnActivate}{\param{wxActivateEvent\& }{event}}
195
196Provide this member function to know whether the application is being
197activated or deactivated (Windows only).
198
199\wxheading{See also}
200
201\helpref{wxWindow::OnActivate}{wxwindowonactivate}, \helpref{wxActivateEvent}{wxactivateevent}
202
203\membersection{wxApp::OnExit}\label{wxapponexit}
204
205\func{int}{OnExit}{\void}
206
207Provide this member function for any processing which needs to be done as
208the application is about to exit.
209
210\membersection{wxApp::OnCharHook}\label{wxapponcharhook}
211
212\func{void}{OnCharHook}{\param{wxKeyEvent\&}{ event}}
213
214This event handler function is called (under Windows only) to allow the window to intercept keyboard events
215before they are processed by child windows.
216
217\wxheading{Parameters}
218
219\docparam{event}{The keypress event.}
220
221\wxheading{Remarks}
222
223Use the wxEVT\_CHAR\_HOOK macro in your event table.
224
225If you use this member, you can selectively consume keypress events by calling\rtfsp
226\helpref{wxEvent::Skip}{wxeventskip} for characters the application is not interested in.
227
228\wxheading{See also}
229
230\helpref{wxKeyEvent}{wxkeyevent}, \helpref{wxWindow::OnChar}{wxwindowonchar},\rtfsp
231\helpref{wxWindow::OnCharHook}{wxwindowoncharhook}, \helpref{wxDialog::OnCharHook}{wxdialogoncharhook}
232
bf188f1a 233\membersection{wxApp::OnCmdLineError}\label{wxapponcmdlineerror}
a37a5a73 234
bf188f1a 235\func{bool}{OnCmdLineError}{\param{wxCmdLineParser\& }{parser}}
a37a5a73 236
bf188f1a
VZ
237Called when command line parsing fails (i.e. an incorrect command line option
238was specified by the user). The default behaviour is to show the program usage
239text and abort the program.
a37a5a73 240
bf188f1a
VZ
241Return {\tt TRUE} to continue normal execution or {\tt FALSE} to return
242{\tt FALSE} from \helpref{OnInit}{wxapponinit} thus terminating the program.
a37a5a73
VZ
243
244\wxheading{See also}
245
bf188f1a 246\helpref{OnInitCmdLine}{wxapponinitcmdline}
a37a5a73 247
bf188f1a 248\membersection{wxApp::OnCmdLineHelp}\label{wxapponcmdlinehelp}
a660d684 249
bf188f1a 250\func{bool}{OnCmdLineHelp}{\param{wxCmdLineParser\& }{parser}}
a660d684 251
bf188f1a
VZ
252Called when the help option ({\tt --help}) was specified on the command line.
253The default behaviour is to show the program usage text and abort the program.
a660d684 254
bf188f1a
VZ
255Return {\tt TRUE} to continue normal execution or {\tt FALSE} to return
256{\tt FALSE} from \helpref{OnInit}{wxapponinit} thus terminating the program.
a660d684
KB
257
258\wxheading{See also}
259
bf188f1a 260\helpref{OnInitCmdLine}{wxapponinitcmdline}
a660d684 261
bf188f1a 262\membersection{wxApp::OnCmdLineParsed}\label{wxapponcmdlineparsed}
387a3b02 263
bf188f1a 264\func{bool}{OnCmdLineParsed}{\param{wxCmdLineParser\& }{parser}}
387a3b02 265
bf188f1a
VZ
266Called after the command line had been successfully parsed. You may override
267this method to test for the values of the various parameters which could be
268set from the command line.
387a3b02 269
bf188f1a
VZ
270Don't forget to call the base class version unless you want to suppress
271processing of the standard command line options.
387a3b02 272
bf188f1a
VZ
273Return {\tt TRUE} to continue normal execution or {\tt FALSE} to return
274{\tt FALSE} from \helpref{OnInit}{wxapponinit} thus terminating the program.
387a3b02 275
bf188f1a
VZ
276\wxheading{See also}
277
278\helpref{OnInitCmdLine}{wxapponinitcmdline}
279
280\membersection{wxApp::OnFatalException}\label{wxapponfatalexception}
281
282\func{void}{OnFatalException}{\void}
387a3b02 283
bf188f1a
VZ
284This function may be called if something fatal happens: an unhandled
285exception under Win32 or a a fatal signal under Unix, for example. However,
286this will not happen by default: you have to explicitly call
287\helpref{wxHandleFatalExceptions}{wxhandlefatalexceptions} to enable this.
387a3b02 288
bf188f1a
VZ
289Generally speaking, this function should only show a message to the user and
290return. You may attempt to save unsaved data but this is not guaranteed to
291work and, in fact, probably won't.
387a3b02
JS
292
293\wxheading{See also}
294
bf188f1a
VZ
295\helpref{wxHandleFatalExcetions}{wxhandlefatalexceptions}
296
297%% VZ: the wxApp event handler are private and should not be documented here!
298%%
299%%\membersection{wxApp::OnIdle}\label{wxapponidle}
300%%
301%%\func{void}{OnIdle}{\param{wxIdleEvent\& }{event}}
302%%
303%%Override this member function for any processing which needs to be done
304%%when the application is idle. You should call wxApp::OnIdle from your own function,
305%%since this forwards OnIdle events to windows and also performs garbage collection for
306%%windows whose destruction has been delayed.
307%%
308%%wxWindows' strategy for OnIdle processing is as follows. After pending user interface events for an
309%%application have all been processed, wxWindows sends an OnIdle event to the application object. wxApp::OnIdle itself
310%%sends an OnIdle event to each application window, allowing windows to do idle processing such as updating
311%%their appearance. If either wxApp::OnIdle or a window OnIdle function requested more time, by
312%%caling \helpref{wxIdleEvent::RequestMore}{wxidleeventrequestmore}, wxWindows will send another OnIdle
313%%event to the application object. This will occur in a loop until either a user event is found to be
314%%pending, or OnIdle requests no more time. Then all pending user events are processed until the system
315%%goes idle again, when OnIdle is called, and so on.
316%%
317%%\wxheading{See also}
318%%
319%%\helpref{wxWindow::OnIdle}{wxwindowonidle}, \helpref{wxIdleEvent}{wxidleevent},\rtfsp
320%%\helpref{wxWindow::SendIdleEvents}{wxappsendidleevents}
321%%
322%%\membersection{wxApp::OnEndSession}\label{wxapponendsession}
323%%
324%%\func{void}{OnEndSession}{\param{wxCloseEvent\& }{event}}
325%%
326%%This is an event handler function called when the operating system or GUI session is
327%%about to close down. The application has a chance to silently save information,
328%%and can optionally close itself.
329%%
330%%Use the EVT\_END\_SESSION event table macro to handle query end session events.
331%%
332%%The default handler calls \helpref{wxWindow::Close}{wxwindowclose} with a TRUE argument
333%%(forcing the application to close itself silently).
334%%
335%%\wxheading{Remarks}
336%%
337%%Under X, OnEndSession is called in response to the `die' event.
338%%
339%%Under Windows, OnEndSession is called in response to the WM\_ENDSESSION message.
340%%
341%%\wxheading{See also}
342%%
343%%\helpref{wxWindow::Close}{wxwindowclose},\rtfsp
344%%\helpref{wxWindow::OnCloseWindow}{wxwindowonclosewindow},\rtfsp
345%%\helpref{wxCloseEvent}{wxcloseevent},\rtfsp
346%%\helpref{wxApp::OnQueryEndSession}{wxapponqueryendsession}
387a3b02 347
a660d684
KB
348\membersection{wxApp::OnInit}\label{wxapponinit}
349
350\func{bool}{OnInit}{\void}
351
352This must be provided by the application, and will usually create the
bf188f1a
VZ
353application's main window, optionally calling
354\helpref{wxApp::SetTopWindow}{wxappsettopwindow}.
355
356Notice that if you want to to use the command line processing provided by
357wxWindows you have to call the base class version in the derived class
358OnInit().
a660d684
KB
359
360Return TRUE to continue processing, FALSE to exit the application.
361
bf188f1a
VZ
362\membersection{wxApp::OnInitCmdLine}\label{wxapponinitcmdline}
363
364\func{void}{OnInitCmdLine}{\param{wxCmdLineParser\& }{parser}}
365
366Called from \helpref{OnInit}{wxapponinit} and may be used to initialize the
367parser with the command line options for this application. The base class
368versions adds support for a few standard options only.
369
387a3b02 370\membersection{wxApp::OnQueryEndSession}\label{wxapponqueryendsession}
a660d684 371
387a3b02 372\func{void}{OnQueryEndSession}{\param{wxCloseEvent\& }{event}}
a660d684 373
387a3b02
JS
374This is an event handler function called when the operating system or GUI session is
375about to close down. Typically, an application will try to save unsaved documents
376at this point.
377
378If \helpref{wxCloseEvent::CanVeto}{wxcloseeventcanveto} returns TRUE, the application
379is allowed to veto the shutdown by calling \helpref{wxCloseEvent::Veto}{wxcloseeventveto}.
380The application might veto the shutdown after prompting for documents to be saved, and the
381user has cancelled the save.
382
383Use the EVT\_QUERY\_END\_SESSION event table macro to handle query end session events.
384
385You should check whether the application is forcing the deletion of the window
386using \helpref{wxCloseEvent::GetForce}{wxcloseeventgetforce}. If this is TRUE,
387destroy the window using \helpref{wxWindow::Destroy}{wxwindowdestroy}.
388If not, it is up to you whether you respond by destroying the window.
389
390The default handler calls \helpref{wxWindow::Close}{wxwindowclose} on the top-level window,
391and vetoes the shutdown if Close returns FALSE. This will be sufficient for many applications.
392
393\wxheading{Remarks}
394
8771a323 395Under X, OnQueryEndSession is called in response to the `save session' event.
387a3b02
JS
396
397Under Windows, OnQueryEndSession is called in response to the WM\_QUERYENDSESSION message.
a660d684
KB
398
399\wxheading{See also}
400
387a3b02
JS
401\helpref{wxWindow::Close}{wxwindowclose},\rtfsp
402\helpref{wxWindow::OnCloseWindow}{wxwindowonclosewindow},\rtfsp
403\helpref{wxCloseEvent}{wxcloseevent},\rtfsp
404\helpref{wxApp::OnEndSession}{wxapponendsession}
405
a660d684
KB
406\membersection{wxApp::ProcessMessage}\label{wxappprocessmessage}
407
408\func{bool}{ProcessMessage}{\param{MSG *}{msg}}
409
410Windows-only function for processing a message. This function
411is called from the main message loop, checking for windows that
412may wish to process it. The function returns TRUE if the message
413was processed, FALSE otherwise. If you use wxWindows with another class
414library with its own message loop, you should make sure that this
415function is called to allow wxWindows to receive messages. For example,
416to allow co-existance with the Microsoft Foundation Classes, override
417the PreTranslateMessage function:
418
419\begin{verbatim}
420// Provide wxWindows message loop compatibility
421BOOL CTheApp::PreTranslateMessage(MSG *msg)
422{
423 if (wxTheApp && wxTheApp->ProcessMessage(msg))
424 return TRUE;
425 else
426 return CWinApp::PreTranslateMessage(msg);
427}
428\end{verbatim}
429
387a3b02
JS
430\membersection{wxApp::Pending}\label{wxapppending}
431
432\func{bool}{Pending}{\void}
433
f59d80ca 434Returns TRUE if unprocessed events are in the window system event queue.
387a3b02
JS
435
436\wxheading{See also}
437
438\helpref{wxApp::Dispatch}{wxappdispatch}
439
a660d684
KB
440\membersection{wxApp::SendIdleEvents}\label{wxappsendidleevents}
441
442\func{bool}{SendIdleEvents}{\void}
443
444Sends idle events to all top-level windows.
445
446\func{bool}{SendIdleEvents}{\param{wxWindow*}{ win}}
447
448Sends idle events to a window and its children.
449
450\wxheading{Remarks}
451
452These functions poll the top-level windows, and their children, for idle event processing.
453If TRUE is returned, more OnIdle processing is requested by one or more window.
454
455\wxheading{See also}
456
457\helpref{wxApp::OnIdle}{wxapponidle}, \helpref{wxWindow::OnIdle}{wxwindowonidle}, \helpref{wxIdleEvent}{wxidleevent}
458
459\membersection{wxApp::SetAppName}\label{wxappsetappname}
460
461\func{void}{SetAppName}{\param{const wxString\& }{name}}
462
463Sets the name of the application. The name may be used in dialogs
464(for example by the document/view framework). A default name is set by
465wxWindows.
466
467\wxheading{See also}
468
469\helpref{wxApp::GetAppName}{wxappgetappname}
470
471\membersection{wxApp::SetAuto3D}\label{wxappsetauto3d}
472
473\func{void}{SetAuto3D}{\param{const bool}{ auto3D}}
474
475Switches automatic 3D controls on or off.
476
477\wxheading{Parameters}
478
479\docparam{auto3D}{If TRUE, all controls will be created with 3D appearances unless
480overridden for a control or dialog. The default is TRUE}
481
482\wxheading{Remarks}
483
484This has an effect on Windows only.
485
486\wxheading{See also}
487
488\helpref{wxApp::GetAuto3D}{wxappgetauto3d}
489
490\membersection{wxApp::SetClassName}\label{wxappsetclassname}
491
492\func{void}{SetClassName}{\param{const wxString\& }{name}}
493
494Sets the class name of the application. This may be used in a platform specific
495manner to refer to the application.
496
497\wxheading{See also}
498
499\helpref{wxApp::GetClassName}{wxappgetclassname}
500
f59d80ca 501\membersection{wxApp::SetExitOnFrameDelete}\label{wxappsetexitonframedelete}
a660d684 502
f59d80ca 503\func{void}{SetExitOnFrameDelete}{\param{bool}{ flag}}
a660d684
KB
504
505Allows the programmer to specify whether the application will exit when the
506top-level frame is deleted.
507
508\wxheading{Parameters}
509
510\docparam{flag}{If TRUE (the default), the application will exit when the top-level frame is
511deleted. If FALSE, the application will continue to run.}
512
a660d684
KB
513\membersection{wxApp::SetTopWindow}\label{wxappsettopwindow}
514
515\func{void}{SetTopWindow}{\param{wxWindow* }{window}}
516
2a47d3c1
JS
517Sets the `top' window. You can call this from within \helpref{wxApp::OnInit}{wxapponinit} to
518let wxWindows know which is the main window. You don't have to set the top window;
f6bcfd97 519it is only a convenience so that (for example) certain dialogs without parents can use a
2a47d3c1
JS
520specific window as the top window. If no top window is specified by the application,
521wxWindows just uses the first frame or dialog in its top-level window list, when it
522needs to use the top window.
a660d684
KB
523
524\wxheading{Parameters}
525
526\docparam{window}{The new top window.}
527
528\wxheading{See also}
529
530\helpref{wxApp::GetTopWindow}{wxappgettopwindow}, \helpref{wxApp::OnInit}{wxapponinit}
531
2aa59ef4
VS
532
533\membersection{wxApp::SetVendorName}\label{wxappsetvendorname}
534
535\func{void}{SetVendorName}{\param{const wxString\& }{name}}
536
537Sets the name of application's vendor. The name will be used
538in registry access. A default name is set by
539wxWindows.
540
541\wxheading{See also}
542
543\helpref{wxApp::GetVendorName}{wxappgetvendorname}
544
ebea0891
KB
545\membersection{wxApp::GetStdIcon}\label{wxappgetstdicon}
546
547\func{virtual wxIcon}{GetStdIcon}{\param{int }{which}} const
548
549Returns the icons used by wxWindows internally, e.g. the ones used for
550message boxes. This function is used internally and
551can be overridden by the user to change the default icons.
552
553\wxheading{Parameters}
554
fa482912
JS
555\docparam{which}{One of the wxICON\_XXX specifies which icon to return.}
556
557See \helpref{wxMessageBox}{wxmessagebox} for a list of icon identifiers.
ebea0891 558
8480b297
RR
559\membersection{wxApp::SetUseBestVisual}\label{wxappsetusebestvisual}
560
561\func{void}{SetUseBestVisual}{\param{bool}{ flag}}
562
563Allows the programmer to specify whether the application will use the best visual
103aab26
RR
564on systems that support several visual on the same display. This is typically the
565case under Solaris and IRIX, where the default visual is only 8-bit whereas certain
566appications are supposed to run in TrueColour mode.
8480b297 567
fa482912 568Note that this function has to be called in the constructor of the {\tt wxApp}
8480b297
RR
569instance and won't have any effect when called later on.
570
571This function currently only has effect under GTK.
572
573\wxheading{Parameters}
574
575\docparam{flag}{If TRUE, the app will use the best visual.}
e06b9569 576