]> git.saurik.com Git - wxWidgets.git/blame_incremental - docs/latex/wx/app.tex
more MIME tests
[wxWidgets.git] / docs / latex / wx / app.tex
... / ...
CommitLineData
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
25\wxheading{Include files}
26
27<wx/app.h>
28
29\wxheading{See also}
30
31\helpref{wxApp overview}{wxappoverview}
32
33\latexignore{\rtfignore{\wxheading{Members}}}
34
35\membersection{wxApp::wxApp}
36
37\func{void}{wxApp}{\void}
38
39Constructor. Called implicitly with a definition of a wxApp object.
40
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::FilterEvent}\label{wxappfilterevent}
89
90\func{int}{FilterEvent}{\param{wxEvent\& }{event}}
91
92This function is called before processing any event and allows the application
93to preempt the processing of some events. If this method returns $-1$ the event
94is processed normally, otherwise either {\tt TRUE} or {\tt FALSE} should be
95returned and the event processing stops immediately considering that the event
96had been already processed (for the former return value) or that it is not
97going to be processed at all (for the latter one).
98
99\membersection{wxApp::GetAppName}\label{wxappgetappname}
100
101\constfunc{wxString}{GetAppName}{\void}
102
103Returns the application name.
104
105\wxheading{Remarks}
106
107wxWindows sets this to a reasonable default before
108calling \helpref{wxApp::OnInit}{wxapponinit}, but the application can reset it at will.
109
110\membersection{wxApp::GetAuto3D}\label{wxappgetauto3d}
111
112\constfunc{bool}{GetAuto3D}{\void}
113
114Returns TRUE if 3D control mode is on, FALSE otherwise.
115
116\wxheading{See also}
117
118\helpref{wxApp::SetAuto3D}{wxappsetauto3d}
119
120\membersection{wxApp::GetClassName}\label{wxappgetclassname}
121
122\constfunc{wxString}{GetClassName}{\void}
123
124Gets the class name of the application. The class name may be used in a platform specific
125manner to refer to the application.
126
127\wxheading{See also}
128
129\helpref{wxApp::SetClassName}{wxappsetclassname}
130
131\membersection{wxApp::GetExitOnFrameDelete}\label{wxappgetexitonframedelete}
132
133\constfunc{bool}{GetExitFrameOnDelete}{\void}
134
135Returns TRUE if the application will exit when the top-level window is deleted, FALSE
136otherwise.
137
138\wxheading{See also}
139
140\helpref{wxApp::SetExitOnFrameDelete}{wxappsetexitonframedelete}
141
142\membersection{wxApp::GetTopWindow}\label{wxappgettopwindow}
143
144\constfunc{virtual wxWindow *}{GetTopWindow}{\void}
145
146Returns a pointer to the top window.
147
148\wxheading{Remarks}
149
150If the top window hasn't been set using \helpref{wxApp::SetTopWindow}{wxappsettopwindow}, this
151function will find the first top-level window (frame or dialog) and return that.
152
153\wxheading{See also}
154
155\helpref{SetTopWindow}{wxappsettopwindow}
156
157\membersection{wxApp::GetUseBestVisual}\label{wxappgetusebestvisual}
158
159\constfunc{bool}{GetUseBestVisual}{\void}
160
161Returns TRUE if the application will use the best visual on systems that support
162different visuals, FALSE otherwise.
163
164\wxheading{See also}
165
166\helpref{SetUseBestVisual}{wxappsetusebestvisual}
167
168\membersection{wxApp::GetVendorName}\label{wxappgetvendorname}
169
170\constfunc{wxString}{GetVendorName}{\void}
171
172Returns the application's vendor name.
173
174\membersection{wxApp::ExitMainLoop}\label{wxappexitmainloop}
175
176\func{void}{ExitMainLoop}{\void}
177
178Call this to explicitly exit the main message (event) loop.
179You should normally exit the main loop (and the application) by deleting
180the top window.
181
182\membersection{wxApp::Initialized}\label{wxappinitialized}
183
184\func{bool}{Initialized}{\void}
185
186Returns TRUE if the application has been initialized (i.e. if\rtfsp
187\helpref{wxApp::OnInit}{wxapponinit} has returned successfully). This can be useful for error
188message routines to determine which method of output is best for the
189current state of the program (some windowing systems may not like
190dialogs to pop up before the main loop has been entered).
191
192\membersection{wxApp::MainLoop}\label{wxappmainloop}
193
194\func{int}{MainLoop}{\void}
195
196Called by wxWindows on creation of the application. Override this if you wish
197to provide your own (environment-dependent) main loop.
198
199\wxheading{Return value}
200
201Returns 0 under X, and the wParam of the WM\_QUIT message under Windows.
202
203%% VZ: OnXXX() functions should *not* be documented
204%%
205%%\membersection{wxApp::OnActivate}\label{wxapponactivate}
206%%
207%%\func{void}{OnActivate}{\param{wxActivateEvent\& }{event}}
208%%
209%%Provide this member function to know whether the application is being
210%%activated or deactivated (Windows only).
211%%
212%%\wxheading{See also}
213%%
214%%\helpref{wxWindow::OnActivate}{wxwindowonactivate}, \helpref{wxActivateEvent}{wxactivateevent}
215%%
216%%\membersection{wxApp::OnCharHook}\label{wxapponcharhook}
217%%
218%%\func{void}{OnCharHook}{\param{wxKeyEvent\&}{ event}}
219%%
220%%This event handler function is called (under Windows only) to allow the window to intercept keyboard events
221%%before they are processed by child windows.
222%%
223%%\wxheading{Parameters}
224%%
225%%\docparam{event}{The keypress event.}
226%%
227%%\wxheading{Remarks}
228%%
229%%Use the wxEVT\_CHAR\_HOOK macro in your event table.
230%%
231%%If you use this member, you can selectively consume keypress events by calling\rtfsp
232%%\helpref{wxEvent::Skip}{wxeventskip} for characters the application is not interested in.
233%%
234%%\wxheading{See also}
235%%
236%%\helpref{wxKeyEvent}{wxkeyevent}, \helpref{wxWindow::OnChar}{wxwindowonchar},\rtfsp
237%%\helpref{wxWindow::OnCharHook}{wxwindowoncharhook}, \helpref{wxDialog::OnCharHook}{wxdialogoncharhook}
238
239\membersection{wxApp::OnAssert}\label{wxapponassert}
240
241\func{void}{OnAssert}{\param{const wxChar }{*file}, \param{int }{line}, \param{const wxChar }{*msg}}
242
243This function is called when an assert failure occurs, i.e. the condition
244specified in \helpref{wxASSERT}{wxassert} macro evaluated to {\tt FALSE}.
245It is only called in debug mode (when {\tt \_\_WXDEBUG\_\_} is defined) as
246asserts are not left in the release code at all.
247
248The base class version show the default assert failure dialog box proposing to
249the user to stop the program, continue or ignore all subsequent asserts.
250
251\wxheading{Parameters}
252
253\docparam{file}{the name of the source file where the assert occured}
254
255\docparam{line}{the line number in this file where the assert occured}
256
257\docparam{msg}{the message specified as argument to
258\helpref{wxASSERT\_MSG}{wxassertmsg} or \helpref{wxFAIL\_MSG}{wxfailmsg}, will
259be {\tt NULL} if just \helpref{wxASSERT}{wxassert} or \helpref{wxFAIL}{wxfail}
260was used}
261
262\membersection{wxApp::OnExit}\label{wxapponexit}
263
264\func{int}{OnExit}{\void}
265
266Provide this member function for any processing which needs to be done as
267the application is about to exit.
268
269\membersection{wxApp::OnCmdLineError}\label{wxapponcmdlineerror}
270
271\func{bool}{OnCmdLineError}{\param{wxCmdLineParser\& }{parser}}
272
273Called when command line parsing fails (i.e. an incorrect command line option
274was specified by the user). The default behaviour is to show the program usage
275text and abort the program.
276
277Return {\tt TRUE} to continue normal execution or {\tt FALSE} to return
278{\tt FALSE} from \helpref{OnInit}{wxapponinit} thus terminating the program.
279
280\wxheading{See also}
281
282\helpref{OnInitCmdLine}{wxapponinitcmdline}
283
284\membersection{wxApp::OnCmdLineHelp}\label{wxapponcmdlinehelp}
285
286\func{bool}{OnCmdLineHelp}{\param{wxCmdLineParser\& }{parser}}
287
288Called when the help option ({\tt --help}) was specified on the command line.
289The default behaviour is to show the program usage text and abort the program.
290
291Return {\tt TRUE} to continue normal execution or {\tt FALSE} to return
292{\tt FALSE} from \helpref{OnInit}{wxapponinit} thus terminating the program.
293
294\wxheading{See also}
295
296\helpref{OnInitCmdLine}{wxapponinitcmdline}
297
298\membersection{wxApp::OnCmdLineParsed}\label{wxapponcmdlineparsed}
299
300\func{bool}{OnCmdLineParsed}{\param{wxCmdLineParser\& }{parser}}
301
302Called after the command line had been successfully parsed. You may override
303this method to test for the values of the various parameters which could be
304set from the command line.
305
306Don't forget to call the base class version unless you want to suppress
307processing of the standard command line options.
308
309Return {\tt TRUE} to continue normal execution or {\tt FALSE} to return
310{\tt FALSE} from \helpref{OnInit}{wxapponinit} thus terminating the program.
311
312\wxheading{See also}
313
314\helpref{OnInitCmdLine}{wxapponinitcmdline}
315
316\membersection{wxApp::OnFatalException}\label{wxapponfatalexception}
317
318\func{void}{OnFatalException}{\void}
319
320This function may be called if something fatal happens: an unhandled
321exception under Win32 or a a fatal signal under Unix, for example. However,
322this will not happen by default: you have to explicitly call
323\helpref{wxHandleFatalExceptions}{wxhandlefatalexceptions} to enable this.
324
325Generally speaking, this function should only show a message to the user and
326return. You may attempt to save unsaved data but this is not guaranteed to
327work and, in fact, probably won't.
328
329\wxheading{See also}
330
331\helpref{wxHandleFatalExcetions}{wxhandlefatalexceptions}
332
333%% VZ: the wxApp event handler are private and should not be documented here!
334%%
335%%\membersection{wxApp::OnIdle}\label{wxapponidle}
336%%
337%%\func{void}{OnIdle}{\param{wxIdleEvent\& }{event}}
338%%
339%%Override this member function for any processing which needs to be done
340%%when the application is idle. You should call wxApp::OnIdle from your own function,
341%%since this forwards OnIdle events to windows and also performs garbage collection for
342%%windows whose destruction has been delayed.
343%%
344%%wxWindows' strategy for OnIdle processing is as follows. After pending user interface events for an
345%%application have all been processed, wxWindows sends an OnIdle event to the application object. wxApp::OnIdle itself
346%%sends an OnIdle event to each application window, allowing windows to do idle processing such as updating
347%%their appearance. If either wxApp::OnIdle or a window OnIdle function requested more time, by
348%%caling \helpref{wxIdleEvent::RequestMore}{wxidleeventrequestmore}, wxWindows will send another OnIdle
349%%event to the application object. This will occur in a loop until either a user event is found to be
350%%pending, or OnIdle requests no more time. Then all pending user events are processed until the system
351%%goes idle again, when OnIdle is called, and so on.
352%%
353%%\wxheading{See also}
354%%
355%%\helpref{wxWindow::OnIdle}{wxwindowonidle}, \helpref{wxIdleEvent}{wxidleevent},\rtfsp
356%%\helpref{wxWindow::SendIdleEvents}{wxappsendidleevents}
357%%
358%%\membersection{wxApp::OnEndSession}\label{wxapponendsession}
359%%
360%%\func{void}{OnEndSession}{\param{wxCloseEvent\& }{event}}
361%%
362%%This is an event handler function called when the operating system or GUI session is
363%%about to close down. The application has a chance to silently save information,
364%%and can optionally close itself.
365%%
366%%Use the EVT\_END\_SESSION event table macro to handle query end session events.
367%%
368%%The default handler calls \helpref{wxWindow::Close}{wxwindowclose} with a TRUE argument
369%%(forcing the application to close itself silently).
370%%
371%%\wxheading{Remarks}
372%%
373%%Under X, OnEndSession is called in response to the `die' event.
374%%
375%%Under Windows, OnEndSession is called in response to the WM\_ENDSESSION message.
376%%
377%%\wxheading{See also}
378%%
379%%\helpref{wxWindow::Close}{wxwindowclose},\rtfsp
380%%\helpref{wxWindow::OnCloseWindow}{wxwindowonclosewindow},\rtfsp
381%%\helpref{wxCloseEvent}{wxcloseevent},\rtfsp
382%%\helpref{wxApp::OnQueryEndSession}{wxapponqueryendsession}
383
384\membersection{wxApp::OnInit}\label{wxapponinit}
385
386\func{bool}{OnInit}{\void}
387
388This must be provided by the application, and will usually create the
389application's main window, optionally calling
390\helpref{wxApp::SetTopWindow}{wxappsettopwindow}.
391
392Notice that if you want to to use the command line processing provided by
393wxWindows you have to call the base class version in the derived class
394OnInit().
395
396Return TRUE to continue processing, FALSE to exit the application.
397
398\membersection{wxApp::OnInitCmdLine}\label{wxapponinitcmdline}
399
400\func{void}{OnInitCmdLine}{\param{wxCmdLineParser\& }{parser}}
401
402Called from \helpref{OnInit}{wxapponinit} and may be used to initialize the
403parser with the command line options for this application. The base class
404versions adds support for a few standard options only.
405
406\membersection{wxApp::OnQueryEndSession}\label{wxapponqueryendsession}
407
408\func{void}{OnQueryEndSession}{\param{wxCloseEvent\& }{event}}
409
410This is an event handler function called when the operating system or GUI session is
411about to close down. Typically, an application will try to save unsaved documents
412at this point.
413
414If \helpref{wxCloseEvent::CanVeto}{wxcloseeventcanveto} returns TRUE, the application
415is allowed to veto the shutdown by calling \helpref{wxCloseEvent::Veto}{wxcloseeventveto}.
416The application might veto the shutdown after prompting for documents to be saved, and the
417user has cancelled the save.
418
419Use the EVT\_QUERY\_END\_SESSION event table macro to handle query end session events.
420
421You should check whether the application is forcing the deletion of the window
422using \helpref{wxCloseEvent::GetForce}{wxcloseeventgetforce}. If this is TRUE,
423destroy the window using \helpref{wxWindow::Destroy}{wxwindowdestroy}.
424If not, it is up to you whether you respond by destroying the window.
425
426The default handler calls \helpref{wxWindow::Close}{wxwindowclose} on the top-level window,
427and vetoes the shutdown if Close returns FALSE. This will be sufficient for many applications.
428
429\wxheading{Remarks}
430
431Under X, OnQueryEndSession is called in response to the `save session' event.
432
433Under Windows, OnQueryEndSession is called in response to the WM\_QUERYENDSESSION message.
434
435\wxheading{See also}
436
437\helpref{wxWindow::Close}{wxwindowclose},\rtfsp
438\helpref{wxCloseEvent}{wxcloseevent}
439%% GD: OnXXX functions are not documented
440%%\helpref{wxApp::OnEndSession}{wxapponendsession}
441
442\membersection{wxApp::ProcessMessage}\label{wxappprocessmessage}
443
444\func{bool}{ProcessMessage}{\param{WXMSG *}{msg}}
445
446Windows-only function for processing a message. This function
447is called from the main message loop, checking for windows that
448may wish to process it. The function returns TRUE if the message
449was processed, FALSE otherwise. If you use wxWindows with another class
450library with its own message loop, you should make sure that this
451function is called to allow wxWindows to receive messages. For example,
452to allow co-existance with the Microsoft Foundation Classes, override
453the PreTranslateMessage function:
454
455\begin{verbatim}
456// Provide wxWindows message loop compatibility
457BOOL CTheApp::PreTranslateMessage(MSG *msg)
458{
459 if (wxTheApp && wxTheApp->ProcessMessage((WXMSW *)msg))
460 return TRUE;
461 else
462 return CWinApp::PreTranslateMessage(msg);
463}
464\end{verbatim}
465
466\membersection{wxApp::Pending}\label{wxapppending}
467
468\func{bool}{Pending}{\void}
469
470Returns TRUE if unprocessed events are in the window system event queue.
471
472\wxheading{See also}
473
474\helpref{wxApp::Dispatch}{wxappdispatch}
475
476\membersection{wxApp::SendIdleEvents}\label{wxappsendidleevents}
477
478\func{bool}{SendIdleEvents}{\void}
479
480Sends idle events to all top-level windows.
481
482\func{bool}{SendIdleEvents}{\param{wxWindow*}{ win}}
483
484Sends idle events to a window and its children.
485
486\wxheading{Remarks}
487
488These functions poll the top-level windows, and their children, for idle event processing.
489If TRUE is returned, more OnIdle processing is requested by one or more window.
490
491\wxheading{See also}
492
493%% GD: OnXXX functions are not documented
494%%\helpref{wxApp::OnIdle}{wxapponidle}
495\helpref{wxIdleEvent}{wxidleevent}
496
497\membersection{wxApp::SetAppName}\label{wxappsetappname}
498
499\func{void}{SetAppName}{\param{const wxString\& }{name}}
500
501Sets the name of the application. The name may be used in dialogs
502(for example by the document/view framework). A default name is set by
503wxWindows.
504
505\wxheading{See also}
506
507\helpref{wxApp::GetAppName}{wxappgetappname}
508
509\membersection{wxApp::SetAuto3D}\label{wxappsetauto3d}
510
511\func{void}{SetAuto3D}{\param{const bool}{ auto3D}}
512
513Switches automatic 3D controls on or off.
514
515\wxheading{Parameters}
516
517\docparam{auto3D}{If TRUE, all controls will be created with 3D appearances unless
518overridden for a control or dialog. The default is TRUE}
519
520\wxheading{Remarks}
521
522This has an effect on Windows only.
523
524\wxheading{See also}
525
526\helpref{wxApp::GetAuto3D}{wxappgetauto3d}
527
528\membersection{wxApp::SetClassName}\label{wxappsetclassname}
529
530\func{void}{SetClassName}{\param{const wxString\& }{name}}
531
532Sets the class name of the application. This may be used in a platform specific
533manner to refer to the application.
534
535\wxheading{See also}
536
537\helpref{wxApp::GetClassName}{wxappgetclassname}
538
539\membersection{wxApp::SetExitOnFrameDelete}\label{wxappsetexitonframedelete}
540
541\func{void}{SetExitOnFrameDelete}{\param{bool}{ flag}}
542
543Allows the programmer to specify whether the application will exit when the
544top-level frame is deleted.
545
546\wxheading{Parameters}
547
548\docparam{flag}{If TRUE (the default), the application will exit when the top-level frame is
549deleted. If FALSE, the application will continue to run.}
550
551\membersection{wxApp::SetTopWindow}\label{wxappsettopwindow}
552
553\func{void}{SetTopWindow}{\param{wxWindow* }{window}}
554
555Sets the `top' window. You can call this from within \helpref{wxApp::OnInit}{wxapponinit} to
556let wxWindows know which is the main window. You don't have to set the top window;
557it is only a convenience so that (for example) certain dialogs without parents can use a
558specific window as the top window. If no top window is specified by the application,
559wxWindows just uses the first frame or dialog in its top-level window list, when it
560needs to use the top window.
561
562\wxheading{Parameters}
563
564\docparam{window}{The new top window.}
565
566\wxheading{See also}
567
568\helpref{wxApp::GetTopWindow}{wxappgettopwindow}, \helpref{wxApp::OnInit}{wxapponinit}
569
570
571\membersection{wxApp::SetVendorName}\label{wxappsetvendorname}
572
573\func{void}{SetVendorName}{\param{const wxString\& }{name}}
574
575Sets the name of application's vendor. The name will be used
576in registry access. A default name is set by
577wxWindows.
578
579\wxheading{See also}
580
581\helpref{wxApp::GetVendorName}{wxappgetvendorname}
582
583\membersection{wxApp::SetUseBestVisual}\label{wxappsetusebestvisual}
584
585\func{void}{SetUseBestVisual}{\param{bool}{ flag}}
586
587Allows the programmer to specify whether the application will use the best visual
588on systems that support several visual on the same display. This is typically the
589case under Solaris and IRIX, where the default visual is only 8-bit whereas certain
590appications are supposed to run in TrueColour mode.
591
592Note that this function has to be called in the constructor of the {\tt wxApp}
593instance and won't have any effect when called later on.
594
595This function currently only has effect under GTK.
596
597\wxheading{Parameters}
598
599\docparam{flag}{If TRUE, the app will use the best visual.}
600
601\membersection{wxApp::Yield}\label{wxappyield}
602
603\func{bool}{Yield}{\param{bool}{ onlyIfNeeded = FALSE}}
604
605Yields control to pending messages in the windowing system. This can be useful, for example, when a
606time-consuming process writes to a text window. Without an occasional
607yield, the text window will not be updated properly, and on systems with
608cooperative multitasking, such as Windows 3.1 other processes will not respond.
609
610Caution should be exercised, however, since yielding may allow the
611user to perform actions which are not compatible with the current task.
612Disabling menu items or whole menus during processing can avoid unwanted
613reentrance of code: see \helpref{::wxSafeYield}{wxsafeyield} for a better
614function.
615
616Note that Yield() will not flush the message logs. This is intentional as
617calling Yield() is usually done to quickly update the screen and popping up a
618message box dialog may be undesirable. If you do wish to flush the log
619messages immediately (otherwise it will be done during the next idle loop
620iteration), call \helpref{wxLog::FlushActive}{wxlogflushactive}.
621
622Calling Yield() recursively is normally an error and an assert failure is
623raised in debug build if such situation is detected. However if the the
624{\it onlyIfNeeded} parameter is {\tt TRUE}, the method will just silently
625return {\tt FALSE} instead.
626