]>
Commit | Line | Data |
---|---|---|
a660d684 KB |
1 | \section{\class{wxApp}}\label{wxapp} |
2 | ||
3 | The {\bf wxApp} class represents the application itself. It is used | |
4 | to: | |
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 | |
11 | objects in the application. | |
12 | \end{itemize} | |
13 | ||
14 | You should use the macro IMPLEMENT\_APP(appClass) in your application implementation | |
fc2171bd | 15 | file to tell wxWidgets how to create an instance of your application class. |
a660d684 KB |
16 | |
17 | Use DECLARE\_APP(appClass) in a header file if you want the wxGetApp function (which returns | |
18 | a 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 | ||
bc37bb43 | 35 | |
a660d684 KB |
36 | \membersection{wxApp::wxApp} |
37 | ||
2fd284a4 | 38 | \func{void}{wxApp}{\void} |
a660d684 KB |
39 | |
40 | Constructor. Called implicitly with a definition of a wxApp object. | |
41 | ||
4c39aa3a | 42 | |
a660d684 KB |
43 | \membersection{wxApp::\destruct{wxApp}} |
44 | ||
45 | \func{void}{\destruct{wxApp}}{\void} | |
46 | ||
47 | Destructor. Will be called implicitly on program exit if the wxApp | |
48 | object is created on the stack. | |
49 | ||
4c39aa3a | 50 | |
a660d684 KB |
51 | \membersection{wxApp::argc}\label{wxappargc} |
52 | ||
53 | \member{int}{argc} | |
54 | ||
55 | Number of command line arguments (after environment-specific processing). | |
56 | ||
4c39aa3a | 57 | |
a660d684 KB |
58 | \membersection{wxApp::argv}\label{wxappargv} |
59 | ||
60 | \member{char **}{argv} | |
61 | ||
62 | Command line arguments (after environment-specific processing). | |
63 | ||
4c39aa3a | 64 | |
a660d684 KB |
65 | \membersection{wxApp::CreateLogTarget}\label{wxappcreatelogtarget} |
66 | ||
67 | \func{virtual wxLog*}{CreateLogTarget}{\void} | |
68 | ||
69 | Creates a wxLog class for the application to use for logging errors. The default | |
70 | implementation returns a new wxLogGui class. | |
71 | ||
72 | \wxheading{See also} | |
73 | ||
74 | \helpref{wxLog}{wxlog} | |
75 | ||
4c39aa3a | 76 | |
a660d684 KB |
77 | \membersection{wxApp::Dispatch}\label{wxappdispatch} |
78 | ||
c805f6c3 | 79 | \func{virtual void}{Dispatch}{\void} |
a660d684 KB |
80 | |
81 | Dispatches the next event in the windowing system event queue. | |
82 | ||
83 | This can be used for programming event loops, e.g. | |
84 | ||
85 | \begin{verbatim} | |
86 | while (app.Pending()) | |
87 | Dispatch(); | |
88 | \end{verbatim} | |
89 | ||
90 | \wxheading{See also} | |
91 | ||
92 | \helpref{wxApp::Pending}{wxapppending} | |
93 | ||
4c39aa3a | 94 | |
9154d8cf VZ |
95 | \membersection{wxApp::FilterEvent}\label{wxappfilterevent} |
96 | ||
97 | \func{int}{FilterEvent}{\param{wxEvent\& }{event}} | |
98 | ||
99 | This function is called before processing any event and allows the application | |
100 | to preempt the processing of some events. If this method returns $-1$ the event | |
cc81d32f | 101 | is processed normally, otherwise either {\tt true} or {\tt false} should be |
9154d8cf VZ |
102 | returned and the event processing stops immediately considering that the event |
103 | had been already processed (for the former return value) or that it is not | |
104 | going to be processed at all (for the latter one). | |
105 | ||
4c39aa3a | 106 | |
2fd47df6 VZ |
107 | \membersection{wxApp::ExitMainLoop}\label{wxappexitmainloop} |
108 | ||
109 | \func{virtual void}{ExitMainLoop}{\void} | |
110 | ||
111 | Call this to explicitly exit the main message (event) loop. | |
112 | You should normally exit the main loop (and the application) by deleting | |
113 | the top window. | |
114 | ||
115 | ||
a660d684 KB |
116 | \membersection{wxApp::GetAppName}\label{wxappgetappname} |
117 | ||
118 | \constfunc{wxString}{GetAppName}{\void} | |
119 | ||
120 | Returns the application name. | |
121 | ||
122 | \wxheading{Remarks} | |
123 | ||
fc2171bd | 124 | wxWidgets sets this to a reasonable default before |
a660d684 KB |
125 | calling \helpref{wxApp::OnInit}{wxapponinit}, but the application can reset it at will. |
126 | ||
4c39aa3a | 127 | |
a660d684 KB |
128 | \membersection{wxApp::GetAuto3D}\label{wxappgetauto3d} |
129 | ||
130 | \constfunc{bool}{GetAuto3D}{\void} | |
131 | ||
cc81d32f | 132 | Returns true if 3D control mode is on, false otherwise. |
a660d684 KB |
133 | |
134 | \wxheading{See also} | |
135 | ||
136 | \helpref{wxApp::SetAuto3D}{wxappsetauto3d} | |
137 | ||
4c39aa3a | 138 | |
a660d684 KB |
139 | \membersection{wxApp::GetClassName}\label{wxappgetclassname} |
140 | ||
141 | \constfunc{wxString}{GetClassName}{\void} | |
142 | ||
143 | Gets the class name of the application. The class name may be used in a platform specific | |
144 | manner to refer to the application. | |
145 | ||
146 | \wxheading{See also} | |
147 | ||
148 | \helpref{wxApp::SetClassName}{wxappsetclassname} | |
149 | ||
4c39aa3a | 150 | |
f59d80ca | 151 | \membersection{wxApp::GetExitOnFrameDelete}\label{wxappgetexitonframedelete} |
a660d684 | 152 | |
dab73021 | 153 | \constfunc{bool}{GetExitOnFrameDelete}{\void} |
a660d684 | 154 | |
cc81d32f | 155 | Returns true if the application will exit when the top-level window is deleted, false |
a660d684 KB |
156 | otherwise. |
157 | ||
158 | \wxheading{See also} | |
159 | ||
1cbee0b4 VZ |
160 | \helpref{wxApp::SetExitOnFrameDelete}{wxappsetexitonframedelete},\\ |
161 | \helpref{wxApp shutdown overview}{wxappshutdownoverview} | |
a660d684 | 162 | |
4c39aa3a | 163 | |
a660d684 KB |
164 | \membersection{wxApp::GetTopWindow}\label{wxappgettopwindow} |
165 | ||
83a5b533 | 166 | \constfunc{virtual wxWindow *}{GetTopWindow}{\void} |
a660d684 KB |
167 | |
168 | Returns a pointer to the top window. | |
169 | ||
2a47d3c1 JS |
170 | \wxheading{Remarks} |
171 | ||
172 | If the top window hasn't been set using \helpref{wxApp::SetTopWindow}{wxappsettopwindow}, this | |
173 | function will find the first top-level window (frame or dialog) and return that. | |
174 | ||
a660d684 KB |
175 | \wxheading{See also} |
176 | ||
8480b297 RR |
177 | \helpref{SetTopWindow}{wxappsettopwindow} |
178 | ||
4c39aa3a | 179 | |
8480b297 RR |
180 | \membersection{wxApp::GetUseBestVisual}\label{wxappgetusebestvisual} |
181 | ||
182 | \constfunc{bool}{GetUseBestVisual}{\void} | |
183 | ||
cc81d32f VS |
184 | Returns true if the application will use the best visual on systems that support |
185 | different visuals, false otherwise. | |
8480b297 RR |
186 | |
187 | \wxheading{See also} | |
188 | ||
189 | \helpref{SetUseBestVisual}{wxappsetusebestvisual} | |
a660d684 | 190 | |
4c39aa3a | 191 | |
e06b9569 | 192 | \membersection{wxApp::GetVendorName}\label{wxappgetvendorname} |
2aa59ef4 VS |
193 | |
194 | \constfunc{wxString}{GetVendorName}{\void} | |
195 | ||
196 | Returns the application's vendor name. | |
197 | ||
4c39aa3a | 198 | |
2fd47df6 | 199 | \membersection{wxApp::IsActive}\label{wxappisactive} |
a660d684 | 200 | |
2fd47df6 | 201 | \constfunc{bool}{IsActive}{\void} |
a660d684 | 202 | |
2fd47df6 VZ |
203 | Returns \true if the application is active, i.e. if one of its windows is |
204 | currently in the foreground. If this function returns \false and you need to | |
205 | attract users attention to the application, you may use | |
206 | \helpref{wxTopLevelWindow::RequestUserAttention}{wxtoplevelwindowrequestuserattention} | |
207 | to do it. | |
a660d684 | 208 | |
4c39aa3a | 209 | |
5f4f5b58 VZ |
210 | \membersection{wxApp::IsMainLoopRunning}\label{wxappismainlooprunning} |
211 | ||
212 | \constfunc{bool}{IsMainLoopRunning}{\void} | |
213 | ||
214 | Returns \true if the main event loop is currently running, i.e. if the | |
215 | application is inside \helpref{OnRun}{wxapponrun}. | |
216 | ||
217 | This can be useful to test whether the events can be dispatched. For example, | |
218 | if this function returns \false, non-blocking sockets cannot be used because | |
219 | the events from them would never be processed. | |
220 | ||
221 | ||
a660d684 KB |
222 | \membersection{wxApp::MainLoop}\label{wxappmainloop} |
223 | ||
c805f6c3 | 224 | \func{virtual int}{MainLoop}{\void} |
a660d684 | 225 | |
fc2171bd | 226 | Called by wxWidgets on creation of the application. Override this if you wish |
a660d684 KB |
227 | to provide your own (environment-dependent) main loop. |
228 | ||
229 | \wxheading{Return value} | |
230 | ||
231 | Returns 0 under X, and the wParam of the WM\_QUIT message under Windows. | |
232 | ||
a5f1fd3e VZ |
233 | %% VZ: OnXXX() functions should *not* be documented |
234 | %% | |
235 | %%\membersection{wxApp::OnActivate}\label{wxapponactivate} | |
236 | %% | |
237 | %%\func{void}{OnActivate}{\param{wxActivateEvent\& }{event}} | |
238 | %% | |
239 | %%Provide this member function to know whether the application is being | |
240 | %%activated or deactivated (Windows only). | |
241 | %% | |
242 | %%\wxheading{See also} | |
243 | %% | |
244 | %%\helpref{wxWindow::OnActivate}{wxwindowonactivate}, \helpref{wxActivateEvent}{wxactivateevent} | |
245 | %% | |
246 | %%\membersection{wxApp::OnCharHook}\label{wxapponcharhook} | |
247 | %% | |
248 | %%\func{void}{OnCharHook}{\param{wxKeyEvent\&}{ event}} | |
249 | %% | |
250 | %%This event handler function is called (under Windows only) to allow the window to intercept keyboard events | |
251 | %%before they are processed by child windows. | |
252 | %% | |
253 | %%\wxheading{Parameters} | |
254 | %% | |
255 | %%\docparam{event}{The keypress event.} | |
256 | %% | |
257 | %%\wxheading{Remarks} | |
258 | %% | |
259 | %%Use the wxEVT\_CHAR\_HOOK macro in your event table. | |
260 | %% | |
261 | %%If you use this member, you can selectively consume keypress events by calling\rtfsp | |
262 | %%\helpref{wxEvent::Skip}{wxeventskip} for characters the application is not interested in. | |
263 | %% | |
264 | %%\wxheading{See also} | |
265 | %% | |
266 | %%\helpref{wxKeyEvent}{wxkeyevent}, \helpref{wxWindow::OnChar}{wxwindowonchar},\rtfsp | |
267 | %%\helpref{wxWindow::OnCharHook}{wxwindowoncharhook}, \helpref{wxDialog::OnCharHook}{wxdialogoncharhook} | |
268 | ||
4c39aa3a | 269 | |
a5f1fd3e VZ |
270 | \membersection{wxApp::OnAssert}\label{wxapponassert} |
271 | ||
aad65f13 | 272 | \func{void}{OnAssert}{\param{const wxChar }{*file}, \param{int }{line}, \param{const wxChar }{*cond}, \param{const wxChar }{*msg}} |
a5f1fd3e VZ |
273 | |
274 | This function is called when an assert failure occurs, i.e. the condition | |
cc81d32f | 275 | specified in \helpref{wxASSERT}{wxassert} macro evaluated to {\tt false}. |
1156efc1 | 276 | It is only called in debug mode (when {\tt \_\_WXDEBUG\_\_} is defined) as |
a5f1fd3e VZ |
277 | asserts are not left in the release code at all. |
278 | ||
279 | The base class version show the default assert failure dialog box proposing to | |
280 | the user to stop the program, continue or ignore all subsequent asserts. | |
a660d684 | 281 | |
a5f1fd3e | 282 | \wxheading{Parameters} |
a660d684 | 283 | |
a5f1fd3e | 284 | \docparam{file}{the name of the source file where the assert occured} |
a660d684 | 285 | |
a5f1fd3e | 286 | \docparam{line}{the line number in this file where the assert occured} |
a660d684 | 287 | |
aad65f13 VZ |
288 | \docparam{cond}{the condition of the failed assert in string form} |
289 | ||
a5f1fd3e VZ |
290 | \docparam{msg}{the message specified as argument to |
291 | \helpref{wxASSERT\_MSG}{wxassertmsg} or \helpref{wxFAIL\_MSG}{wxfailmsg}, will | |
292 | be {\tt NULL} if just \helpref{wxASSERT}{wxassert} or \helpref{wxFAIL}{wxfail} | |
293 | was used} | |
a660d684 | 294 | |
a660d684 | 295 | |
bf188f1a | 296 | \membersection{wxApp::OnCmdLineError}\label{wxapponcmdlineerror} |
a37a5a73 | 297 | |
bf188f1a | 298 | \func{bool}{OnCmdLineError}{\param{wxCmdLineParser\& }{parser}} |
a37a5a73 | 299 | |
bf188f1a VZ |
300 | Called when command line parsing fails (i.e. an incorrect command line option |
301 | was specified by the user). The default behaviour is to show the program usage | |
302 | text and abort the program. | |
a37a5a73 | 303 | |
cc81d32f VS |
304 | Return {\tt true} to continue normal execution or {\tt false} to return |
305 | {\tt false} from \helpref{OnInit}{wxapponinit} thus terminating the program. | |
a37a5a73 VZ |
306 | |
307 | \wxheading{See also} | |
308 | ||
bf188f1a | 309 | \helpref{OnInitCmdLine}{wxapponinitcmdline} |
a37a5a73 | 310 | |
4c39aa3a | 311 | |
bf188f1a | 312 | \membersection{wxApp::OnCmdLineHelp}\label{wxapponcmdlinehelp} |
a660d684 | 313 | |
bf188f1a | 314 | \func{bool}{OnCmdLineHelp}{\param{wxCmdLineParser\& }{parser}} |
a660d684 | 315 | |
bf188f1a VZ |
316 | Called when the help option ({\tt --help}) was specified on the command line. |
317 | The default behaviour is to show the program usage text and abort the program. | |
a660d684 | 318 | |
cc81d32f VS |
319 | Return {\tt true} to continue normal execution or {\tt false} to return |
320 | {\tt false} from \helpref{OnInit}{wxapponinit} thus terminating the program. | |
a660d684 KB |
321 | |
322 | \wxheading{See also} | |
323 | ||
bf188f1a | 324 | \helpref{OnInitCmdLine}{wxapponinitcmdline} |
a660d684 | 325 | |
4c39aa3a | 326 | |
bf188f1a | 327 | \membersection{wxApp::OnCmdLineParsed}\label{wxapponcmdlineparsed} |
387a3b02 | 328 | |
bf188f1a | 329 | \func{bool}{OnCmdLineParsed}{\param{wxCmdLineParser\& }{parser}} |
387a3b02 | 330 | |
bf188f1a VZ |
331 | Called after the command line had been successfully parsed. You may override |
332 | this method to test for the values of the various parameters which could be | |
333 | set from the command line. | |
387a3b02 | 334 | |
bf188f1a VZ |
335 | Don't forget to call the base class version unless you want to suppress |
336 | processing of the standard command line options. | |
387a3b02 | 337 | |
cc81d32f VS |
338 | Return {\tt true} to continue normal execution or {\tt false} to return |
339 | {\tt false} from \helpref{OnInit}{wxapponinit} thus terminating the program. | |
387a3b02 | 340 | |
bf188f1a VZ |
341 | \wxheading{See also} |
342 | ||
343 | \helpref{OnInitCmdLine}{wxapponinitcmdline} | |
344 | ||
4c39aa3a | 345 | |
b76f0023 VZ |
346 | \membersection{wxApp::OnExceptionInMainLoop}{wxapponexceptioninmainloop} |
347 | ||
348 | \func{virtual bool}{OnExceptionInMainLoop}{\void} | |
349 | ||
350 | This function is called if an unhandled exception occurs inside the main | |
351 | application event loop. It can return \true to ignore the exception and to | |
352 | continue running the loop or \false to exit the loop and terminate the | |
353 | program. In the latter case it can also use C++ \texttt{throw} keyword to | |
354 | rethrow the current exception. | |
355 | ||
356 | The default behaviour of this function is the latter in all ports except under | |
357 | Windows where a dialog is shown to the user which allows him to choose between | |
358 | the different options. You may override this function in your class to do | |
359 | something more appropriate. | |
360 | ||
361 | Finally note that if the exception is rethrown from here, it can be caught in | |
362 | \helpref{OnUnhandledException}{wxapponunhandledexception}. | |
363 | ||
364 | ||
4c39aa3a VZ |
365 | \membersection{wxApp::OnExit}\label{wxapponexit} |
366 | ||
bc37bb43 | 367 | \func{virtual int}{OnExit}{\void} |
4c39aa3a | 368 | |
bc37bb43 | 369 | Override this member function for any processing which needs to be |
4c39aa3a VZ |
370 | done as the application is about to exit. OnExit is called after |
371 | destroying all application windows and controls, but before | |
fc2171bd | 372 | wxWidgets cleanup. Note that it is not called at all if |
bc37bb43 VZ |
373 | \helpref{OnInit}{wxapponinit} failed. |
374 | ||
375 | The return value of this function is currently ignored, return the same value | |
376 | as returned by the base class method if you override it. | |
4c39aa3a VZ |
377 | |
378 | ||
bf188f1a VZ |
379 | \membersection{wxApp::OnFatalException}\label{wxapponfatalexception} |
380 | ||
381 | \func{void}{OnFatalException}{\void} | |
387a3b02 | 382 | |
bf188f1a VZ |
383 | This function may be called if something fatal happens: an unhandled |
384 | exception under Win32 or a a fatal signal under Unix, for example. However, | |
385 | this will not happen by default: you have to explicitly call | |
386 | \helpref{wxHandleFatalExceptions}{wxhandlefatalexceptions} to enable this. | |
387a3b02 | 387 | |
bf188f1a VZ |
388 | Generally speaking, this function should only show a message to the user and |
389 | return. You may attempt to save unsaved data but this is not guaranteed to | |
390 | work and, in fact, probably won't. | |
387a3b02 JS |
391 | |
392 | \wxheading{See also} | |
393 | ||
d2c2afc9 | 394 | \helpref{wxHandleFatalExceptions}{wxhandlefatalexceptions} |
bf188f1a VZ |
395 | |
396 | %% VZ: the wxApp event handler are private and should not be documented here! | |
397 | %% | |
398 | %%\membersection{wxApp::OnIdle}\label{wxapponidle} | |
399 | %% | |
400 | %%\func{void}{OnIdle}{\param{wxIdleEvent\& }{event}} | |
401 | %% | |
402 | %%Override this member function for any processing which needs to be done | |
403 | %%when the application is idle. You should call wxApp::OnIdle from your own function, | |
404 | %%since this forwards OnIdle events to windows and also performs garbage collection for | |
405 | %%windows whose destruction has been delayed. | |
406 | %% | |
fc2171bd JS |
407 | %%wxWidgets' strategy for OnIdle processing is as follows. After pending user interface events for an |
408 | %%application have all been processed, wxWidgets sends an OnIdle event to the application object. wxApp::OnIdle itself | |
bf188f1a VZ |
409 | %%sends an OnIdle event to each application window, allowing windows to do idle processing such as updating |
410 | %%their appearance. If either wxApp::OnIdle or a window OnIdle function requested more time, by | |
fc2171bd | 411 | %%calling \helpref{wxIdleEvent::RequestMore}{wxidleeventrequestmore}, wxWidgets will send another OnIdle |
bf188f1a VZ |
412 | %%event to the application object. This will occur in a loop until either a user event is found to be |
413 | %%pending, or OnIdle requests no more time. Then all pending user events are processed until the system | |
414 | %%goes idle again, when OnIdle is called, and so on. | |
415 | %% | |
416 | %%\wxheading{See also} | |
417 | %% | |
418 | %%\helpref{wxWindow::OnIdle}{wxwindowonidle}, \helpref{wxIdleEvent}{wxidleevent},\rtfsp | |
419 | %%\helpref{wxWindow::SendIdleEvents}{wxappsendidleevents} | |
420 | %% | |
421 | %%\membersection{wxApp::OnEndSession}\label{wxapponendsession} | |
422 | %% | |
423 | %%\func{void}{OnEndSession}{\param{wxCloseEvent\& }{event}} | |
424 | %% | |
425 | %%This is an event handler function called when the operating system or GUI session is | |
426 | %%about to close down. The application has a chance to silently save information, | |
427 | %%and can optionally close itself. | |
428 | %% | |
429 | %%Use the EVT\_END\_SESSION event table macro to handle query end session events. | |
430 | %% | |
cc81d32f | 431 | %%The default handler calls \helpref{wxWindow::Close}{wxwindowclose} with a true argument |
bf188f1a VZ |
432 | %%(forcing the application to close itself silently). |
433 | %% | |
434 | %%\wxheading{Remarks} | |
435 | %% | |
436 | %%Under X, OnEndSession is called in response to the `die' event. | |
437 | %% | |
438 | %%Under Windows, OnEndSession is called in response to the WM\_ENDSESSION message. | |
439 | %% | |
440 | %%\wxheading{See also} | |
441 | %% | |
442 | %%\helpref{wxWindow::Close}{wxwindowclose},\rtfsp | |
443 | %%\helpref{wxWindow::OnCloseWindow}{wxwindowonclosewindow},\rtfsp | |
444 | %%\helpref{wxCloseEvent}{wxcloseevent},\rtfsp | |
445 | %%\helpref{wxApp::OnQueryEndSession}{wxapponqueryendsession} | |
387a3b02 | 446 | |
4c39aa3a | 447 | |
a660d684 KB |
448 | \membersection{wxApp::OnInit}\label{wxapponinit} |
449 | ||
450 | \func{bool}{OnInit}{\void} | |
451 | ||
452 | This must be provided by the application, and will usually create the | |
bf188f1a | 453 | application's main window, optionally calling |
bc37bb43 VZ |
454 | \helpref{wxApp::SetTopWindow}{wxappsettopwindow}. You may use |
455 | \helpref{OnExit}{wxapponexit} to clean up anything initialized here, provided | |
456 | that the function returns \true. | |
bf188f1a VZ |
457 | |
458 | Notice that if you want to to use the command line processing provided by | |
fc2171bd | 459 | wxWidgets you have to call the base class version in the derived class |
bf188f1a | 460 | OnInit(). |
a660d684 | 461 | |
bc37bb43 VZ |
462 | Return \true to continue processing, \false to exit the application |
463 | immediately. | |
a660d684 | 464 | |
4c39aa3a | 465 | |
bf188f1a VZ |
466 | \membersection{wxApp::OnInitCmdLine}\label{wxapponinitcmdline} |
467 | ||
468 | \func{void}{OnInitCmdLine}{\param{wxCmdLineParser\& }{parser}} | |
469 | ||
470 | Called from \helpref{OnInit}{wxapponinit} and may be used to initialize the | |
471 | parser with the command line options for this application. The base class | |
472 | versions adds support for a few standard options only. | |
473 | ||
4c39aa3a | 474 | |
387a3b02 | 475 | \membersection{wxApp::OnQueryEndSession}\label{wxapponqueryendsession} |
a660d684 | 476 | |
387a3b02 | 477 | \func{void}{OnQueryEndSession}{\param{wxCloseEvent\& }{event}} |
a660d684 | 478 | |
387a3b02 JS |
479 | This is an event handler function called when the operating system or GUI session is |
480 | about to close down. Typically, an application will try to save unsaved documents | |
481 | at this point. | |
482 | ||
cc81d32f | 483 | If \helpref{wxCloseEvent::CanVeto}{wxcloseeventcanveto} returns true, the application |
387a3b02 JS |
484 | is allowed to veto the shutdown by calling \helpref{wxCloseEvent::Veto}{wxcloseeventveto}. |
485 | The application might veto the shutdown after prompting for documents to be saved, and the | |
486 | user has cancelled the save. | |
487 | ||
488 | Use the EVT\_QUERY\_END\_SESSION event table macro to handle query end session events. | |
489 | ||
490 | You should check whether the application is forcing the deletion of the window | |
cc81d32f | 491 | using \helpref{wxCloseEvent::GetForce}{wxcloseeventgetforce}. If this is true, |
387a3b02 JS |
492 | destroy the window using \helpref{wxWindow::Destroy}{wxwindowdestroy}. |
493 | If not, it is up to you whether you respond by destroying the window. | |
494 | ||
495 | The default handler calls \helpref{wxWindow::Close}{wxwindowclose} on the top-level window, | |
cc81d32f | 496 | and vetoes the shutdown if Close returns false. This will be sufficient for many applications. |
387a3b02 JS |
497 | |
498 | \wxheading{Remarks} | |
499 | ||
8771a323 | 500 | Under X, OnQueryEndSession is called in response to the `save session' event. |
387a3b02 JS |
501 | |
502 | Under Windows, OnQueryEndSession is called in response to the WM\_QUERYENDSESSION message. | |
a660d684 KB |
503 | |
504 | \wxheading{See also} | |
505 | ||
387a3b02 | 506 | \helpref{wxWindow::Close}{wxwindowclose},\rtfsp |
d2c2afc9 | 507 | \helpref{wxCloseEvent}{wxcloseevent}\rtfsp |
4c39aa3a | 508 | |
bc37bb43 | 509 | |
4c39aa3a VZ |
510 | \membersection{wxApp::OnRun}\label{wxapponrun} |
511 | ||
512 | \func{virtual int}{OnRun}{\void} | |
513 | ||
fc2171bd | 514 | This virtual function is where the execution of a program written in wxWidgets |
4c39aa3a VZ |
515 | starts. The default implementation just enters the main loop and starts |
516 | handling the events until it terminates, either because | |
517 | \helpref{ExitMainLoop}{wxappexitmainloop} has been explicitly called or because | |
518 | the last frame has been deleted and | |
519 | \helpref{GetExitOnFrameDelete}{wxappgetexitonframedelete} flag is \true (this | |
520 | is the default). | |
521 | ||
bc37bb43 VZ |
522 | The return value of this function becomes the exit code of the program, so it |
523 | should return $0$ in case of successful termination. | |
524 | ||
525 | ||
e490e267 | 526 | \membersection{wxApp::OnUnhandledException}\label{wxapponunhandledexception} |
4c39aa3a VZ |
527 | |
528 | \func{virtual void}{OnUnhandledException}{\void} | |
529 | ||
530 | This function is called when an unhandled C++ exception occurs inside | |
531 | \helpref{OnRun()}{wxapponrun} (the exceptions which occur during the program | |
532 | startup and shutdown might not be caught at all). | |
533 | Note that the exception type is lost by now, so if you want to really handle | |
534 | the exception you should override \helpref{OnRun()}{wxapponrun} and put a | |
535 | try/catch clause around the call to the base class version there. | |
536 | ||
bc37bb43 | 537 | |
a660d684 KB |
538 | \membersection{wxApp::ProcessMessage}\label{wxappprocessmessage} |
539 | ||
da25d3ab | 540 | \func{bool}{ProcessMessage}{\param{WXMSG *}{msg}} |
a660d684 KB |
541 | |
542 | Windows-only function for processing a message. This function | |
543 | is called from the main message loop, checking for windows that | |
cc81d32f | 544 | may wish to process it. The function returns true if the message |
fc2171bd | 545 | was processed, false otherwise. If you use wxWidgets with another class |
a660d684 | 546 | library with its own message loop, you should make sure that this |
fc2171bd | 547 | function is called to allow wxWidgets to receive messages. For example, |
2edb0bde | 548 | to allow co-existence with the Microsoft Foundation Classes, override |
a660d684 KB |
549 | the PreTranslateMessage function: |
550 | ||
551 | \begin{verbatim} | |
fc2171bd | 552 | // Provide wxWidgets message loop compatibility |
a660d684 KB |
553 | BOOL CTheApp::PreTranslateMessage(MSG *msg) |
554 | { | |
da25d3ab | 555 | if (wxTheApp && wxTheApp->ProcessMessage((WXMSW *)msg)) |
cc81d32f | 556 | return true; |
a660d684 KB |
557 | else |
558 | return CWinApp::PreTranslateMessage(msg); | |
559 | } | |
560 | \end{verbatim} | |
561 | ||
4c39aa3a | 562 | |
387a3b02 JS |
563 | \membersection{wxApp::Pending}\label{wxapppending} |
564 | ||
c805f6c3 | 565 | \func{virtual bool}{Pending}{\void} |
387a3b02 | 566 | |
cc81d32f | 567 | Returns true if unprocessed events are in the window system event queue. |
387a3b02 JS |
568 | |
569 | \wxheading{See also} | |
570 | ||
571 | \helpref{wxApp::Dispatch}{wxappdispatch} | |
572 | ||
4c39aa3a | 573 | |
a660d684 KB |
574 | \membersection{wxApp::SendIdleEvents}\label{wxappsendidleevents} |
575 | ||
dfcb9d7c | 576 | \func{bool}{SendIdleEvents}{\param{wxWindow*}{ win}, \param{wxIdleEvent\& }{event}} |
a660d684 KB |
577 | |
578 | Sends idle events to a window and its children. | |
579 | ||
fc2171bd | 580 | Please note that this function is internal to wxWidgets and shouldn't be used |
dfcb9d7c VZ |
581 | by user code. |
582 | ||
a660d684 KB |
583 | \wxheading{Remarks} |
584 | ||
585 | These functions poll the top-level windows, and their children, for idle event processing. | |
cc81d32f | 586 | If true is returned, more OnIdle processing is requested by one or more window. |
a660d684 KB |
587 | |
588 | \wxheading{See also} | |
589 | ||
4d5a0f67 | 590 | \helpref{wxIdleEvent}{wxidleevent} |
a660d684 | 591 | |
4c39aa3a | 592 | |
a660d684 KB |
593 | \membersection{wxApp::SetAppName}\label{wxappsetappname} |
594 | ||
595 | \func{void}{SetAppName}{\param{const wxString\& }{name}} | |
596 | ||
597 | Sets the name of the application. The name may be used in dialogs | |
598 | (for example by the document/view framework). A default name is set by | |
fc2171bd | 599 | wxWidgets. |
a660d684 KB |
600 | |
601 | \wxheading{See also} | |
602 | ||
603 | \helpref{wxApp::GetAppName}{wxappgetappname} | |
604 | ||
4c39aa3a | 605 | |
a660d684 KB |
606 | \membersection{wxApp::SetAuto3D}\label{wxappsetauto3d} |
607 | ||
608 | \func{void}{SetAuto3D}{\param{const bool}{ auto3D}} | |
609 | ||
610 | Switches automatic 3D controls on or off. | |
611 | ||
612 | \wxheading{Parameters} | |
613 | ||
cc81d32f VS |
614 | \docparam{auto3D}{If true, all controls will be created with 3D appearances unless |
615 | overridden for a control or dialog. The default is true} | |
a660d684 KB |
616 | |
617 | \wxheading{Remarks} | |
618 | ||
619 | This has an effect on Windows only. | |
620 | ||
621 | \wxheading{See also} | |
622 | ||
623 | \helpref{wxApp::GetAuto3D}{wxappgetauto3d} | |
624 | ||
4c39aa3a | 625 | |
a660d684 KB |
626 | \membersection{wxApp::SetClassName}\label{wxappsetclassname} |
627 | ||
628 | \func{void}{SetClassName}{\param{const wxString\& }{name}} | |
629 | ||
630 | Sets the class name of the application. This may be used in a platform specific | |
631 | manner to refer to the application. | |
632 | ||
633 | \wxheading{See also} | |
634 | ||
635 | \helpref{wxApp::GetClassName}{wxappgetclassname} | |
636 | ||
4c39aa3a | 637 | |
f59d80ca | 638 | \membersection{wxApp::SetExitOnFrameDelete}\label{wxappsetexitonframedelete} |
a660d684 | 639 | |
f59d80ca | 640 | \func{void}{SetExitOnFrameDelete}{\param{bool}{ flag}} |
a660d684 KB |
641 | |
642 | Allows the programmer to specify whether the application will exit when the | |
643 | top-level frame is deleted. | |
644 | ||
645 | \wxheading{Parameters} | |
646 | ||
cc81d32f VS |
647 | \docparam{flag}{If true (the default), the application will exit when the top-level frame is |
648 | deleted. If false, the application will continue to run.} | |
a660d684 | 649 | |
1cbee0b4 VZ |
650 | \wxheading{See also} |
651 | ||
652 | \helpref{wxApp::GetExitOnFrameDelete}{wxappgetexitonframedelete},\\ | |
653 | \helpref{wxApp shutdown overview}{wxappshutdownoverview} | |
654 | ||
4c39aa3a | 655 | |
a660d684 KB |
656 | \membersection{wxApp::SetTopWindow}\label{wxappsettopwindow} |
657 | ||
658 | \func{void}{SetTopWindow}{\param{wxWindow* }{window}} | |
659 | ||
2a47d3c1 | 660 | Sets the `top' window. You can call this from within \helpref{wxApp::OnInit}{wxapponinit} to |
fc2171bd | 661 | let wxWidgets know which is the main window. You don't have to set the top window; |
f6bcfd97 | 662 | it is only a convenience so that (for example) certain dialogs without parents can use a |
2a47d3c1 | 663 | specific window as the top window. If no top window is specified by the application, |
fc2171bd | 664 | wxWidgets just uses the first frame or dialog in its top-level window list, when it |
2a47d3c1 | 665 | needs to use the top window. |
a660d684 KB |
666 | |
667 | \wxheading{Parameters} | |
668 | ||
669 | \docparam{window}{The new top window.} | |
670 | ||
671 | \wxheading{See also} | |
672 | ||
673 | \helpref{wxApp::GetTopWindow}{wxappgettopwindow}, \helpref{wxApp::OnInit}{wxapponinit} | |
674 | ||
2aa59ef4 | 675 | |
4c39aa3a | 676 | |
2aa59ef4 VS |
677 | \membersection{wxApp::SetVendorName}\label{wxappsetvendorname} |
678 | ||
679 | \func{void}{SetVendorName}{\param{const wxString\& }{name}} | |
680 | ||
681 | Sets the name of application's vendor. The name will be used | |
682 | in registry access. A default name is set by | |
fc2171bd | 683 | wxWidgets. |
2aa59ef4 VS |
684 | |
685 | \wxheading{See also} | |
686 | ||
687 | \helpref{wxApp::GetVendorName}{wxappgetvendorname} | |
688 | ||
4c39aa3a | 689 | |
8480b297 RR |
690 | \membersection{wxApp::SetUseBestVisual}\label{wxappsetusebestvisual} |
691 | ||
692 | \func{void}{SetUseBestVisual}{\param{bool}{ flag}} | |
693 | ||
694 | Allows the programmer to specify whether the application will use the best visual | |
103aab26 RR |
695 | on systems that support several visual on the same display. This is typically the |
696 | case under Solaris and IRIX, where the default visual is only 8-bit whereas certain | |
2edb0bde | 697 | applications are supposed to run in TrueColour mode. |
8480b297 | 698 | |
fa482912 | 699 | Note that this function has to be called in the constructor of the {\tt wxApp} |
8480b297 RR |
700 | instance and won't have any effect when called later on. |
701 | ||
702 | This function currently only has effect under GTK. | |
703 | ||
704 | \wxheading{Parameters} | |
705 | ||
cc81d32f | 706 | \docparam{flag}{If true, the app will use the best visual.} |
e06b9569 | 707 | |
4c39aa3a VZ |
708 | |
709 | \membersection{wxApp::HandleEvent}\label{wxapphandleevent} | |
710 | ||
711 | \constfunc{virtual void}{HandleEvent}{\param{wxEvtHandler}{ *handler}, \param{wxEventFunction}{ func}, \param{wxEvent\& }{event}} | |
712 | ||
713 | This function simply invokes the given method \arg{func} of the specified | |
714 | event handler \arg{handler} with the \arg{event} as parameter. It exists solely | |
715 | to allow to catch the C++ exceptions which could be thrown by all event | |
716 | handlers in the application in one place: if you want to do this, override this | |
717 | function in your wxApp-derived class and add try/catch clause(s) to it. | |
718 | ||
719 | ||
5638d705 | 720 | \membersection{wxApp::Yield}\label{wxappyield} |
8461e4c2 | 721 | |
cc81d32f | 722 | \func{bool}{Yield}{\param{bool}{ onlyIfNeeded = false}} |
8461e4c2 VZ |
723 | |
724 | Yields control to pending messages in the windowing system. This can be useful, for example, when a | |
725 | time-consuming process writes to a text window. Without an occasional | |
726 | yield, the text window will not be updated properly, and on systems with | |
727 | cooperative multitasking, such as Windows 3.1 other processes will not respond. | |
728 | ||
729 | Caution should be exercised, however, since yielding may allow the | |
730 | user to perform actions which are not compatible with the current task. | |
731 | Disabling menu items or whole menus during processing can avoid unwanted | |
732 | reentrance of code: see \helpref{::wxSafeYield}{wxsafeyield} for a better | |
733 | function. | |
734 | ||
735 | Note that Yield() will not flush the message logs. This is intentional as | |
736 | calling Yield() is usually done to quickly update the screen and popping up a | |
737 | message box dialog may be undesirable. If you do wish to flush the log | |
738 | messages immediately (otherwise it will be done during the next idle loop | |
739 | iteration), call \helpref{wxLog::FlushActive}{wxlogflushactive}. | |
740 | ||
741 | Calling Yield() recursively is normally an error and an assert failure is | |
742 | raised in debug build if such situation is detected. However if the the | |
cc81d32f VS |
743 | {\it onlyIfNeeded} parameter is {\tt true}, the method will just silently |
744 | return {\tt false} instead. | |
f010ad48 | 745 |