added Unicode-friendly wxSTRINGIZE_T()
[wxWidgets.git] / docs / latex / wx / function.tex
1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 %% Name: function.tex
3 %% Purpose: Functions and macros
4 %% Author: wxWidgets Team
5 %% Modified by:
6 %% Created:
7 %% RCS-ID: $Id$
8 %% Copyright: (c) wxWidgets Team
9 %% License: wxWindows license
10 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11
12 \chapter{Functions}\label{functions}
13 \setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
14 \setfooter{\thepage}{}{}{}{}{\thepage}
15
16 The functions and macros defined in wxWidgets are described here: you can
17 either look up a function using the alphabetical listing of them or find it in
18 the corresponding topic.
19
20 \section{Alphabetical functions and macros list}\label{functionsalphabetically}
21
22 \helpref{CLASSINFO}{classinfo}\\
23 \helpref{copystring}{copystring}\\
24 \helpref{DECLARE\_ABSTRACT\_CLASS}{declareabstractclass}\\
25 \helpref{DECLARE\_APP}{declareapp}\\
26 \helpref{DECLARE\_CLASS}{declareclass}\\
27 \helpref{DECLARE\_DYNAMIC\_CLASS}{declaredynamicclass}\\
28 \helpref{IMPLEMENT\_ABSTRACT\_CLASS2}{implementabstractclass2}\\
29 \helpref{IMPLEMENT\_ABSTRACT\_CLASS}{implementabstractclass}\\
30 \helpref{IMPLEMENT\_APP}{implementapp}\\
31 \helpref{IMPLEMENT\_CLASS2}{implementclass2}\\
32 \helpref{IMPLEMENT\_CLASS}{implementclass}\\
33 \helpref{IMPLEMENT\_DYNAMIC\_CLASS2}{implementdynamicclass2}\\
34 \helpref{IMPLEMENT\_DYNAMIC\_CLASS}{implementdynamicclass}\\
35 \helpref{wxASSERT}{wxassert}\\
36 \helpref{wxASSERT\_MIN\_BITSIZE}{wxassertminbitsize}\\
37 \helpref{wxASSERT\_MSG}{wxassertmsg}\\
38 \helpref{wxBeginBusyCursor}{wxbeginbusycursor}\\
39 \helpref{wxBell}{wxbell}\\
40 \helpref{wxBITMAP}{wxbitmapmacro}\\
41 \helpref{wxCHANGE\_UMASK}{wxchangeumask}\\
42 \helpref{wxCHECK}{wxcheck}\\
43 \helpref{wxCHECK2\_MSG}{wxcheck2msg}\\
44 \helpref{wxCHECK2}{wxcheck2}\\
45 \helpref{wxCHECK\_GCC\_VERSION}{wxcheckgccversion}\\
46 \helpref{wxCHECK\_MSG}{wxcheckmsg}\\
47 \helpref{wxCHECK\_RET}{wxcheckret}\\
48 \helpref{wxCHECK\_VERSION}{wxcheckversion}\\
49 \helpref{wxCHECK\_VERSION\_FULL}{wxcheckversionfull}\\
50 \helpref{wxCHECK\_W32API\_VERSION}{wxcheckw32apiversion}\\
51 \helpref{wxClientDisplayRect}{wxclientdisplayrect}\\
52 \helpref{wxClipboardOpen}{functionwxclipboardopen}\\
53 \helpref{wxCloseClipboard}{wxcloseclipboard}\\
54 \helpref{wxColourDisplay}{wxcolourdisplay}\\
55 \helpref{wxCOMPILE\_TIME\_ASSERT}{wxcompiletimeassert}\\
56 \helpref{wxCOMPILE\_TIME\_ASSERT2}{wxcompiletimeassert2}\\
57 \helpref{wxCONCAT}{wxconcat}\\
58 \helpref{wxConcatFiles}{wxconcatfiles}\\
59 \helpref{wxConstCast}{wxconstcast}\\
60 \helpref{wxCopyFile}{wxcopyfile}\\
61 \helpref{wxCreateDynamicObject}{wxcreatedynamicobject}\\
62 \helpref{wxCreateFileTipProvider}{wxcreatefiletipprovider}\\
63 \helpref{wxCRIT\_SECT\_DECLARE}{wxcritsectdeclare}\\
64 \helpref{wxCRIT\_SECT\_DECLARE\_MEMBER}{wxcritsectdeclaremember}\\
65 \helpref{wxCRIT\_SECT\_LOCKER}{wxcritsectlocker}\\
66 \helpref{wxCRITICAL\_SECTION}{wxcriticalsectionmacro}\\ % wxcs already taken!
67 \helpref{wxDDECleanUp}{wxddecleanup}\\
68 \helpref{wxDDEInitialize}{wxddeinitialize}\\
69 \helpref{wxDROP\_ICON}{wxdropicon}\\
70 \helpref{wxDebugMsg}{wxdebugmsg}\\
71 \helpref{WXDEBUG\_NEW}{debugnew}\\
72 \helpref{wxDirExists}{functionwxdirexists}\\
73 \helpref{wxDirSelector}{wxdirselector}\\
74 \helpref{wxDisplayDepth}{wxdisplaydepth}\\
75 \helpref{wxDisplaySize}{wxdisplaysize}\\
76 \helpref{wxDisplaySizeMM}{wxdisplaysizemm}\\
77 \helpref{wxDos2UnixFilename}{wxdos2unixfilename}\\
78 \helpref{wxDynamicCastThis}{wxdynamiccastthis}\\
79 \helpref{wxDynamicCast}{wxdynamiccast}\\
80 \helpref{wxDYNLIB\_FUNCTION}{wxdynlibfunction}\\
81 \helpref{wxEmptyClipboard}{wxemptyclipboard}\\
82 \helpref{wxEnableTopLevelWindows}{wxenabletoplevelwindows}\\
83 \helpref{wxEndBusyCursor}{wxendbusycursor}\\
84 \helpref{wxENTER\_CRIT\_SECT}{wxentercritsect}\\
85 \helpref{wxEntry}{wxentry}\\
86 \helpref{wxEnumClipboardFormats}{wxenumclipboardformats}\\
87 \helpref{wxError}{wxerror}\\
88 \helpref{wxExecute}{wxexecute}\\
89 \helpref{wxExit}{wxexit}\\
90 \helpref{wxEXPLICIT}{wxexplicit}\\
91 \helpref{wxFAIL\_MSG}{wxfailmsg}\\
92 \helpref{wxFAIL}{wxfail}\\
93 \helpref{wxFatalError}{wxfatalerror}\\
94 \helpref{wxFileExists}{functionwxfileexists}\\
95 \helpref{wxFileModificationTime}{wxfilemodificationtime}\\
96 \helpref{wxFileNameFromPath}{wxfilenamefrompath}\\
97 \helpref{wxFileSelector}{wxfileselector}\\
98 \helpref{wxFindFirstFile}{wxfindfirstfile}\\
99 \helpref{wxFindMenuItemId}{wxfindmenuitemid}\\
100 \helpref{wxFindNextFile}{wxfindnextfile}\\
101 \helpref{wxFindWindowAtPointer}{wxfindwindowatpointer}\\
102 \helpref{wxFindWindowAtPoint}{wxfindwindowatpoint}\\
103 \helpref{wxFindWindowByLabel}{wxfindwindowbylabel}\\
104 \helpref{wxFindWindowByName}{wxfindwindowbyname}\\
105 \helpref{wxFinite}{wxfinite}\\
106 \helpref{wxGetActiveWindow}{wxgetactivewindow}\\
107 \helpref{wxGetApp}{wxgetapp}\\
108 \helpref{wxGetBatteryState}{wxgetbatterystate}\\
109 \helpref{wxGetClipboardData}{wxgetclipboarddata}\\
110 \helpref{wxGetClipboardFormatName}{wxgetclipboardformatname}\\
111 \helpref{wxGetColourFromUser}{wxgetcolourfromuser}\\
112 \helpref{wxGetCwd}{wxgetcwd}\\
113 \helpref{wxGetDiskSpace}{wxgetdiskspace}\\
114 \helpref{wxGetDisplayName}{wxgetdisplayname}\\
115 \helpref{wxGetDisplaySize}{wxdisplaysize}\\
116 \helpref{wxGetDisplaySizeMM}{wxdisplaysizemm}\\
117 \helpref{wxGetElapsedTime}{wxgetelapsedtime}\\
118 \helpref{wxGetEmailAddress}{wxgetemailaddress}\\
119 \helpref{wxGetEnv}{wxgetenv}\\
120 \helpref{wxGetFileKind}{wxgetfilekind}\\
121 \helpref{wxGetFontFromUser}{wxgetfontfromuser}\\
122 \helpref{wxGetFreeMemory}{wxgetfreememory}\\
123 \helpref{wxGetFullHostName}{wxgetfullhostname}\\
124 \helpref{wxGetHomeDir}{wxgethomedir}\\
125 \helpref{wxGetHostName}{wxgethostname}\\
126 \helpref{wxGetKeyState}{wxgetkeystate}\\
127 \helpref{wxGetLocalTimeMillis}{wxgetlocaltimemillis}\\
128 \helpref{wxGetLocalTime}{wxgetlocaltime}\\
129 \helpref{wxGetMousePosition}{wxgetmouseposition}\\
130 \helpref{wxGetMouseState}{wxgetmousestate}\\
131 \helpref{wxGetMultipleChoices}{wxgetmultiplechoices}\\
132 \helpref{wxGetMultipleChoice}{wxgetmultiplechoice}\\
133 \helpref{wxGetNumberFromUser}{wxgetnumberfromuser}\\
134 \helpref{wxGetOSDirectory}{wxgetosdirectory}\\
135 \helpref{wxGetOsDescription}{wxgetosdescription}\\
136 \helpref{wxGetOsVersion}{wxgetosversion}\\
137 \helpref{wxGetPasswordFromUser}{wxgetpasswordfromuser}\\
138 \helpref{wxGetPowerType}{wxgetpowertype}\\
139 \helpref{wxGetPrinterCommand}{wxgetprintercommand}\\
140 \helpref{wxGetPrinterFile}{wxgetprinterfile}\\
141 \helpref{wxGetPrinterMode}{wxgetprintermode}\\
142 \helpref{wxGetPrinterOptions}{wxgetprinteroptions}\\
143 \helpref{wxGetPrinterOrientation}{wxgetprinterorientation}\\
144 \helpref{wxGetPrinterPreviewCommand}{wxgetprinterpreviewcommand}\\
145 \helpref{wxGetPrinterScaling}{wxgetprinterscaling}\\
146 \helpref{wxGetPrinterTranslation}{wxgetprintertranslation}\\
147 \helpref{wxGetProcessId}{wxgetprocessid}\\
148 \helpref{wxGetResource}{wxgetresource}\\
149 \helpref{wxGetSingleChoiceData}{wxgetsinglechoicedata}\\
150 \helpref{wxGetSingleChoiceIndex}{wxgetsinglechoiceindex}\\
151 \helpref{wxGetSingleChoice}{wxgetsinglechoice}\\
152 \helpref{wxGetTempFileName}{wxgettempfilename}\\
153 \helpref{wxGetTextFromUser}{wxgettextfromuser}\\
154 \helpref{wxGetTopLevelParent}{wxgettoplevelparent}\\
155 \helpref{wxGetTranslation}{wxgettranslation}\\
156 \helpref{wxGetUTCTime}{wxgetutctime}\\
157 \helpref{wxGetUserHome}{wxgetuserhome}\\
158 \helpref{wxGetUserId}{wxgetuserid}\\
159 \helpref{wxGetUserName}{wxgetusername}\\
160 \helpref{wxGetWorkingDirectory}{wxgetworkingdirectory}\\
161 \helpref{wxGetenv}{wxgetenvmacro}\\
162 \helpref{wxHandleFatalExceptions}{wxhandlefatalexceptions}\\
163 \helpref{wxICON}{wxiconmacro}\\
164 \helpref{wxINTXX\_SWAP\_ALWAYS}{intswapalways}\\
165 \helpref{wxINTXX\_SWAP\_ON\_BE}{intswaponbe}\\
166 \helpref{wxINTXX\_SWAP\_ON\_LE}{intswaponle}\\
167 \helpref{wxInitAllImageHandlers}{wxinitallimagehandlers}\\
168 \helpref{wxInitialize}{wxinitialize}\\
169 \helpref{wxIsAbsolutePath}{wxisabsolutepath}\\
170 \helpref{wxIsBusy}{wxisbusy}\\
171 \helpref{wxIsClipboardFormatAvailable}{wxisclipboardformatavailable}\\
172 \helpref{wxIsDebuggerRunning}{wxisdebuggerrunning}\\
173 \helpref{wxIsEmpty}{wxisempty}\\
174 \helpref{wxIsMainThread}{wxismainthread}\\
175 \helpref{wxIsNaN}{wxisnan}\\
176 \helpref{wxIsPlatformLittleEndian}{wxisplatformlittleendian}\\
177 \helpref{wxIsPlatform64Bit}{wxisplatform64bit}\\
178 \helpref{wxIsWild}{wxiswild}\\
179 \helpref{wxKill}{wxkill}\\
180 \helpref{wxLaunchDefaultBrowser}{wxlaunchdefaultbrowser}\\
181 \helpref{wxLEAVE\_CRIT\_SECT}{wxleavecritsect}\\
182 \helpref{wxLoadUserResource}{wxloaduserresource}\\
183 \helpref{wxLogDebug}{wxlogdebug}\\
184 \helpref{wxLogError}{wxlogerror}\\
185 \helpref{wxLogFatalError}{wxlogfatalerror}\\
186 \helpref{wxLogMessage}{wxlogmessage}\\
187 \helpref{wxLogStatus}{wxlogstatus}\\
188 \helpref{wxLogSysError}{wxlogsyserror}\\
189 \helpref{wxLogTrace}{wxlogtrace}\\
190 \helpref{wxLogVerbose}{wxlogverbose}\\
191 \helpref{wxLogWarning}{wxlogwarning}\\
192 \helpref{wxLL}{wxll}\\
193 \helpref{wxLongLongFmtSpec}{wxlonglongfmtspec}\\
194 \helpref{wxMakeMetafilePlaceable}{wxmakemetafileplaceable}\\
195 \helpref{wxMatchWild}{wxmatchwild}\\
196 \helpref{wxMessageBox}{wxmessagebox}\\
197 \helpref{wxMilliSleep}{wxmillisleep}\\
198 \helpref{wxMicroSleep}{wxmicrosleep}\\
199 \helpref{wxMkdir}{wxmkdir}\\
200 \helpref{wxMutexGuiEnter}{wxmutexguienter}\\
201 \helpref{wxMutexGuiLeave}{wxmutexguileave}\\
202 \helpref{wxNewId}{wxnewid}\\
203 \helpref{wxNow}{wxnow}\\
204 \helpref{wxOnAssert}{wxonassert}\\
205 \helpref{wxON\_BLOCK\_EXIT}{wxonblockexit}\\
206 \helpref{wxON\_BLOCK\_EXIT\_OBJ}{wxonblockexitobj}\\
207 \helpref{wxOpenClipboard}{wxopenclipboard}\\
208 \helpref{wxParseCommonDialogsFilter}{wxparsecommondialogsfilter}\\
209 \helpref{wxPathOnly}{wxpathonly}\\
210 \helpref{wxPLURAL}{wxplural}\\
211 \helpref{wxPostDelete}{wxpostdelete}\\
212 \helpref{wxPostEvent}{wxpostevent}\\
213 \helpref{wxRegisterClipboardFormat}{wxregisterclipboardformat}\\
214 \helpref{wxRegisterId}{wxregisterid}\\
215 \helpref{wxRemoveFile}{wxremovefile}\\
216 \helpref{wxRenameFile}{wxrenamefile}\\
217 \helpref{wxRmdir}{wxrmdir}\\
218 \helpref{wxSafeShowMessage}{wxsafeshowmessage}\\
219 \helpref{wxSafeYield}{wxsafeyield}\\
220 \helpref{wxSetClipboardData}{wxsetclipboarddata}\\
221 \helpref{wxSetCursor}{wxsetcursor}\\
222 \helpref{wxSetDisplayName}{wxsetdisplayname}\\
223 \helpref{wxSetEnv}{wxsetenv}\\
224 \helpref{wxSetPrinterCommand}{wxsetprintercommand}\\
225 \helpref{wxSetPrinterFile}{wxsetprinterfile}\\
226 \helpref{wxSetPrinterMode}{wxsetprintermode}\\
227 \helpref{wxSetPrinterOptions}{wxsetprinteroptions}\\
228 \helpref{wxSetPrinterOrientation}{wxsetprinterorientation}\\
229 \helpref{wxSetPrinterPreviewCommand}{wxsetprinterpreviewcommand}\\
230 \helpref{wxSetPrinterScaling}{wxsetprinterscaling}\\
231 \helpref{wxSetPrinterTranslation}{wxsetprintertranslation}\\
232 \helpref{wxSetWorkingDirectory}{wxsetworkingdirectory}\\
233 \helpref{wxShell}{wxshell}\\
234 \helpref{wxShowTip}{wxshowtip}\\
235 \helpref{wxShutdown}{wxshutdown}\\
236 \helpref{wxSleep}{wxsleep}\\
237 \helpref{wxSnprintf}{wxsnprintf}\\
238 \helpref{wxSplitPath}{wxsplitfunction}\\
239 \helpref{wxStartTimer}{wxstarttimer}\\
240 \helpref{wxStaticCast}{wxstaticcast}\\
241 \helpref{wxStrcmp}{wxstrcmp}\\
242 \helpref{wxStricmp}{wxstricmp}\\
243 \helpref{wxStringEq}{wxstringeq}\\
244 \helpref{wxStringMatch}{wxstringmatch}\\
245 \helpref{wxStringTokenize}{wxstringtokenize}\\
246 \helpref{wxStripMenuCodes}{wxstripmenucodes}\\
247 \helpref{wxStrlen}{wxstrlen}\\
248 \helpref{wxSTRINGIZE}{wxstringize}\\
249 \helpref{wxSTRINGIZE\_T}{wxstringizet}\\
250 \helpref{wxSUPPRESS\_GCC\_PRIVATE\_DTOR\_WARNING}{wxsuppressgccprivatedtorwarning}\\
251 \helpref{wxSysErrorCode}{wxsyserrorcode}\\
252 \helpref{wxSysErrorMsg}{wxsyserrormsg}\\
253 \helpref{wxT}{wxt}\\
254 \helpref{wxTrace}{wxtrace}\\
255 \helpref{WXTRACE}{trace}\\
256 \helpref{wxTraceLevel}{wxtracelevel}\\
257 \helpref{WXTRACELEVEL}{tracelevel}\\
258 \helpref{wxTransferFileToStream}{wxtransferfiletostream}\\
259 \helpref{wxTransferStreamToFile}{wxtransferstreamtofile}\\
260 \helpref{wxTrap}{wxtrap}\\
261 \helpref{wxULL}{wxull}\\
262 \helpref{wxUninitialize}{wxuninitialize}\\
263 \helpref{wxUnix2DosFilename}{wxunix2dosfilename}\\
264 \helpref{wxUnsetEnv}{wxunsetenv}\\
265 \helpref{wxUsleep}{wxusleep}\\
266 \helpref{wxVaCopy}{wxvacopy}\\
267 \helpref{wxVsnprintf}{wxvsnprintf}\\
268 \helpref{wxWakeUpIdle}{wxwakeupidle}\\
269 \helpref{wxWriteResource}{wxwriteresource}\\
270 \helpref{wxYield}{wxyield}\\
271 \helpref{wx\_const\_cast}{wxconstcastraw}\\
272 \helpref{wx\_reinterpret\_cast}{wxreinterpretcastraw}\\
273 \helpref{wx\_static\_cast}{wxstaticcastraw}\\
274 \helpref{wx\_truncate\_cast}{wxtruncatecast}\\
275 \helpref{\_}{underscore}\\
276 \helpref{\_T}{underscoret}
277 \helpref{\_\_WXFUNCTION\_\_}{wxfunction}
278
279
280
281 \section{Version macros}\label{versionfunctions}
282
283 The following constants are defined in wxWidgets:
284
285 \begin{itemize}\itemsep=0pt
286 \item {\tt wxMAJOR\_VERSION} is the major version of wxWidgets
287 \item {\tt wxMINOR\_VERSION} is the minor version of wxWidgets
288 \item {\tt wxRELEASE\_NUMBER} is the release number
289 \item {\tt wxSUBRELEASE\_NUMBER} is the subrelease number which is $0$ for all
290 official releases
291 \end{itemize}
292
293 For example, the values or these constants for wxWidgets 2.1.15 are 2, 1 and
294 15.
295
296 Additionally, {\tt wxVERSION\_STRING} is a user-readable string containing
297 the full wxWidgets version and {\tt wxVERSION\_NUMBER} is a combination of the
298 three version numbers above: for 2.1.15, it is 2115 and it is 2200 for
299 wxWidgets 2.2.
300
301 The subrelease number is only used for the sources in between official releases
302 and so normally is not useful.
303
304 \wxheading{Include files}
305
306 <wx/version.h> or <wx/defs.h>
307
308
309 \membersection{wxCHECK\_GCC\_VERSION}\label{wxcheckgccversion}
310
311 \func{bool}{wxCHECK\_GCC\_VERSION}{\param{}{major, minor, release}}
312
313 Returns $1$ if the compiler being used to compile the code is GNU C++
314 compiler (g++) version major.minor.release or greater. Otherwise, and also if
315 the compiler is not GNU C++ at all, returns $0$.
316
317
318 \membersection{wxCHECK\_VERSION}\label{wxcheckversion}
319
320 \func{bool}{wxCHECK\_VERSION}{\param{}{major, minor, release}}
321
322 This is a macro which evaluates to true if the current wxWidgets version is at
323 least major.minor.release.
324
325 For example, to test if the program is compiled with wxWidgets 2.2 or higher,
326 the following can be done:
327
328 \begin{verbatim}
329 wxString s;
330 #if wxCHECK_VERSION(2, 2, 0)
331 if ( s.StartsWith("foo") )
332 #else // replacement code for old version
333 if ( strncmp(s, "foo", 3) == 0 )
334 #endif
335 {
336 ...
337 }
338 \end{verbatim}
339
340
341 \membersection{wxCHECK\_VERSION\_FULL}\label{wxcheckversionfull}
342
343 \func{bool}{wxCHECK\_VERSION\_FULL}{\param{}{major, minor, release, subrel}}
344
345 Same as \helpref{wxCHECK\_VERSION}{wxcheckversion} but also checks that
346 \texttt{wxSUBRELEASE\_NUMBER} is at least \arg{subrel}.
347
348
349 \membersection{wxCHECK\_W32API\_VERSION}\label{wxcheckw32apiversion}
350
351 \func{bool}{wxCHECK\_GCC\_VERSION}{\param{}{major, minor, release}}
352
353 Returns $1$ if the version of w32api headers used is major.minor.release or
354 greater. Otherwise, and also if we are not compiling with mingw32/cygwin under
355 Win32 at all, returns $0$.
356
357
358
359 \section{Application initialization and termination}\label{appinifunctions}
360
361 The functions in this section are used on application startup/shutdown and also
362 to control the behaviour of the main event loop of the GUI programs.
363
364
365 \membersection{::wxEntry}\label{wxentry}
366
367 This initializes wxWidgets in a platform-dependent way. Use this if you
368 are not using the default wxWidgets entry code (e.g. main or WinMain). For example,
369 you can initialize wxWidgets from an Microsoft Foundation Classes application using
370 this function.
371
372 \func{void}{wxEntry}{\param{HANDLE}{ hInstance}, \param{HANDLE}{ hPrevInstance},
373 \param{const wxString\& }{commandLine}, \param{int}{ cmdShow}, \param{bool}{ enterLoop = true}}
374
375 wxWidgets initialization under Windows (non-DLL). If {\it enterLoop} is false, the
376 function will return immediately after calling wxApp::OnInit. Otherwise, the wxWidgets
377 message loop will be entered.
378
379 \func{void}{wxEntry}{\param{HANDLE}{ hInstance}, \param{HANDLE}{ hPrevInstance},
380 \param{WORD}{ wDataSegment}, \param{WORD}{ wHeapSize}, \param{const wxString\& }{ commandLine}}
381
382 wxWidgets initialization under Windows (for applications constructed as a DLL).
383
384 \func{int}{wxEntry}{\param{int}{ argc}, \param{const wxString\& *}{argv}}
385
386 wxWidgets initialization under Unix.
387
388 \wxheading{Remarks}
389
390 To clean up wxWidgets, call wxApp::OnExit followed by the static function
391 wxApp::CleanUp. For example, if exiting from an MFC application that also uses wxWidgets:
392
393 \begin{verbatim}
394 int CTheApp::ExitInstance()
395 {
396 // OnExit isn't called by CleanUp so must be called explicitly.
397 wxTheApp->OnExit();
398 wxApp::CleanUp();
399
400 return CWinApp::ExitInstance();
401 }
402 \end{verbatim}
403
404 \wxheading{Include files}
405
406 <wx/app.h>
407
408
409
410 \membersection{::wxGetApp}\label{wxgetapp}
411
412 \func{wxAppDerivedClass\&}{wxGetApp}{\void}
413
414 This function doesn't exist in wxWidgets but it is created by using
415 the \helpref{IMPLEMENT\_APP}{implementapp} macro. Thus, before using it
416 anywhere but in the same module where this macro is used, you must make it
417 available using \helpref{DECLARE\_APP}{declareapp}.
418
419 The advantage of using this function compared to directly using the global
420 wxTheApp pointer is that the latter is of type {\tt wxApp *} and so wouldn't
421 allow you to access the functions specific to your application class but not
422 present in wxApp while wxGetApp() returns the object of the right type.
423
424
425 \membersection{::wxHandleFatalExceptions}\label{wxhandlefatalexceptions}
426
427 \func{bool}{wxHandleFatalExceptions}{\param{bool}{ doIt = true}}
428
429 If {\it doIt} is true, the fatal exceptions (also known as general protection
430 faults under Windows or segmentation violations in the Unix world) will be
431 caught and passed to \helpref{wxApp::OnFatalException}{wxapponfatalexception}.
432 By default, i.e. before this function is called, they will be handled in the
433 normal way which usually just means that the application will be terminated.
434 Calling wxHandleFatalExceptions() with {\it doIt} equal to false will restore
435 this default behaviour.
436
437
438 \membersection{::wxInitAllImageHandlers}\label{wxinitallimagehandlers}
439
440 \func{void}{wxInitAllImageHandlers}{\void}
441
442 Initializes all available image handlers. For a list of available handlers,
443 see \helpref{wxImage}{wximage}.
444
445 \wxheading{See also}
446
447 \helpref{wxImage}{wximage}, \helpref{wxImageHandler}{wximagehandler}
448
449 \wxheading{Include files}
450
451 <wx/image.h>
452
453
454 \membersection{::wxInitialize}\label{wxinitialize}
455
456 \func{bool}{wxInitialize}{\void}
457
458 This function is used in wxBase only and only if you don't create
459 \helpref{wxApp}{wxapp} object at all. In this case you must call it from your
460 {\tt main()} function before calling any other wxWidgets functions.
461
462 If the function returns \false the initialization could not be performed,
463 in this case the library cannot be used and
464 \helpref{wxUninitialize}{wxuninitialize} shouldn't be called neither.
465
466 This function may be called several times but
467 \helpref{wxUninitialize}{wxuninitialize} must be called for each successful
468 call to this function.
469
470 \wxheading{Include files}
471
472 <wx/app.h>
473
474
475 \membersection{::wxSafeYield}\label{wxsafeyield}
476
477 \func{bool}{wxSafeYield}{\param{wxWindow*}{ win = NULL}, \param{bool}{
478 onlyIfNeeded = false}}
479
480 This function is similar to wxYield, except that it disables the user input to
481 all program windows before calling wxYield and re-enables it again
482 afterwards. If {\it win} is not NULL, this window will remain enabled,
483 allowing the implementation of some limited user interaction.
484
485 Returns the result of the call to \helpref{::wxYield}{wxyield}.
486
487 \wxheading{Include files}
488
489 <wx/utils.h>
490
491
492 \membersection{::wxUninitialize}\label{wxuninitialize}
493
494 \func{void}{wxUninitialize}{\void}
495
496 This function is for use in console (wxBase) programs only. It must be called
497 once for each previous successful call to \helpref{wxInitialize}{wxinitialize}.
498
499 \wxheading{Include files}
500
501 <wx/app.h>
502
503
504 \membersection{::wxYield}\label{wxyield}
505
506 \func{bool}{wxYield}{\void}
507
508 Calls \helpref{wxApp::Yield}{wxappyield}.
509
510 This function is kept only for backwards compatibility. Please use
511 the \helpref{wxApp::Yield}{wxappyield} method instead in any new code.
512
513 \wxheading{Include files}
514
515 <wx/app.h> or <wx/utils.h>
516
517
518 \membersection{::wxWakeUpIdle}\label{wxwakeupidle}
519
520 \func{void}{wxWakeUpIdle}{\void}
521
522 This functions wakes up the (internal and platform dependent) idle system, i.e. it
523 will force the system to send an idle event even if the system currently {\it is}
524 idle and thus would not send any idle event until after some other event would get
525 sent. This is also useful for sending events between two threads and is used by
526 the corresponding functions \helpref{::wxPostEvent}{wxpostevent} and
527 \helpref{wxEvtHandler::AddPendingEvent}{wxevthandleraddpendingevent}.
528
529 \wxheading{Include files}
530
531 <wx/app.h>
532
533
534
535 \section{Process control functions}\label{processfunctions}
536
537 The functions in this section are used to launch or terminate the other
538 processes.
539
540
541 \membersection{::wxExecute}\label{wxexecute}
542
543 \func{long}{wxExecute}{\param{const wxString\& }{command}, \param{int }{sync = wxEXEC\_ASYNC}, \param{wxProcess *}{callback = NULL}}
544
545 \perlnote{In wxPerl this function is called \texttt{Wx::ExecuteCommand}}
546
547 \func{long}{wxExecute}{\param{char **}{argv}, \param{int }{flags = wxEXEC\_ASYNC}, \param{wxProcess *}{callback = NULL}}
548
549 \perlnote{In wxPerl this function is called \texttt{Wx::ExecuteArgs}}
550
551 \func{long}{wxExecute}{\param{const wxString\& }{command}, \param{wxArrayString\& }{output}, \param{int }{flags = 0}}
552
553 \perlnote{In wxPerl this function is called \texttt{Wx::ExecuteStdout} and it
554 only takes the {\tt command} argument,
555 and returns a 2-element list {\tt ( status, output )}, where {\tt output} is
556 an array reference.}
557
558 \func{long}{wxExecute}{\param{const wxString\& }{command}, \param{wxArrayString\& }{output}, \param{wxArrayString\& }{errors}, \param{int }{flags = 0}}
559
560 \perlnote{In wxPerl this function is called \texttt{Wx::ExecuteStdoutStderr}
561 and it only takes the {\tt command} argument,
562 and returns a 3-element list {\tt ( status, output, errors )}, where
563 {\tt output} and {\tt errors} are array references.}
564
565 Executes another program in Unix or Windows.
566
567 The first form takes a command string, such as {\tt "emacs file.txt"}.
568
569 The second form takes an array of values: a command, any number of
570 arguments, terminated by NULL.
571
572 The semantics of the third and fourth versions is different from the first two
573 and is described in more details below.
574
575 If {\it flags} parameter contains {\tt wxEXEC\_ASYNC} flag (the default), flow
576 of control immediately returns. If it contains {\tt wxEXEC\_SYNC}, the current
577 application waits until the other program has terminated.
578
579 In the case of synchronous execution, the return value is the exit code of
580 the process (which terminates by the moment the function returns) and will be
581 $-1$ if the process couldn't be started and typically 0 if the process
582 terminated successfully. Also, while waiting for the process to
583 terminate, wxExecute will call \helpref{wxYield}{wxyield}. Because of this, by
584 default this function disables all application windows to avoid unexpected
585 reentrancies which could result from the users interaction with the program
586 while the child process is running. If you are sure that it is safe to not
587 disable the program windows, you may pass \texttt{wxEXEC\_NODISABLE} flag to
588 prevent this automatic disabling from happening.
589
590 For asynchronous execution, however, the return value is the process id and
591 zero value indicates that the command could not be executed. As an added
592 complication, the return value of $-1$ in this case indicates that we didn't
593 launch a new process, but connected to the running one (this can only happen in
594 case of using DDE under Windows for command execution). In particular, in this,
595 and only this, case the calling code will not get the notification about
596 process termination.
597
598 If callback isn't NULL and if execution is asynchronous,
599 \helpref{wxProcess::OnTerminate}{wxprocessonterminate} will be called when
600 the process finishes. Specifying this parameter also allows you to redirect the
601 standard input and/or output of the process being launched by calling
602 \helpref{Redirect}{wxprocessredirect}. If the child process IO is redirected,
603 under Windows the process window is not shown by default (this avoids having to
604 flush an unnecessary console for the processes which don't create any windows
605 anyhow) but a {\tt wxEXEC\_NOHIDE} flag can be used to prevent this from
606 happening, i.e. with this flag the child process window will be shown normally.
607
608 Under Unix the flag {\tt wxEXEC\_MAKE\_GROUP\_LEADER} may be used to ensure
609 that the new process is a group leader (this will create a new session if
610 needed). Calling \helpref{wxKill}{wxkill} passing wxKILL\_CHILDREN will
611 kill this process as well as all of its children (except those which have
612 started their own session).
613
614 Finally, you may use the third overloaded version of this function to execute
615 a process (always synchronously, the contents of \arg{flags} is or'd with
616 \texttt{wxEXEC\_SYNC}) and capture its output in the array \arg{output}. The
617 fourth version adds the possibility to additionally capture the messages from
618 standard error output in the \arg{errors} array.
619
620 {\bf NB:} Currently wxExecute() can only be used from the main thread, calling
621 this function from another thread will result in an assert failure in debug
622 build and won't work.
623
624 \wxheading{See also}
625
626 \helpref{wxShell}{wxshell}, \helpref{wxProcess}{wxprocess}, \helpref{Exec sample}{sampleexec}.
627
628 \wxheading{Parameters}
629
630 \docparam{command}{The command to execute and any parameters to pass to it as a
631 single string.}
632
633 \docparam{argv}{The command to execute should be the first element of this
634 array, any additional ones are the command parameters and the array must be
635 terminated with a NULL pointer.}
636
637 \docparam{flags}{Combination of bit masks {\tt wxEXEC\_ASYNC},\rtfsp
638 {\tt wxEXEC\_SYNC} and {\tt wxEXEC\_NOHIDE}}
639
640 \docparam{callback}{An optional pointer to \helpref{wxProcess}{wxprocess}}
641
642 \wxheading{Include files}
643
644 <wx/utils.h>
645
646
647 \membersection{::wxExit}\label{wxexit}
648
649 \func{void}{wxExit}{\void}
650
651 Exits application after calling \helpref{wxApp::OnExit}{wxapponexit}.
652 Should only be used in an emergency: normally the top-level frame
653 should be deleted (after deleting all other frames) to terminate the
654 application. See \helpref{wxCloseEvent}{wxcloseevent} and \helpref{wxApp}{wxapp}.
655
656 \wxheading{Include files}
657
658 <wx/app.h>
659
660
661 \membersection{::wxKill}\label{wxkill}
662
663 \func{int}{wxKill}{\param{long}{ pid}, \param{int}{ sig = wxSIGTERM}, \param{wxKillError }{*rc = NULL}, \param{int }{flags = 0}}
664
665 Equivalent to the Unix kill function: send the given signal {\it sig} to the
666 process with PID {\it pid}. The valid signal values are
667
668 \begin{verbatim}
669 enum wxSignal
670 {
671 wxSIGNONE = 0, // verify if the process exists under Unix
672 wxSIGHUP,
673 wxSIGINT,
674 wxSIGQUIT,
675 wxSIGILL,
676 wxSIGTRAP,
677 wxSIGABRT,
678 wxSIGEMT,
679 wxSIGFPE,
680 wxSIGKILL, // forcefully kill, dangerous!
681 wxSIGBUS,
682 wxSIGSEGV,
683 wxSIGSYS,
684 wxSIGPIPE,
685 wxSIGALRM,
686 wxSIGTERM // terminate the process gently
687 };
688 \end{verbatim}
689
690 {\tt wxSIGNONE}, {\tt wxSIGKILL} and {\tt wxSIGTERM} have the same meaning
691 under both Unix and Windows but all the other signals are equivalent to
692 {\tt wxSIGTERM} under Windows.
693
694 Returns 0 on success, -1 on failure. If {\it rc} parameter is not NULL, it will
695 be filled with an element of {\tt wxKillError} enum:
696
697 \begin{verbatim}
698 enum wxKillError
699 {
700 wxKILL_OK, // no error
701 wxKILL_BAD_SIGNAL, // no such signal
702 wxKILL_ACCESS_DENIED, // permission denied
703 wxKILL_NO_PROCESS, // no such process
704 wxKILL_ERROR // another, unspecified error
705 };
706 \end{verbatim}
707
708 The {\it flags} parameter can be wxKILL\_NOCHILDREN (the default),
709 or wxKILL\_CHILDREN, in which case the child processes of this
710 process will be killed too. Note that under Unix, for wxKILL\_CHILDREN
711 to work you should have created the process by passing wxEXEC\_MAKE\_GROUP\_LEADER
712 to wxExecute.
713
714 \wxheading{See also}
715
716 \helpref{wxProcess::Kill}{wxprocesskill},\rtfsp
717 \helpref{wxProcess::Exists}{wxprocessexists},\rtfsp
718 \helpref{Exec sample}{sampleexec}
719
720 \wxheading{Include files}
721
722 <wx/utils.h>
723
724
725 \membersection{::wxGetProcessId}\label{wxgetprocessid}
726
727 \func{unsigned long}{wxGetProcessId}{\void}
728
729 Returns the number uniquely identifying the current process in the system.
730
731 If an error occurs, $0$ is returned.
732
733 \wxheading{Include files}
734
735 <wx/utils.h>
736
737
738 \membersection{::wxShell}\label{wxshell}
739
740 \func{bool}{wxShell}{\param{const wxString\& }{command = NULL}}
741
742 Executes a command in an interactive shell window. If no command is
743 specified, then just the shell is spawned.
744
745 See also \helpref{wxExecute}{wxexecute}, \helpref{Exec sample}{sampleexec}.
746
747 \wxheading{Include files}
748
749 <wx/utils.h>
750
751
752 \membersection{::wxShutdown}\label{wxshutdown}
753
754 \func{bool}{wxShutdown}{\param{wxShutdownFlags}{flags}}
755
756 This function shuts down or reboots the computer depending on the value of the
757 {\it flags}. Please notice that doing this requires the corresponding access
758 rights (superuser under Unix, {\tt SE\_SHUTDOWN} privilege under Windows NT)
759 and that this function is only implemented under Unix and Win32.
760
761 \wxheading{Parameters}
762
763 \docparam{flags}{Either {\tt wxSHUTDOWN\_POWEROFF} or {\tt wxSHUTDOWN\_REBOOT}}
764
765 \wxheading{Returns}
766
767 \true on success, \false if an error occurred.
768
769 \wxheading{Include files}
770
771 <wx/utils.h>
772
773
774
775 \section{Thread functions}\label{threadfunctions}
776
777 The functions and macros here mainly exist to make it writing the code which
778 may be compiled in multi thread build ({\tt wxUSE\_THREADS} $= 1$) as well as
779 in single thread configuration ({\tt wxUSE\_THREADS} $= 0$).
780
781 For example, a static variable must be protected against simultaneous access by
782 multiple threads in the former configuration but in the latter the extra
783 overhead of using the critical section is not needed. To solve this problem,
784 the \helpref{wxCRITICAL\_SECTION}{wxcriticalsectionmacro} macro may be used
785 to create and use the critical section only when needed.
786
787 \wxheading{Include files}
788
789 <wx/thread.h>
790
791 \wxheading{See also}
792
793 \helpref{wxThread}{wxthread}, \helpref{wxMutex}{wxmutex}, \helpref{Multithreading overview}{wxthreadoverview}
794
795
796
797 \membersection{wxCRIT\_SECT\_DECLARE}\label{wxcritsectdeclare}
798
799 \func{}{wxCRIT\_SECT\_DECLARE}{\param{}{cs}}
800
801 This macro declares a (static) critical section object named {\it cs} if
802 {\tt wxUSE\_THREADS} is $1$ and does nothing if it is $0$.
803
804
805
806 \membersection{wxCRIT\_SECT\_DECLARE\_MEMBER}\label{wxcritsectdeclaremember}
807
808 \func{}{wxCRIT\_SECT\_DECLARE}{\param{}{cs}}
809
810 This macro declares a critical section object named {\it cs} if
811 {\tt wxUSE\_THREADS} is $1$ and does nothing if it is $0$. As it doesn't
812 include the {\tt static} keyword (unlike
813 \helpref{wxCRIT\_SECT\_DECLARE}{wxcritsectdeclare}), it can be used to declare
814 a class or struct member which explains its name.
815
816
817
818 \membersection{wxCRIT\_SECT\_LOCKER}\label{wxcritsectlocker}
819
820 \func{}{wxCRIT\_SECT\_LOCKER}{\param{}{name}, \param{}{cs}}
821
822 This macro creates a \helpref{critical section lock}{wxcriticalsectionlocker}
823 object named {\it name} and associated with the critical section {\it cs} if
824 {\tt wxUSE\_THREADS} is $1$ and does nothing if it is $0$.
825
826
827
828 \membersection{wxCRITICAL\_SECTION}\label{wxcriticalsectionmacro}
829
830 \func{}{wxCRITICAL\_SECTION}{\param{}{name}}
831
832 This macro combines \helpref{wxCRIT\_SECT\_DECLARE}{wxcritsectdeclare} and
833 \helpref{wxCRIT\_SECT\_LOCKER}{wxcritsectlocker}: it creates a static critical
834 section object and also the lock object associated with it. Because of this, it
835 can be only used inside a function, not at global scope. For example:
836
837 \begin{verbatim}
838 int IncCount()
839 {
840 static int s_counter = 0;
841
842 wxCRITICAL_SECTION(counter);
843
844 return ++s_counter;
845 }
846 \end{verbatim}
847
848 (note that we suppose that the function is called the first time from the main
849 thread so that the critical section object is initialized correctly by the time
850 other threads start calling it, if this is not the case this approach can
851 {\bf not} be used and the critical section must be made a global instead).
852
853
854
855 \membersection{wxENTER\_CRIT\_SECT}\label{wxentercritsect}
856
857 \func{}{wxENTER\_CRIT\_SECT}{\param{wxCriticalSection\& }{cs}}
858
859 This macro is equivalent to \helpref{cs.Enter()}{wxcriticalsectionenter} if
860 {\tt wxUSE\_THREADS} is $1$ and does nothing if it is $0$.
861
862
863
864 \membersection{::wxIsMainThread}\label{wxismainthread}
865
866 \func{bool}{wxIsMainThread}{\void}
867
868 Returns \true if this thread is the main one. Always returns \true if
869 {\tt wxUSE\_THREADS} is $0$.
870
871
872
873 \membersection{wxLEAVE\_CRIT\_SECT}\label{wxleavecritsect}
874
875 \func{}{wxLEAVE\_CRIT\_SECT}{\param{wxCriticalSection\& }{cs}}
876
877 This macro is equivalent to \helpref{cs.Leave()}{wxcriticalsectionleave} if
878 {\tt wxUSE\_THREADS} is $1$ and does nothing if it is $0$.
879
880
881
882 \membersection{::wxMutexGuiEnter}\label{wxmutexguienter}
883
884 \func{void}{wxMutexGuiEnter}{\void}
885
886 This function must be called when any thread other than the main GUI thread
887 wants to get access to the GUI library. This function will block the execution
888 of the calling thread until the main thread (or any other thread holding the
889 main GUI lock) leaves the GUI library and no other thread will enter the GUI
890 library until the calling thread calls \helpref{::wxMutexGuiLeave()}{wxmutexguileave}.
891
892 Typically, these functions are used like this:
893
894 \begin{verbatim}
895 void MyThread::Foo(void)
896 {
897 // before doing any GUI calls we must ensure that this thread is the only
898 // one doing it!
899
900 wxMutexGuiEnter();
901
902 // Call GUI here:
903 my_window->DrawSomething();
904
905 wxMutexGuiLeave();
906 }
907 \end{verbatim}
908
909 Note that under GTK, no creation of top-level windows is allowed in any
910 thread but the main one.
911
912 This function is only defined on platforms which support preemptive
913 threads.
914
915
916 \membersection{::wxMutexGuiLeave}\label{wxmutexguileave}
917
918 \func{void}{wxMutexGuiLeave}{\void}
919
920 See \helpref{::wxMutexGuiEnter()}{wxmutexguienter}.
921
922 This function is only defined on platforms which support preemptive
923 threads.
924
925
926
927 \section{File functions}\label{filefunctions}
928
929 \wxheading{Include files}
930
931 <wx/filefn.h>
932
933 \wxheading{See also}
934
935 \helpref{wxPathList}{wxpathlist}\\
936 \helpref{wxDir}{wxdir}\\
937 \helpref{wxFile}{wxfile}\\
938 \helpref{wxFileName}{wxfilename}
939
940
941 \membersection{::wxDos2UnixFilename}\label{wxdos2unixfilename}
942
943 \func{void}{wxDos2UnixFilename}{\param{wxChar *}{s}}
944
945 Converts a DOS to a Unix filename by replacing backslashes with forward
946 slashes.
947
948
949 \membersection{::wxFileExists}\label{functionwxfileexists}
950
951 \func{bool}{wxFileExists}{\param{const wxString\& }{filename}}
952
953 Returns true if the file exists and is a plain file.
954
955
956 \membersection{::wxFileModificationTime}\label{wxfilemodificationtime}
957
958 \func{time\_t}{wxFileModificationTime}{\param{const wxString\& }{filename}}
959
960 Returns time of last modification of given file.
961
962 The return value is $0$ if an error occured (e.g. file not found).
963
964
965 \membersection{::wxFileNameFromPath}\label{wxfilenamefrompath}
966
967 \func{wxString}{wxFileNameFromPath}{\param{const wxString\& }{path}}
968
969 \func{char *}{wxFileNameFromPath}{\param{char *}{path}}
970
971 {\bf NB:} This function is obsolete, please use
972 \helpref{wxFileName::SplitPath}{wxfilenamesplitpath} instead.
973
974 Returns the filename for a full path. The second form returns a pointer to
975 temporary storage that should not be deallocated.
976
977
978 \membersection{::wxFindFirstFile}\label{wxfindfirstfile}
979
980 \func{wxString}{wxFindFirstFile}{\param{const char *}{spec}, \param{int}{ flags = 0}}
981
982 This function does directory searching; returns the first file
983 that matches the path {\it spec}, or the empty string. Use \helpref{wxFindNextFile}{wxfindnextfile} to
984 get the next matching file. Neither will report the current directory "." or the
985 parent directory "..".
986
987 \wxheading{Warning}
988
989 As of wx 2.5.2, these functions are not thread-safe! (they use static variables). You probably want to use \helpref{wxDir::GetFirst}{wxdirgetfirst} or \helpref{wxDirTraverser}{wxdirtraverser} instead.
990
991 {\it spec} may contain wildcards.
992
993 {\it flags} may be wxDIR for restricting the query to directories, wxFILE for files or zero for either.
994
995 For example:
996
997 \begin{verbatim}
998 wxString f = wxFindFirstFile("/home/project/*.*");
999 while ( !f.empty() )
1000 {
1001 ...
1002 f = wxFindNextFile();
1003 }
1004 \end{verbatim}
1005
1006
1007 \membersection{::wxFindNextFile}\label{wxfindnextfile}
1008
1009 \func{wxString}{wxFindNextFile}{\void}
1010
1011 Returns the next file that matches the path passed to \helpref{wxFindFirstFile}{wxfindfirstfile}.
1012
1013 See \helpref{wxFindFirstFile}{wxfindfirstfile} for an example.
1014
1015
1016 \membersection{::wxGetDiskSpace}\label{wxgetdiskspace}
1017
1018 \func{bool}{wxGetDiskSpace}{\param{const wxString\& }{path}, \param{wxLongLong }{*total = NULL}, \param{wxLongLong }{*free = NULL}}
1019
1020 This function returns the total number of bytes and number of free bytes on
1021 the disk containing the directory {\it path} (it should exist). Both
1022 {\it total} and {\it free} parameters may be {\tt NULL} if the corresponding
1023 information is not needed.
1024
1025 \wxheading{Returns}
1026
1027 \true on success, \false if an error occurred (for example, the
1028 directory doesn't exist).
1029
1030 \wxheading{Portability}
1031
1032 This function is implemented for Win32,
1033 Mac OS and generic Unix provided the system has {\tt statfs()} function.
1034
1035 This function first appeared in wxWidgets 2.3.2.
1036
1037
1038 \membersection{::wxGetFileKind}\label{wxgetfilekind}
1039
1040 \func{wxFileKind}{wxGetFileKind}{\param{int }{fd}}
1041
1042 \func{wxFileKind}{wxGetFileKind}{\param{FILE *}{fp}}
1043
1044 Returns the type of an open file. Possible return values are:
1045
1046 \begin{verbatim}
1047 enum wxFileKind
1048 {
1049 wxFILE_KIND_UNKNOWN,
1050 wxFILE_KIND_DISK, // a file supporting seeking to arbitrary offsets
1051 wxFILE_KIND_TERMINAL, // a tty
1052 wxFILE_KIND_PIPE // a pipe
1053 };
1054
1055 \end{verbatim}
1056
1057 \wxheading{Include files}
1058
1059 <wx/filefn.h>
1060
1061
1062 \membersection{::wxGetOSDirectory}\label{wxgetosdirectory}
1063
1064 \func{wxString}{wxGetOSDirectory}{\void}
1065
1066 Returns the Windows directory under Windows; on other platforms returns the empty string.
1067
1068
1069 \membersection{::wxIsAbsolutePath}\label{wxisabsolutepath}
1070
1071 \func{bool}{wxIsAbsolutePath}{\param{const wxString\& }{filename}}
1072
1073 Returns true if the argument is an absolute filename, i.e. with a slash
1074 or drive name at the beginning.
1075
1076
1077 \membersection{::wxDirExists}\label{functionwxdirexists}
1078
1079 \func{bool}{wxDirExists}{\param{const wxString\& }{dirname}}
1080
1081 Returns true if the path exists.
1082
1083
1084 \membersection{::wxPathOnly}\label{wxpathonly}
1085
1086 \func{wxString}{wxPathOnly}{\param{const wxString\& }{path}}
1087
1088 Returns the directory part of the filename.
1089
1090
1091 \membersection{::wxUnix2DosFilename}\label{wxunix2dosfilename}
1092
1093 \func{void}{wxUnix2DosFilename}{\param{wxChar *}{s}}
1094
1095 This function is deprecated, use \helpref{wxFileName}{wxfilename} instead.
1096
1097 Converts a Unix to a DOS filename by replacing forward
1098 slashes with backslashes.
1099
1100
1101 \membersection{wxCHANGE\_UMASK}\label{wxchangeumask}
1102
1103 \func{}{wxCHANGE\_UMASK}{\param{int }{mask}}
1104
1105 Under Unix this macro changes the current process umask to the given value,
1106 unless it is equal to $-1$ in which case nothing is done, and restores it to
1107 the original value on scope exit. It works by declaring a variable which sets
1108 umask to \arg{mask} in its constructor and restores it in its destructor.
1109
1110 Under other platforms this macro expands to nothing.
1111
1112
1113 \membersection{::wxConcatFiles}\label{wxconcatfiles}
1114
1115 \func{bool}{wxConcatFiles}{\param{const wxString\& }{file1}, \param{const wxString\& }{file2},
1116 \param{const wxString\& }{file3}}
1117
1118 Concatenates {\it file1} and {\it file2} to {\it file3}, returning
1119 true if successful.
1120
1121
1122 \membersection{::wxCopyFile}\label{wxcopyfile}
1123
1124 \func{bool}{wxCopyFile}{\param{const wxString\& }{file1}, \param{const wxString\& }{file2}, \param{bool }{overwrite = true}}
1125
1126 Copies {\it file1} to {\it file2}, returning true if successful. If
1127 {\it overwrite} parameter is true (default), the destination file is overwritten
1128 if it exists, but if {\it overwrite} is false, the functions fails in this
1129 case.
1130
1131
1132 \membersection{::wxGetCwd}\label{wxgetcwd}
1133
1134 \func{wxString}{wxGetCwd}{\void}
1135
1136 Returns a string containing the current (or working) directory.
1137
1138
1139 \membersection{::wxGetWorkingDirectory}\label{wxgetworkingdirectory}
1140
1141 \func{wxString}{wxGetWorkingDirectory}{\param{char *}{buf=NULL}, \param{int }{sz=1000}}
1142
1143 {\bf NB:} This function is deprecated: use \helpref{wxGetCwd}{wxgetcwd} instead.
1144
1145 Copies the current working directory into the buffer if supplied, or
1146 copies the working directory into new storage (which you {\emph must} delete
1147 yourself) if the buffer is NULL.
1148
1149 {\it sz} is the size of the buffer if supplied.
1150
1151
1152 \membersection{::wxGetTempFileName}\label{wxgettempfilename}
1153
1154 \func{char *}{wxGetTempFileName}{\param{const wxString\& }{prefix}, \param{char *}{buf=NULL}}
1155
1156 \func{bool}{wxGetTempFileName}{\param{const wxString\& }{prefix}, \param{wxString\& }{buf}}
1157
1158 %% Makes a temporary filename based on {\it prefix}, opens and closes the file,
1159 %% and places the name in {\it buf}. If {\it buf} is NULL, new store
1160 %% is allocated for the temporary filename using {\it new}.
1161 %%
1162 %% Under Windows, the filename will include the drive and name of the
1163 %% directory allocated for temporary files (usually the contents of the
1164 %% TEMP variable). Under Unix, the {\tt /tmp} directory is used.
1165 %%
1166 %% It is the application's responsibility to create and delete the file.
1167
1168 {\bf NB:} These functions are obsolete, please use\rtfsp
1169 \helpref{wxFileName::CreateTempFileName}{wxfilenamecreatetempfilename}\rtfsp
1170 instead.
1171
1172
1173 \membersection{::wxIsWild}\label{wxiswild}
1174
1175 \func{bool}{wxIsWild}{\param{const wxString\& }{pattern}}
1176
1177 Returns true if the pattern contains wildcards. See \helpref{wxMatchWild}{wxmatchwild}.
1178
1179
1180 \membersection{::wxMatchWild}\label{wxmatchwild}
1181
1182 \func{bool}{wxMatchWild}{\param{const wxString\& }{pattern}, \param{const wxString\& }{text}, \param{bool}{ dot\_special}}
1183
1184 Returns true if the \arg{pattern}\/ matches the {\it text}\/; if {\it
1185 dot\_special}\/ is true, filenames beginning with a dot are not matched
1186 with wildcard characters. See \helpref{wxIsWild}{wxiswild}.
1187
1188
1189 \membersection{::wxMkdir}\label{wxmkdir}
1190
1191 \func{bool}{wxMkdir}{\param{const wxString\& }{dir}, \param{int }{perm = 0777}}
1192
1193 Makes the directory \arg{dir}, returning true if successful.
1194
1195 {\it perm} is the access mask for the directory for the systems on which it is
1196 supported (Unix) and doesn't have any effect on the other ones.
1197
1198
1199 \membersection{::wxParseCommonDialogsFilter}\label{wxparsecommondialogsfilter}
1200
1201 \func{int}{wxParseCommonDialogsFilter}{\param{const wxString\& }{wildCard}, \param{wxArrayString\& }{descriptions}, \param{wxArrayString\& }{filters}}
1202
1203 Parses the \arg{wildCard}, returning the number of filters.
1204 Returns 0 if none or if there's a problem.
1205 The arrays will contain an equal number of items found before the error.
1206 On platforms where native dialogs handle only one filter per entry,
1207 entries in arrays are automatically adjusted.
1208 \arg{wildCard} is in the form:
1209 \begin{verbatim}
1210 "All files (*)|*|Image Files (*.jpeg *.png)|*.jpg;*.png"
1211 \end{verbatim}
1212
1213 \membersection{::wxRemoveFile}\label{wxremovefile}
1214
1215 \func{bool}{wxRemoveFile}{\param{const wxString\& }{file}}
1216
1217 Removes \arg{file}, returning true if successful.
1218
1219
1220 \membersection{::wxRenameFile}\label{wxrenamefile}
1221
1222 \func{bool}{wxRenameFile}{\param{const wxString\& }{file1}, \param{const wxString\& }{file2}, \param{bool }{overwrite = true}}
1223
1224 Renames \arg{file1} to \arg{file2}, returning true if successful.
1225
1226 If \arg{overwrite} parameter is true (default), the destination file is
1227 overwritten if it exists, but if \arg{overwrite} is false, the functions fails
1228 in this case.
1229
1230
1231 \membersection{::wxRmdir}\label{wxrmdir}
1232
1233 \func{bool}{wxRmdir}{\param{const wxString\& }{dir}, \param{int}{ flags=0}}
1234
1235 Removes the directory {\it dir}, returning true if successful. Does not work under VMS.
1236
1237 The {\it flags} parameter is reserved for future use.
1238
1239
1240 \membersection{::wxSetWorkingDirectory}\label{wxsetworkingdirectory}
1241
1242 \func{bool}{wxSetWorkingDirectory}{\param{const wxString\& }{dir}}
1243
1244 Sets the current working directory, returning true if the operation succeeded.
1245 Under MS Windows, the current drive is also changed if {\it dir} contains a drive specification.
1246
1247
1248 \membersection{::wxSplitPath}\label{wxsplitfunction}
1249
1250 \func{void}{wxSplitPath}{\param{const char *}{ fullname}, \param{wxString *}{ path}, \param{wxString *}{ name}, \param{wxString *}{ ext}}
1251
1252 {\bf NB:} This function is obsolete, please use
1253 \helpref{wxFileName::SplitPath}{wxfilenamesplitpath} instead.
1254
1255 This function splits a full file name into components: the path (including possible disk/drive
1256 specification under Windows), the base name and the extension. Any of the output parameters
1257 ({\it path}, {\it name} or {\it ext}) may be NULL if you are not interested in the value of
1258 a particular component.
1259
1260 wxSplitPath() will correctly handle filenames with both DOS and Unix path separators under
1261 Windows, however it will not consider backslashes as path separators under Unix (where backslash
1262 is a valid character in a filename).
1263
1264 On entry, {\it fullname} should be non-NULL (it may be empty though).
1265
1266 On return, {\it path} contains the file path (without the trailing separator), {\it name}
1267 contains the file name and {\it ext} contains the file extension without leading dot. All
1268 three of them may be empty if the corresponding component is. The old contents of the
1269 strings pointed to by these parameters will be overwritten in any case (if the pointers
1270 are not NULL).
1271
1272
1273 \membersection{::wxTransferFileToStream}\label{wxtransferfiletostream}
1274
1275 \func{bool}{wxTransferFileToStream}{\param{const wxString\& }{filename}, \param{ostream\& }{stream}}
1276
1277 Copies the given file to {\it stream}. Useful when converting an old application to
1278 use streams (within the document/view framework, for example).
1279
1280 \wxheading{Include files}
1281
1282 <wx/docview.h>
1283
1284
1285 \membersection{::wxTransferStreamToFile}\label{wxtransferstreamtofile}
1286
1287 \func{bool}{wxTransferStreamToFile}{\param{istream\& }{stream} \param{const wxString\& }{filename}}
1288
1289 Copies the given stream to the file {\it filename}. Useful when converting an old application to
1290 use streams (within the document/view framework, for example).
1291
1292 \wxheading{Include files}
1293
1294 <wx/docview.h>
1295
1296
1297
1298 \section{Network, user and OS functions}\label{networkfunctions}
1299
1300 The functions in this section are used to retrieve information about the
1301 current computer and/or user characteristics.
1302
1303
1304 \membersection{::wxGetEmailAddress}\label{wxgetemailaddress}
1305
1306 \func{wxString}{wxGetEmailAddress}{\void}
1307
1308 \func{bool}{wxGetEmailAddress}{\param{char * }{buf}, \param{int }{sz}}
1309
1310 Copies the user's email address into the supplied buffer, by
1311 concatenating the values returned by \helpref{wxGetFullHostName}{wxgetfullhostname}\rtfsp
1312 and \helpref{wxGetUserId}{wxgetuserid}.
1313
1314 Returns true if successful, false otherwise.
1315
1316 \wxheading{Include files}
1317
1318 <wx/utils.h>
1319
1320
1321 \membersection{::wxGetFreeMemory}\label{wxgetfreememory}
1322
1323 \func{wxMemorySize}{wxGetFreeMemory}{\void}
1324
1325 Returns the amount of free memory in bytes under environments which
1326 support it, and -1 if not supported or failed to perform measurement.
1327
1328 \wxheading{Include files}
1329
1330 <wx/utils.h>
1331
1332
1333 \membersection{::wxGetFullHostName}\label{wxgetfullhostname}
1334
1335 \func{wxString}{wxGetFullHostName}{\void}
1336
1337 Returns the FQDN (fully qualified domain host name) or an empty string on
1338 error.
1339
1340 \wxheading{See also}
1341
1342 \helpref{wxGetHostName}{wxgethostname}
1343
1344 \wxheading{Include files}
1345
1346 <wx/utils.h>
1347
1348
1349 \membersection{::wxGetHomeDir}\label{wxgethomedir}
1350
1351 \func{wxString}{wxGetHomeDir}{\void}
1352
1353 Return the (current) user's home directory.
1354
1355 \wxheading{See also}
1356
1357 \helpref{wxGetUserHome}{wxgetuserhome}\\
1358 \helpref{wxStandardPaths}{wxstandardpaths}
1359
1360 \wxheading{Include files}
1361
1362 <wx/utils.h>
1363
1364
1365 \membersection{::wxGetHostName}\label{wxgethostname}
1366
1367 \func{wxString}{wxGetHostName}{\void}
1368
1369 \func{bool}{wxGetHostName}{\param{char * }{buf}, \param{int }{sz}}
1370
1371 Copies the current host machine's name into the supplied buffer. Please note
1372 that the returned name is {\it not} fully qualified, i.e. it does not include
1373 the domain name.
1374
1375 Under Windows or NT, this function first looks in the environment
1376 variable SYSTEM\_NAME; if this is not found, the entry {\bf HostName}\rtfsp
1377 in the {\bf wxWidgets} section of the WIN.INI file is tried.
1378
1379 The first variant of this function returns the hostname if successful or an
1380 empty string otherwise. The second (deprecated) function returns true
1381 if successful, false otherwise.
1382
1383 \wxheading{See also}
1384
1385 \helpref{wxGetFullHostName}{wxgetfullhostname}
1386
1387 \wxheading{Include files}
1388
1389 <wx/utils.h>
1390
1391
1392 \membersection{::wxGetOsDescription}\label{wxgetosdescription}
1393
1394 \func{wxString}{wxGetOsDescription}{\void}
1395
1396 Returns the string containing the description of the current platform in a
1397 user-readable form. For example, this function may return strings like
1398 {\tt Windows NT Version 4.0} or {\tt Linux 2.2.2 i386}.
1399
1400 \wxheading{See also}
1401
1402 \helpref{::wxGetOsVersion}{wxgetosversion}
1403
1404 \wxheading{Include files}
1405
1406 <wx/utils.h>
1407
1408
1409 \membersection{::wxGetOsVersion}\label{wxgetosversion}
1410
1411 \func{wxOperatingSystemId}{wxGetOsVersion}{\param{int *}{major = NULL}, \param{int *}{minor = NULL}}
1412
1413 Gets the version and the operating system ID for currently running OS.
1414 See \helpref{wxPlatformInfo}{wxplatforminfo} for more details about wxOperatingSystemId.
1415
1416 \wxheading{See also}
1417
1418 \helpref{::wxGetOsDescription}{wxgetosdescription},
1419 \helpref{wxPlatformInfo}{wxplatforminfo}
1420
1421 \wxheading{Include files}
1422
1423 <wx/utils.h>
1424
1425
1426 \membersection{::wxIsPlatformLittleEndian}\label{wxisplatformlittleendian}
1427
1428 \func{bool}{wxIsPlatformLittleEndian}{\void}
1429
1430 Returns \true if the current platform is little endian (instead of big endian).
1431 The check is performed at run-time.
1432
1433 \wxheading{See also}
1434
1435 \helpref{Byte order macros}{byteordermacros}
1436
1437 \wxheading{Include files}
1438
1439 <wx/utils.h>
1440
1441
1442 \membersection{::wxIsPlatform64Bit}\label{wxisplatform64bit}
1443
1444 \func{bool}{wxIsPlatform64Bit}{\void}
1445
1446 Returns \true if the operating system the program is running under is 64 bit.
1447 The check is performed at run-time and may differ from the value available at
1448 compile-time (at compile-time you can just check if {\tt sizeof(void*)==8})
1449 since the program could be running in emulation mode or in a mixed 32/64 bit system
1450 (bi-architecture operating system).
1451
1452 Very important: this function is not 100\% reliable on some systems given the fact
1453 that there isn't always a standard way to do a reliable check on the OS architecture.
1454
1455 \wxheading{Include files}
1456
1457 <wx/utils.h>
1458
1459
1460 \membersection{::wxGetUserHome}\label{wxgetuserhome}
1461
1462 \func{const wxChar *}{wxGetUserHome}{\param{const wxString\& }{user = ""}}
1463
1464 Returns the home directory for the given user. If the username is empty
1465 (default value), this function behaves like
1466 \helpref{wxGetHomeDir}{wxgethomedir}.
1467
1468 \wxheading{Include files}
1469
1470 <wx/utils.h>
1471
1472
1473 \membersection{::wxGetUserId}\label{wxgetuserid}
1474
1475 \func{wxString}{wxGetUserId}{\void}
1476
1477 \func{bool}{wxGetUserId}{\param{char * }{buf}, \param{int }{sz}}
1478
1479 This function returns the "user id" also known as "login name" under Unix i.e.
1480 something like "jsmith". It uniquely identifies the current user (on this system).
1481
1482 Under Windows or NT, this function first looks in the environment
1483 variables USER and LOGNAME; if neither of these is found, the entry {\bf UserId}\rtfsp
1484 in the {\bf wxWidgets} section of the WIN.INI file is tried.
1485
1486 The first variant of this function returns the login name if successful or an
1487 empty string otherwise. The second (deprecated) function returns true
1488 if successful, false otherwise.
1489
1490 \wxheading{See also}
1491
1492 \helpref{wxGetUserName}{wxgetusername}
1493
1494 \wxheading{Include files}
1495
1496 <wx/utils.h>
1497
1498
1499 \membersection{::wxGetUserName}\label{wxgetusername}
1500
1501 \func{wxString}{wxGetUserName}{\void}
1502
1503 \func{bool}{wxGetUserName}{\param{char * }{buf}, \param{int }{sz}}
1504
1505 This function returns the full user name (something like "Mr. John Smith").
1506
1507 Under Windows or NT, this function looks for the entry {\bf UserName}\rtfsp
1508 in the {\bf wxWidgets} section of the WIN.INI file. If PenWindows
1509 is running, the entry {\bf Current} in the section {\bf User} of
1510 the PENWIN.INI file is used.
1511
1512 The first variant of this function returns the user name if successful or an
1513 empty string otherwise. The second (deprecated) function returns \true
1514 if successful, \false otherwise.
1515
1516 \wxheading{See also}
1517
1518 \helpref{wxGetUserId}{wxgetuserid}
1519
1520 \wxheading{Include files}
1521
1522 <wx/utils.h>
1523
1524
1525
1526 \section{String functions}\label{stringfunctions}
1527
1528
1529 \membersection{::copystring}\label{copystring}
1530
1531 \func{char *}{copystring}{\param{const char *}{s}}
1532
1533 Makes a copy of the string {\it s} using the C++ new operator, so it can be
1534 deleted with the {\it delete} operator.
1535
1536 This function is deprecated, use \helpref{wxString}{wxstring} class instead.
1537
1538
1539 \membersection{::wxGetTranslation}\label{wxgettranslation}
1540
1541 \func{const wxChar *}{wxGetTranslation}{\param{const wxChar* }{str},
1542 \param{const wxChar* }{domain = NULL}}
1543
1544 \func{const wxChar *}{wxGetTranslation}{\param{const wxChar* }{str}, \param{const wxChar* }{strPlural}, \param{size\_t }{n},
1545 \param{const wxChar* }{domain = NULL}}
1546
1547 This function returns the translation of string {\it str} in the current
1548 \helpref{locale}{wxlocale}. If the string is not found in any of the loaded
1549 message catalogs (see \helpref{internationalization overview}{internationalization}), the
1550 original string is returned. In debug build, an error message is logged -- this
1551 should help to find the strings which were not yet translated. If
1552 {\it domain} is specified then only that domain/catalog is searched
1553 for a matching string. As this function
1554 is used very often, an alternative (and also common in Unix world) syntax is
1555 provided: the \helpref{\_()}{underscore} macro is defined to do the same thing
1556 as wxGetTranslation.
1557
1558 The second form is used when retrieving translation of string that has
1559 different singular and plural form in English or different plural forms in some
1560 other language. It takes two extra arguments: as above, \arg{str}
1561 parameter must contain the singular form of the string to be converted and
1562 is used as the key for the search in the catalog. The \arg{strPlural} parameter
1563 is the plural form (in English). The parameter \arg{n} is used to determine the
1564 plural form. If no message catalog is found \arg{str} is returned if `n == 1',
1565 otherwise \arg{strPlural}.
1566
1567 See \urlref{GNU gettext manual}{http://www.gnu.org/manual/gettext/html\_chapter/gettext\_10.html\#SEC150}
1568 for additional information on plural forms handling. For a shorter alternative
1569 see the \helpref{wxPLURAL()}{wxplural} macro.
1570
1571 Both versions call \helpref{wxLocale::GetString}{wxlocalegetstring}.
1572
1573 Note that this function is not suitable for literal strings in Unicode
1574 builds, since the literal strings must be enclosed into
1575 \helpref{\_T()}{underscoret} or \helpref{wxT}{wxt} macro which makes them
1576 unrecognised by \texttt{xgettext}, and so they are not extracted to the message
1577 catalog. Instead, use the \helpref{\_()}{underscore} and
1578 \helpref{wxPLURAL}{wxplural} macro for all literal strings.
1579
1580
1581 \membersection{::wxIsEmpty}\label{wxisempty}
1582
1583 \func{bool}{wxIsEmpty}{\param{const char *}{ p}}
1584
1585 Returns \true if the pointer is either {\tt NULL} or points to an empty
1586 string, \false otherwise.
1587
1588
1589 \membersection{::wxStrcmp}\label{wxstrcmp}
1590
1591 \func{int}{wxStrcmp}{\param{const char *}{p1}, \param{const char *}{p2}}
1592
1593 Returns a negative value, 0, or positive value if {\it p1} is less than, equal
1594 to or greater than {\it p2}. The comparison is case-sensitive.
1595
1596 This function complements the standard C function {\it stricmp()} which performs
1597 case-insensitive comparison.
1598
1599
1600 \membersection{::wxStricmp}\label{wxstricmp}
1601
1602 \func{int}{wxStricmp}{\param{const char *}{p1}, \param{const char *}{p2}}
1603
1604 Returns a negative value, 0, or positive value if {\it p1} is less than, equal
1605 to or greater than {\it p2}. The comparison is case-insensitive.
1606
1607 This function complements the standard C function {\it strcmp()} which performs
1608 case-sensitive comparison.
1609
1610
1611 \membersection{::wxStringEq}\label{wxstringeq}
1612
1613 \func{bool}{wxStringEq}{\param{const wxString\& }{s1}, \param{const wxString\& }{s2}}
1614
1615 {\bf NB:} This function is obsolete, use \helpref{wxString}{wxstring} instead.
1616
1617 A macro defined as:
1618
1619 \begin{verbatim}
1620 #define wxStringEq(s1, s2) (s1 && s2 && (strcmp(s1, s2) == 0))
1621 \end{verbatim}
1622
1623
1624 \membersection{::wxStringMatch}\label{wxstringmatch}
1625
1626 \func{bool}{wxStringMatch}{\param{const wxString\& }{s1}, \param{const wxString\& }{s2},\\
1627 \param{bool}{ subString = true}, \param{bool}{ exact = false}}
1628
1629 {\bf NB:} This function is obsolete, use \helpref{wxString::Find}{wxstringfind} instead.
1630
1631 Returns \true if the substring {\it s1} is found within {\it s2},
1632 ignoring case if {\it exact} is false. If {\it subString} is \false,
1633 no substring matching is done.
1634
1635
1636 \membersection{::wxStringTokenize}\label{wxstringtokenize}
1637
1638 \func{wxArrayString}{wxStringTokenize}{\param{const wxString\& }{str},\\
1639 \param{const wxString\& }{delims = wxDEFAULT\_DELIMITERS},\\
1640 \param{wxStringTokenizerMode }{mode = wxTOKEN\_DEFAULT}}
1641
1642 This is a convenience function wrapping
1643 \helpref{wxStringTokenizer}{wxstringtokenizer} which simply returns all tokens
1644 found in the given \arg{str} in an array.
1645
1646 Please see
1647 \helpref{wxStringTokenizer::wxStringTokenizer}{wxstringtokenizerwxstringtokenizer}
1648 for the description of the other parameters.
1649
1650
1651 \membersection{::wxStrlen}\label{wxstrlen}
1652
1653 \func{size\_t}{wxStrlen}{\param{const char *}{ p}}
1654
1655 This is a safe version of standard function {\it strlen()}: it does exactly the
1656 same thing (i.e. returns the length of the string) except that it returns 0 if
1657 {\it p} is the {\tt NULL} pointer.
1658
1659
1660 \membersection{::wxSnprintf}\label{wxsnprintf}
1661
1662 \func{int}{wxSnprintf}{\param{wxChar *}{buf}, \param{size\_t }{len}, \param{const wxChar *}{format}, \param{}{...}}
1663
1664 This function replaces the dangerous standard function {\tt sprintf()} and is
1665 like {\tt snprintf()} available on some platforms. The only difference with
1666 sprintf() is that an additional argument - buffer size - is taken and the
1667 buffer is never overflowed.
1668
1669 Returns the number of characters copied to the buffer or -1 if there is not
1670 enough space.
1671
1672 \wxheading{See also}
1673
1674 \helpref{wxVsnprintf}{wxvsnprintf}, \helpref{wxString::Printf}{wxstringprintf}
1675
1676
1677 \membersection{wxT}\label{wxt}
1678
1679 \func{wxChar}{wxT}{\param{char }{ch}}
1680
1681 \func{const wxChar *}{wxT}{\param{const char *}{s}}
1682
1683 wxT() is a macro which can be used with character and string literals (in other
1684 words, {\tt 'x'} or {\tt "foo"}) to automatically convert them to Unicode in
1685 Unicode build configuration. Please see the
1686 \helpref{Unicode overview}{unicode} for more information.
1687
1688 This macro is simply returns the value passed to it without changes in ASCII
1689 build. In fact, its definition is:
1690 \begin{verbatim}
1691 #ifdef UNICODE
1692 #define wxT(x) L ## x
1693 #else // !Unicode
1694 #define wxT(x) x
1695 #endif
1696 \end{verbatim}
1697
1698
1699 \membersection{wxTRANSLATE}\label{wxtranslate}
1700
1701 \func{const wxChar *}{wxTRANSLATE}{\param{const char *}{s}}
1702
1703 This macro doesn't do anything in the program code -- it simply expands to the
1704 value of its argument (except in Unicode build where it is equivalent to
1705 \helpref{wxT}{wxt} which makes it unnecessary to use both wxTRANSLATE and wxT
1706 with the same string which would be really unreadable).
1707
1708 However it does have a purpose and it is to mark the literal strings for the
1709 extraction into the message catalog created by {\tt xgettext} program. Usually
1710 this is achieved using \helpref{\_()}{underscore} but that macro not only marks
1711 the string for extraction but also expands into a
1712 \helpref{wxGetTranslation}{wxgettranslation} function call which means that it
1713 cannot be used in some situations, notably for static array
1714 initialization.
1715
1716 Here is an example which should make it more clear: suppose that you have a
1717 static array of strings containing the weekday names and which have to be
1718 translated (note that it is a bad example, really, as
1719 \helpref{wxDateTime}{wxdatetime} already can be used to get the localized week
1720 day names already). If you write
1721
1722 \begin{verbatim}
1723 static const wxChar * const weekdays[] = { _("Mon"), ..., _("Sun") };
1724 ...
1725 // use weekdays[n] as usual
1726 \end{verbatim}
1727
1728 the code wouldn't compile because the function calls are forbidden in the array
1729 initializer. So instead you should do
1730
1731 \begin{verbatim}
1732 static const wxChar * const weekdays[] = { wxTRANSLATE("Mon"), ..., wxTRANSLATE("Sun") };
1733 ...
1734 // use wxGetTranslation(weekdays[n])
1735 \end{verbatim}
1736
1737 here.
1738
1739 Note that although the code {\bf would} compile if you simply omit
1740 wxTRANSLATE() in the above, it wouldn't work as expected because there would be
1741 no translations for the weekday names in the program message catalog and
1742 wxGetTranslation wouldn't find them.
1743
1744 \membersection{::wxVsnprintf}\label{wxvsnprintf}
1745
1746 \func{int}{wxVsnprintf}{\param{wxChar *}{buf}, \param{size\_t }{len}, \param{const wxChar *}{format}, \param{va\_list }{argPtr}}
1747
1748 The same as \helpref{wxSnprintf}{wxsnprintf} but takes a {\tt va\_list }
1749 argument instead of arbitrary number of parameters.
1750
1751 Note that if \texttt{wxUSE\_PRINTF\_POS\_PARAMS} is set to 1, then this function supports
1752 positional arguments (see \helpref{wxString::Printf}{wxstringprintf} for more information).
1753 However other functions of the same family (wxPrintf, wxSprintf, wxFprintf, wxVfprintf,
1754 wxVfprintf, wxVprintf, wxVsprintf) currently do not to support positional parameters
1755 even when \texttt{wxUSE\_PRINTF\_POS\_PARAMS} is 1.
1756
1757 \wxheading{See also}
1758
1759 \helpref{wxSnprintf}{wxsnprintf}, \helpref{wxString::PrintfV}{wxstringprintfv}
1760
1761
1762
1763 \membersection{\_}\label{underscore}
1764
1765 \func{const wxChar *}{\_}{\param{const char *}{s}}
1766
1767 This macro expands into a call to \helpref{wxGetTranslation}{wxgettranslation}
1768 function, so it marks the message for the extraction by {\tt xgettext} just as
1769 \helpref{wxTRANSLATE}{wxtranslate} does, but also returns the translation of
1770 the string for the current locale during execution.
1771
1772 Don't confuse this macro with \helpref{\_T()}{underscoret}!
1773
1774
1775 \membersection{wxPLURAL}\label{wxplural}
1776
1777 \func{const wxChar *}{wxPLURAL}{\param{const char *}{sing}, \param{const char *}{plur}, \param{size\_t}{n}}
1778
1779 This macro is identical to \helpref{\_()}{underscore} but for the plural variant
1780 of \helpref{wxGetTranslation}{wxgettranslation}.
1781
1782
1783 \membersection{\_T}\label{underscoret}
1784
1785 \func{wxChar}{\_T}{\param{char }{ch}}
1786
1787 \func{const wxChar *}{\_T}{\param{const wxChar }{ch}}
1788
1789 This macro is exactly the same as \helpref{wxT}{wxt} and is defined in
1790 wxWidgets simply because it may be more intuitive for Windows programmers as
1791 the standard Win32 headers also define it (as well as yet another name for the
1792 same macro which is {\tt \_TEXT()}).
1793
1794 Don't confuse this macro with \helpref{\_()}{underscore}!
1795
1796
1797
1798 \section{Dialog functions}\label{dialogfunctions}
1799
1800 Below are a number of convenience functions for getting input from the
1801 user or displaying messages. Note that in these functions the last three
1802 parameters are optional. However, it is recommended to pass a parent frame
1803 parameter, or (in MS Windows or Motif) the wrong window frame may be brought to
1804 the front when the dialog box is popped up.
1805
1806
1807 \membersection{::wxBeginBusyCursor}\label{wxbeginbusycursor}
1808
1809 \func{void}{wxBeginBusyCursor}{\param{wxCursor *}{cursor = wxHOURGLASS\_CURSOR}}
1810
1811 Changes the cursor to the given cursor for all windows in the application.
1812 Use \helpref{wxEndBusyCursor}{wxendbusycursor} to revert the cursor back
1813 to its previous state. These two calls can be nested, and a counter
1814 ensures that only the outer calls take effect.
1815
1816 See also \helpref{wxIsBusy}{wxisbusy}, \helpref{wxBusyCursor}{wxbusycursor}.
1817
1818 \wxheading{Include files}
1819
1820 <wx/utils.h>
1821
1822
1823 \membersection{::wxBell}\label{wxbell}
1824
1825 \func{void}{wxBell}{\void}
1826
1827 Ring the system bell.
1828
1829 \wxheading{Include files}
1830
1831 <wx/utils.h>
1832
1833
1834 \membersection{::wxCreateFileTipProvider}\label{wxcreatefiletipprovider}
1835
1836 \func{wxTipProvider *}{wxCreateFileTipProvider}{\param{const wxString\& }{filename},
1837 \param{size\_t }{currentTip}}
1838
1839 This function creates a \helpref{wxTipProvider}{wxtipprovider} which may be
1840 used with \helpref{wxShowTip}{wxshowtip}.
1841
1842 \docparam{filename}{The name of the file containing the tips, one per line}
1843 \docparam{currentTip}{The index of the first tip to show - normally this index
1844 is remembered between the 2 program runs.}
1845
1846 \wxheading{See also}
1847
1848 \helpref{Tips overview}{tipsoverview}
1849
1850 \wxheading{Include files}
1851
1852 <wx/tipdlg.h>
1853
1854
1855 \membersection{::wxDirSelector}\label{wxdirselector}
1856
1857 \func{wxString}{wxDirSelector}{\param{const wxString\& }{message = wxDirSelectorPromptStr},\\
1858 \param{const wxString\& }{default\_path = ""},\\
1859 \param{long }{style = 0}, \param{const wxPoint\& }{pos = wxDefaultPosition},\\
1860 \param{wxWindow *}{parent = NULL}}
1861
1862 Pops up a directory selector dialog. The arguments have the same meaning as
1863 those of wxDirDialog::wxDirDialog(). The message is displayed at the top,
1864 and the default\_path, if specified, is set as the initial selection.
1865
1866 The application must check for an empty return value (if the user pressed
1867 Cancel). For example:
1868
1869 \begin{verbatim}
1870 const wxString& dir = wxDirSelector("Choose a folder");
1871 if ( !dir.empty() )
1872 {
1873 ...
1874 }
1875 \end{verbatim}
1876
1877 \wxheading{Include files}
1878
1879 <wx/dirdlg.h>
1880
1881
1882 \membersection{::wxFileSelector}\label{wxfileselector}
1883
1884 \func{wxString}{wxFileSelector}{\param{const wxString\& }{message}, \param{const wxString\& }{default\_path = ""},\\
1885 \param{const wxString\& }{default\_filename = ""}, \param{const wxString\& }{default\_extension = ""},\\
1886 \param{const wxString\& }{wildcard = "*.*"}, \param{int }{flags = 0}, \param{wxWindow *}{parent = NULL},\\
1887 \param{int}{ x = -1}, \param{int}{ y = -1}}
1888
1889 Pops up a file selector box. In Windows, this is the common file selector
1890 dialog. In X, this is a file selector box with the same functionality.
1891 The path and filename are distinct elements of a full file pathname.
1892 If path is empty, the current directory will be used. If filename is empty,
1893 no default filename will be supplied. The wildcard determines what files
1894 are displayed in the file selector, and file extension supplies a type
1895 extension for the required filename. Flags may be a combination of wxOPEN,
1896 wxSAVE, wxOVERWRITE\_PROMPT or wxFILE\_MUST\_EXIST. Note that wxMULTIPLE
1897 can only be used with \helpref{wxFileDialog}{wxfiledialog} and not here as this
1898 function only returns a single file name.
1899
1900 Both the Unix and Windows versions implement a wildcard filter. Typing a
1901 filename containing wildcards (*, ?) in the filename text item, and
1902 clicking on Ok, will result in only those files matching the pattern being
1903 displayed.
1904
1905 The wildcard may be a specification for multiple types of file
1906 with a description for each, such as:
1907
1908 \begin{verbatim}
1909 "BMP files (*.bmp)|*.bmp|GIF files (*.gif)|*.gif"
1910 \end{verbatim}
1911
1912 The application must check for an empty return value (the user pressed
1913 Cancel). For example:
1914
1915 \begin{verbatim}
1916 wxString filename = wxFileSelector("Choose a file to open");
1917 if ( !filename.empty() )
1918 {
1919 // work with the file
1920 ...
1921 }
1922 //else: cancelled by user
1923 \end{verbatim}
1924
1925 \wxheading{Include files}
1926
1927 <wx/filedlg.h>
1928
1929
1930 \membersection{::wxEndBusyCursor}\label{wxendbusycursor}
1931
1932 \func{void}{wxEndBusyCursor}{\void}
1933
1934 Changes the cursor back to the original cursor, for all windows in the application.
1935 Use with \helpref{wxBeginBusyCursor}{wxbeginbusycursor}.
1936
1937 See also \helpref{wxIsBusy}{wxisbusy}, \helpref{wxBusyCursor}{wxbusycursor}.
1938
1939 \wxheading{Include files}
1940
1941 <wx/utils.h>
1942
1943
1944 \membersection{::wxGetColourFromUser}\label{wxgetcolourfromuser}
1945
1946 \func{wxColour}{wxGetColourFromUser}{\param{wxWindow *}{parent}, \param{const wxColour\& }{colInit}, \param{const wxString\& }{caption = wxEmptyString}}
1947
1948 Shows the colour selection dialog and returns the colour selected by user or
1949 invalid colour (use \helpref{wxColour::Ok}{wxcolourok} to test whether a colour
1950 is valid) if the dialog was cancelled.
1951
1952 \wxheading{Parameters}
1953
1954 \docparam{parent}{The parent window for the colour selection dialog}
1955
1956 \docparam{colInit}{If given, this will be the colour initially selected in the dialog.}
1957
1958 \docparam{caption}{If given, this will be used for the dialog caption.}
1959
1960 \wxheading{Include files}
1961
1962 <wx/colordlg.h>
1963
1964
1965 \membersection{::wxGetFontFromUser}\label{wxgetfontfromuser}
1966
1967 \func{wxFont}{wxGetFontFromUser}{\param{wxWindow *}{parent}, \param{const wxFont\& }{fontInit}, \param{const wxString\& }{caption = wxEmptyString}}
1968
1969 Shows the font selection dialog and returns the font selected by user or
1970 invalid font (use \helpref{wxFont::Ok}{wxfontok} to test whether a font
1971 is valid) if the dialog was cancelled.
1972
1973 \wxheading{Parameters}
1974
1975 \docparam{parent}{The parent window for the font selection dialog}
1976
1977 \docparam{fontInit}{If given, this will be the font initially selected in the dialog.}
1978
1979 \docparam{caption}{If given, this will be used for the dialog caption.}
1980
1981 \wxheading{Include files}
1982
1983 <wx/fontdlg.h>
1984
1985
1986
1987 \membersection{::wxGetMultipleChoices}\label{wxgetmultiplechoices}
1988
1989 \func{size\_t}{wxGetMultipleChoices}{\\
1990 \param{wxArrayInt\& }{selections},\\
1991 \param{const wxString\& }{message},\\
1992 \param{const wxString\& }{caption},\\
1993 \param{const wxArrayString\& }{aChoices},\\
1994 \param{wxWindow *}{parent = NULL},\\
1995 \param{int}{ x = -1}, \param{int}{ y = -1},\\
1996 \param{bool}{ centre = true},\\
1997 \param{int }{width=150}, \param{int }{height=200}}
1998
1999 \func{size\_t}{wxGetMultipleChoices}{\\
2000 \param{wxArrayInt\& }{selections},\\
2001 \param{const wxString\& }{message},\\
2002 \param{const wxString\& }{caption},\\
2003 \param{int}{ n}, \param{const wxString\& }{choices[]},\\
2004 \param{wxWindow *}{parent = NULL},\\
2005 \param{int}{ x = -1}, \param{int}{ y = -1},\\
2006 \param{bool}{ centre = true},\\
2007 \param{int }{width=150}, \param{int }{height=200}}
2008
2009 Pops up a dialog box containing a message, OK/Cancel buttons and a
2010 multiple-selection listbox. The user may choose an arbitrary (including 0)
2011 number of items in the listbox whose indices will be returned in
2012 {\it selection} array. The initial contents of this array will be used to
2013 select the items when the dialog is shown.
2014
2015 You may pass the list of strings to choose from either using {\it choices}
2016 which is an array of {\it n} strings for the listbox or by using a single
2017 {\it aChoices} parameter of type \helpref{wxArrayString}{wxarraystring}.
2018
2019 If {\it centre} is true, the message text (which may include new line
2020 characters) is centred; if false, the message is left-justified.
2021
2022 \wxheading{Include files}
2023
2024 <wx/choicdlg.h>
2025
2026 \perlnote{In wxPerl there is just an array reference in place of {\tt n}
2027 and {\tt choices}, and no {\tt selections} parameter; the function
2028 returns an array containing the user selections.}
2029
2030
2031 \membersection{::wxGetNumberFromUser}\label{wxgetnumberfromuser}
2032
2033 \func{long}{wxGetNumberFromUser}{
2034 \param{const wxString\& }{message},
2035 \param{const wxString\& }{prompt},
2036 \param{const wxString\& }{caption},
2037 \param{long }{value},
2038 \param{long }{min = 0},
2039 \param{long }{max = 100},
2040 \param{wxWindow *}{parent = NULL},
2041 \param{const wxPoint\& }{pos = wxDefaultPosition}}
2042
2043 Shows a dialog asking the user for numeric input. The dialogs title is set to
2044 {\it caption}, it contains a (possibly) multiline {\it message} above the
2045 single line {\it prompt} and the zone for entering the number.
2046
2047 The number entered must be in the range {\it min}..{\it max} (both of which
2048 should be positive) and {\it value} is the initial value of it. If the user
2049 enters an invalid value or cancels the dialog, the function will return -1.
2050
2051 Dialog is centered on its {\it parent} unless an explicit position is given in
2052 {\it pos}.
2053
2054 \wxheading{Include files}
2055
2056 <wx/numdlg.h>
2057
2058
2059 \membersection{::wxGetPasswordFromUser}\label{wxgetpasswordfromuser}
2060
2061 \func{wxString}{wxGetPasswordFromUser}{\param{const wxString\& }{message}, \param{const wxString\& }{caption = ``Input text"},\\
2062 \param{const wxString\& }{default\_value = ``"}, \param{wxWindow *}{parent = NULL},\\
2063 \param{int}{ x = wxDefaultCoord}, \param{int}{ y = wxDefaultCoord}, \param{bool}{ centre = true}}
2064
2065 Similar to \helpref{wxGetTextFromUser}{wxgettextfromuser} but the text entered
2066 in the dialog is not shown on screen but replaced with stars. This is intended
2067 to be used for entering passwords as the function name implies.
2068
2069 \wxheading{Include files}
2070
2071 <wx/textdlg.h>
2072
2073
2074 \membersection{::wxGetTextFromUser}\label{wxgettextfromuser}
2075
2076 \func{wxString}{wxGetTextFromUser}{\param{const wxString\& }{message}, \param{const wxString\& }{caption = ``Input text"},\\
2077 \param{const wxString\& }{default\_value = ``"}, \param{wxWindow *}{parent = NULL},\\
2078 \param{int}{ x = wxDefaultCoord}, \param{int}{ y = wxDefaultCoord}, \param{bool}{ centre = true}}
2079
2080 Pop up a dialog box with title set to {\it caption}, {\it message}, and a
2081 \rtfsp{\it default\_value}. The user may type in text and press OK to return this text,
2082 or press Cancel to return the empty string.
2083
2084 If {\it centre} is true, the message text (which may include new line characters)
2085 is centred; if false, the message is left-justified.
2086
2087 \wxheading{Include files}
2088
2089 <wx/textdlg.h>
2090
2091
2092 \membersection{::wxGetMultipleChoice}\label{wxgetmultiplechoice}
2093
2094 \func{int}{wxGetMultipleChoice}{\param{const wxString\& }{message}, \param{const wxString\& }{caption}, \param{int}{ n}, \param{const wxString\& }{choices[]},\\
2095 \param{int }{nsel}, \param{int *}{selection},
2096 \param{wxWindow *}{parent = NULL}, \param{int}{ x = -1}, \param{int}{ y = -1},\\
2097 \param{bool}{ centre = true}, \param{int }{width=150}, \param{int }{height=200}}
2098
2099 Pops up a dialog box containing a message, OK/Cancel buttons and a multiple-selection
2100 listbox. The user may choose one or more item(s) and press OK or Cancel.
2101
2102 The number of initially selected choices, and array of the selected indices,
2103 are passed in; this array will contain the user selections on exit, with
2104 the function returning the number of selections. {\it selection} must be
2105 as big as the number of choices, in case all are selected.
2106
2107 If Cancel is pressed, -1 is returned.
2108
2109 {\it choices} is an array of {\it n} strings for the listbox.
2110
2111 If {\it centre} is true, the message text (which may include new line characters)
2112 is centred; if false, the message is left-justified.
2113
2114 \wxheading{Include files}
2115
2116 <wx/choicdlg.h>
2117
2118
2119 \membersection{::wxGetSingleChoice}\label{wxgetsinglechoice}
2120
2121 \func{wxString}{wxGetSingleChoice}{\param{const wxString\& }{message},\\
2122 \param{const wxString\& }{caption},\\
2123 \param{const wxArrayString\& }{aChoices},\\
2124 \param{wxWindow *}{parent = NULL},\\
2125 \param{int}{ x = -1}, \param{int}{ y = -1},\\
2126 \param{bool}{ centre = true},\\
2127 \param{int }{width=150}, \param{int }{height=200}}
2128
2129 \func{wxString}{wxGetSingleChoice}{\param{const wxString\& }{message},\\
2130 \param{const wxString\& }{caption},\\
2131 \param{int}{ n}, \param{const wxString\& }{choices[]},\\
2132 \param{wxWindow *}{parent = NULL},\\
2133 \param{int}{ x = -1}, \param{int}{ y = -1},\\
2134 \param{bool}{ centre = true},\\
2135 \param{int }{width=150}, \param{int }{height=200}}
2136
2137 Pops up a dialog box containing a message, OK/Cancel buttons and a
2138 single-selection listbox. The user may choose an item and press OK to return a
2139 string or Cancel to return the empty string. Use
2140 \helpref{wxGetSingleChoiceIndex}{wxgetsinglechoiceindex} if empty string is a
2141 valid choice and if you want to be able to detect pressing Cancel reliably.
2142
2143 You may pass the list of strings to choose from either using {\it choices}
2144 which is an array of {\it n} strings for the listbox or by using a single
2145 {\it aChoices} parameter of type \helpref{wxArrayString}{wxarraystring}.
2146
2147 If {\it centre} is true, the message text (which may include new line
2148 characters) is centred; if false, the message is left-justified.
2149
2150 \wxheading{Include files}
2151
2152 <wx/choicdlg.h>
2153
2154 \perlnote{In wxPerl there is just an array reference in place of {\tt n}
2155 and {\tt choices}.}
2156
2157
2158 \membersection{::wxGetSingleChoiceIndex}\label{wxgetsinglechoiceindex}
2159
2160 \func{int}{wxGetSingleChoiceIndex}{\param{const wxString\& }{message},\\
2161 \param{const wxString\& }{caption},\\
2162 \param{const wxArrayString\& }{aChoices},\\
2163 \param{wxWindow *}{parent = NULL}, \param{int}{ x = -1}, \param{int}{ y = -1},\\
2164 \param{bool}{ centre = true}, \param{int }{width=150}, \param{int }{height=200}}
2165
2166 \func{int}{wxGetSingleChoiceIndex}{\param{const wxString\& }{message},\\
2167 \param{const wxString\& }{caption},\\
2168 \param{int}{ n}, \param{const wxString\& }{choices[]},\\
2169 \param{wxWindow *}{parent = NULL}, \param{int}{ x = -1}, \param{int}{ y = -1},\\
2170 \param{bool}{ centre = true}, \param{int }{width=150}, \param{int }{height=200}}
2171
2172 As {\bf wxGetSingleChoice} but returns the index representing the selected
2173 string. If the user pressed cancel, -1 is returned.
2174
2175 \wxheading{Include files}
2176
2177 <wx/choicdlg.h>
2178
2179 \perlnote{In wxPerl there is just an array reference in place of {\tt n}
2180 and {\tt choices}.}
2181
2182
2183 \membersection{::wxGetSingleChoiceData}\label{wxgetsinglechoicedata}
2184
2185 \func{wxString}{wxGetSingleChoiceData}{\param{const wxString\& }{message},\\
2186 \param{const wxString\& }{caption},\\
2187 \param{const wxArrayString\& }{aChoices},\\
2188 \param{const wxString\& }{client\_data[]},\\
2189 \param{wxWindow *}{parent = NULL},\\
2190 \param{int}{ x = -1}, \param{int}{ y = -1},\\
2191 \param{bool}{ centre = true}, \param{int }{width=150}, \param{int }{height=200}}
2192
2193 \func{wxString}{wxGetSingleChoiceData}{\param{const wxString\& }{message},\\
2194 \param{const wxString\& }{caption},\\
2195 \param{int}{ n}, \param{const wxString\& }{choices[]},\\
2196 \param{const wxString\& }{client\_data[]},\\
2197 \param{wxWindow *}{parent = NULL},\\
2198 \param{int}{ x = -1}, \param{int}{ y = -1},\\
2199 \param{bool}{ centre = true}, \param{int }{width=150}, \param{int }{height=200}}
2200
2201 As {\bf wxGetSingleChoice} but takes an array of client data pointers
2202 corresponding to the strings, and returns one of these pointers or NULL if
2203 Cancel was pressed. The {\it client\_data} array must have the same number of
2204 elements as {\it choices} or {\it aChoices}!
2205
2206 \wxheading{Include files}
2207
2208 <wx/choicdlg.h>
2209
2210 \perlnote{In wxPerl there is just an array reference in place of {\tt n}
2211 and {\tt choices}, and the client data array must have the
2212 same length as the choices array.}
2213
2214
2215 \membersection{::wxIsBusy}\label{wxisbusy}
2216
2217 \func{bool}{wxIsBusy}{\void}
2218
2219 Returns true if between two \helpref{wxBeginBusyCursor}{wxbeginbusycursor} and\rtfsp
2220 \helpref{wxEndBusyCursor}{wxendbusycursor} calls.
2221
2222 See also \helpref{wxBusyCursor}{wxbusycursor}.
2223
2224 \wxheading{Include files}
2225
2226 <wx/utils.h>
2227
2228
2229 \membersection{::wxMessageBox}\label{wxmessagebox}
2230
2231 \func{int}{wxMessageBox}{\param{const wxString\& }{message}, \param{const wxString\& }{caption = ``Message"}, \param{int}{ style = wxOK},\\
2232 \param{wxWindow *}{parent = NULL}, \param{int}{ x = -1}, \param{int}{ y = -1}}
2233
2234 General purpose message dialog. {\it style} may be a bit list of the
2235 following identifiers:
2236
2237 \begin{twocollist}\itemsep=0pt
2238 \twocolitem{wxYES\_NO}{Puts Yes and No buttons on the message box. May be combined with
2239 wxCANCEL.}
2240 \twocolitem{wxCANCEL}{Puts a Cancel button on the message box. May only be combined with
2241 wxYES\_NO or wxOK.}
2242 \twocolitem{wxOK}{Puts an Ok button on the message box. May be combined with wxCANCEL.}
2243 \twocolitem{wxICON\_EXCLAMATION}{Displays an exclamation mark symbol.}
2244 \twocolitem{wxICON\_HAND}{Displays an error symbol.}
2245 \twocolitem{wxICON\_ERROR}{Displays an error symbol - the same as wxICON\_HAND.}
2246 \twocolitem{wxICON\_QUESTION}{Displays a question mark symbol.}
2247 \twocolitem{wxICON\_INFORMATION}{Displays an information symbol.}
2248 \end{twocollist}
2249
2250 The return value is one of: wxYES, wxNO, wxCANCEL, wxOK.
2251
2252 For example:
2253
2254 \begin{verbatim}
2255 ...
2256 int answer = wxMessageBox("Quit program?", "Confirm",
2257 wxYES_NO | wxCANCEL, main_frame);
2258 if (answer == wxYES)
2259 main_frame->Close();
2260 ...
2261 \end{verbatim}
2262
2263 {\it message} may contain newline characters, in which case the
2264 message will be split into separate lines, to cater for large messages.
2265
2266 \wxheading{Include files}
2267
2268 <wx/msgdlg.h>
2269
2270
2271 \membersection{::wxShowTip}\label{wxshowtip}
2272
2273 \func{bool}{wxShowTip}{\param{wxWindow *}{parent},
2274 \param{wxTipProvider *}{tipProvider},
2275 \param{bool }{showAtStartup = true}}
2276
2277 This function shows a "startup tip" to the user. The return value is the
2278 state of the `Show tips at startup' checkbox.
2279
2280 \docparam{parent}{The parent window for the modal dialog}
2281
2282 \docparam{tipProvider}{An object which is used to get the text of the tips.
2283 It may be created with the \helpref{wxCreateFileTipProvider}{wxcreatefiletipprovider} function.}
2284
2285 \docparam{showAtStartup}{Should be true if startup tips are shown, false
2286 otherwise. This is used as the initial value for "Show tips at startup"
2287 checkbox which is shown in the tips dialog.}
2288
2289 \wxheading{See also}
2290
2291 \helpref{Tips overview}{tipsoverview}
2292
2293 \wxheading{Include files}
2294
2295 <wx/tipdlg.h>
2296
2297
2298
2299
2300 \section{Math functions}\label{mathfunctions}
2301
2302 \wxheading{Include files}
2303
2304 <wx/math.h>
2305
2306
2307 \membersection{wxFinite}\label{wxfinite}
2308
2309 \func{int}{wxFinite}{\param{double }{x}}
2310
2311 Returns a non-zero value if {\it x} is neither infinite or NaN (not a number),
2312 returns 0 otherwise.
2313
2314
2315 \membersection{wxIsNaN}\label{wxisnan}
2316
2317 \func{bool}{wxIsNaN}{\param{double }{x}}
2318
2319 Returns a non-zero value if {\it x} is NaN (not a number), returns 0
2320 otherwise.
2321
2322
2323
2324
2325 \section{GDI functions}\label{gdifunctions}
2326
2327 The following are relevant to the GDI (Graphics Device Interface).
2328
2329 \wxheading{Include files}
2330
2331 <wx/gdicmn.h>
2332
2333
2334 \membersection{wxBITMAP}\label{wxbitmapmacro}
2335
2336 \func{}{wxBITMAP}{bitmapName}
2337
2338 This macro loads a bitmap from either application resources (on the platforms
2339 for which they exist, i.e. Windows and OS2) or from an XPM file. It allows to
2340 avoid using {\tt \#ifdef}s when creating bitmaps.
2341
2342 \wxheading{See also}
2343
2344 \helpref{Bitmaps and icons overview}{wxbitmapoverview},
2345 \helpref{wxICON}{wxiconmacro}
2346
2347 \wxheading{Include files}
2348
2349 <wx/gdicmn.h>
2350
2351
2352 \membersection{::wxClientDisplayRect}\label{wxclientdisplayrect}
2353
2354 \func{void}{wxClientDisplayRect}{\param{int *}{x}, \param{int *}{y},
2355 \param{int *}{width}, \param{int *}{height}}
2356
2357 \func{wxRect}{wxGetClientDisplayRect}{\void}
2358
2359 Returns the dimensions of the work area on the display. On Windows
2360 this means the area not covered by the taskbar, etc. Other platforms
2361 are currently defaulting to the whole display until a way is found to
2362 provide this info for all window managers, etc.
2363
2364
2365 \membersection{::wxColourDisplay}\label{wxcolourdisplay}
2366
2367 \func{bool}{wxColourDisplay}{\void}
2368
2369 Returns true if the display is colour, false otherwise.
2370
2371
2372 \membersection{::wxDisplayDepth}\label{wxdisplaydepth}
2373
2374 \func{int}{wxDisplayDepth}{\void}
2375
2376 Returns the depth of the display (a value of 1 denotes a monochrome display).
2377
2378
2379 \membersection{::wxDisplaySize}\label{wxdisplaysize}
2380
2381 \func{void}{wxDisplaySize}{\param{int *}{width}, \param{int *}{height}}
2382
2383 \func{wxSize}{wxGetDisplaySize}{\void}
2384
2385 Returns the display size in pixels.
2386
2387
2388 \membersection{::wxDisplaySizeMM}\label{wxdisplaysizemm}
2389
2390 \func{void}{wxDisplaySizeMM}{\param{int *}{width}, \param{int *}{height}}
2391
2392 \func{wxSize}{wxGetDisplaySizeMM}{\void}
2393
2394 Returns the display size in millimeters.
2395
2396
2397 \membersection{::wxDROP\_ICON}\label{wxdropicon}
2398
2399 \func{wxIconOrCursor}{wxDROP\_ICON}{\param{const char *}{name}}
2400
2401 This macro creates either a cursor (MSW) or an icon (elsewhere) with the given
2402 name. Under MSW, the cursor is loaded from the resource file and the icon is
2403 loaded from XPM file under other platforms.
2404
2405 This macro should be used with
2406 \helpref{wxDropSource constructor}{wxdropsourcewxdropsource}.
2407
2408 \wxheading{Include files}
2409
2410 <wx/dnd.h>
2411
2412
2413 \membersection{wxICON}\label{wxiconmacro}
2414
2415 \func{}{wxICON}{iconName}
2416
2417 This macro loads an icon from either application resources (on the platforms
2418 for which they exist, i.e. Windows and OS2) or from an XPM file. It allows to
2419 avoid using {\tt \#ifdef}s when creating icons.
2420
2421 \wxheading{See also}
2422
2423 \helpref{Bitmaps and icons overview}{wxbitmapoverview},
2424 \helpref{wxBITMAP}{wxbitmapmacro}
2425
2426 \wxheading{Include files}
2427
2428 <wx/gdicmn.h>
2429
2430
2431 \membersection{::wxMakeMetafilePlaceable}\label{wxmakemetafileplaceable}
2432
2433 \func{bool}{wxMakeMetafilePlaceable}{\param{const wxString\& }{filename}, \param{int }{minX}, \param{int }{minY},
2434 \param{int }{maxX}, \param{int }{maxY}, \param{float }{scale=1.0}}
2435
2436 Given a filename for an existing, valid metafile (as constructed using \helpref{wxMetafileDC}{wxmetafiledc})
2437 makes it into a placeable metafile by prepending a header containing the given
2438 bounding box. The bounding box may be obtained from a device context after drawing
2439 into it, using the functions wxDC::MinX, wxDC::MinY, wxDC::MaxX and wxDC::MaxY.
2440
2441 In addition to adding the placeable metafile header, this function adds
2442 the equivalent of the following code to the start of the metafile data:
2443
2444 \begin{verbatim}
2445 SetMapMode(dc, MM_ANISOTROPIC);
2446 SetWindowOrg(dc, minX, minY);
2447 SetWindowExt(dc, maxX - minX, maxY - minY);
2448 \end{verbatim}
2449
2450 This simulates the wxMM\_TEXT mapping mode, which wxWidgets assumes.
2451
2452 Placeable metafiles may be imported by many Windows applications, and can be
2453 used in RTF (Rich Text Format) files.
2454
2455 {\it scale} allows the specification of scale for the metafile.
2456
2457 This function is only available under Windows.
2458
2459
2460 \membersection{::wxSetCursor}\label{wxsetcursor}
2461
2462 \func{void}{wxSetCursor}{\param{wxCursor *}{cursor}}
2463
2464 Globally sets the cursor; only has an effect in Windows and GTK.
2465 See also \helpref{wxCursor}{wxcursor}, \helpref{wxWindow::SetCursor}{wxwindowsetcursor}.
2466
2467
2468
2469 \section{Printer settings}\label{printersettings}
2470
2471 {\bf NB:} These routines are obsolete and should no longer be used!
2472
2473 The following functions are used to control PostScript printing. Under
2474 Windows, PostScript output can only be sent to a file.
2475
2476 \wxheading{Include files}
2477
2478 <wx/dcps.h>
2479
2480
2481 \membersection{::wxGetPrinterCommand}\label{wxgetprintercommand}
2482
2483 \func{wxString}{wxGetPrinterCommand}{\void}
2484
2485 Gets the printer command used to print a file. The default is {\tt lpr}.
2486
2487
2488 \membersection{::wxGetPrinterFile}\label{wxgetprinterfile}
2489
2490 \func{wxString}{wxGetPrinterFile}{\void}
2491
2492 Gets the PostScript output filename.
2493
2494
2495 \membersection{::wxGetPrinterMode}\label{wxgetprintermode}
2496
2497 \func{int}{wxGetPrinterMode}{\void}
2498
2499 Gets the printing mode controlling where output is sent (PS\_PREVIEW, PS\_FILE or PS\_PRINTER).
2500 The default is PS\_PREVIEW.
2501
2502
2503 \membersection{::wxGetPrinterOptions}\label{wxgetprinteroptions}
2504
2505 \func{wxString}{wxGetPrinterOptions}{\void}
2506
2507 Gets the additional options for the print command (e.g. specific printer). The default is nothing.
2508
2509
2510 \membersection{::wxGetPrinterOrientation}\label{wxgetprinterorientation}
2511
2512 \func{int}{wxGetPrinterOrientation}{\void}
2513
2514 Gets the orientation (PS\_PORTRAIT or PS\_LANDSCAPE). The default is PS\_PORTRAIT.
2515
2516
2517 \membersection{::wxGetPrinterPreviewCommand}\label{wxgetprinterpreviewcommand}
2518
2519 \func{wxString}{wxGetPrinterPreviewCommand}{\void}
2520
2521 Gets the command used to view a PostScript file. The default depends on the platform.
2522
2523
2524 \membersection{::wxGetPrinterScaling}\label{wxgetprinterscaling}
2525
2526 \func{void}{wxGetPrinterScaling}{\param{float *}{x}, \param{float *}{y}}
2527
2528 Gets the scaling factor for PostScript output. The default is 1.0, 1.0.
2529
2530
2531 \membersection{::wxGetPrinterTranslation}\label{wxgetprintertranslation}
2532
2533 \func{void}{wxGetPrinterTranslation}{\param{float *}{x}, \param{float *}{y}}
2534
2535 Gets the translation (from the top left corner) for PostScript output. The default is 0.0, 0.0.
2536
2537
2538 \membersection{::wxSetPrinterCommand}\label{wxsetprintercommand}
2539
2540 \func{void}{wxSetPrinterCommand}{\param{const wxString\& }{command}}
2541
2542 Sets the printer command used to print a file. The default is {\tt lpr}.
2543
2544
2545 \membersection{::wxSetPrinterFile}\label{wxsetprinterfile}
2546
2547 \func{void}{wxSetPrinterFile}{\param{const wxString\& }{filename}}
2548
2549 Sets the PostScript output filename.
2550
2551
2552 \membersection{::wxSetPrinterMode}\label{wxsetprintermode}
2553
2554 \func{void}{wxSetPrinterMode}{\param{int }{mode}}
2555
2556 Sets the printing mode controlling where output is sent (PS\_PREVIEW, PS\_FILE or PS\_PRINTER).
2557 The default is PS\_PREVIEW.
2558
2559
2560 \membersection{::wxSetPrinterOptions}\label{wxsetprinteroptions}
2561
2562 \func{void}{wxSetPrinterOptions}{\param{const wxString\& }{options}}
2563
2564 Sets the additional options for the print command (e.g. specific printer). The default is nothing.
2565
2566
2567 \membersection{::wxSetPrinterOrientation}\label{wxsetprinterorientation}
2568
2569 \func{void}{wxSetPrinterOrientation}{\param{int}{ orientation}}
2570
2571 Sets the orientation (PS\_PORTRAIT or PS\_LANDSCAPE). The default is PS\_PORTRAIT.
2572
2573
2574 \membersection{::wxSetPrinterPreviewCommand}\label{wxsetprinterpreviewcommand}
2575
2576 \func{void}{wxSetPrinterPreviewCommand}{\param{const wxString\& }{command}}
2577
2578 Sets the command used to view a PostScript file. The default depends on the platform.
2579
2580
2581 \membersection{::wxSetPrinterScaling}\label{wxsetprinterscaling}
2582
2583 \func{void}{wxSetPrinterScaling}{\param{float }{x}, \param{float }{y}}
2584
2585 Sets the scaling factor for PostScript output. The default is 1.0, 1.0.
2586
2587
2588 \membersection{::wxSetPrinterTranslation}\label{wxsetprintertranslation}
2589
2590 \func{void}{wxSetPrinterTranslation}{\param{float }{x}, \param{float }{y}}
2591
2592 Sets the translation (from the top left corner) for PostScript output. The default is 0.0, 0.0.
2593
2594
2595
2596 \section{Clipboard functions}\label{clipsboard}
2597
2598 These clipboard functions are implemented for Windows only. The use of these functions
2599 is deprecated and the code is no longer maintained. Use the \helpref{wxClipboard}{wxclipboard}
2600 class instead.
2601
2602 \wxheading{Include files}
2603
2604 <wx/clipbrd.h>
2605
2606
2607 \membersection{::wxClipboardOpen}\label{functionwxclipboardopen}
2608
2609 \func{bool}{wxClipboardOpen}{\void}
2610
2611 Returns true if this application has already opened the clipboard.
2612
2613
2614 \membersection{::wxCloseClipboard}\label{wxcloseclipboard}
2615
2616 \func{bool}{wxCloseClipboard}{\void}
2617
2618 Closes the clipboard to allow other applications to use it.
2619
2620
2621 \membersection{::wxEmptyClipboard}\label{wxemptyclipboard}
2622
2623 \func{bool}{wxEmptyClipboard}{\void}
2624
2625 Empties the clipboard.
2626
2627
2628 \membersection{::wxEnumClipboardFormats}\label{wxenumclipboardformats}
2629
2630 \func{int}{wxEnumClipboardFormats}{\param{int}{ dataFormat}}
2631
2632 Enumerates the formats found in a list of available formats that belong
2633 to the clipboard. Each call to this function specifies a known
2634 available format; the function returns the format that appears next in
2635 the list.
2636
2637 {\it dataFormat} specifies a known format. If this parameter is zero,
2638 the function returns the first format in the list.
2639
2640 The return value specifies the next known clipboard data format if the
2641 function is successful. It is zero if the {\it dataFormat} parameter specifies
2642 the last format in the list of available formats, or if the clipboard
2643 is not open.
2644
2645 Before it enumerates the formats function, an application must open the clipboard by using the
2646 wxOpenClipboard function.
2647
2648
2649 \membersection{::wxGetClipboardData}\label{wxgetclipboarddata}
2650
2651 \func{wxObject *}{wxGetClipboardData}{\param{int}{ dataFormat}}
2652
2653 Gets data from the clipboard.
2654
2655 {\it dataFormat} may be one of:
2656
2657 \begin{itemize}\itemsep=0pt
2658 \item wxCF\_TEXT or wxCF\_OEMTEXT: returns a pointer to new memory containing a null-terminated text string.
2659 \item wxCF\_BITMAP: returns a new wxBitmap.
2660 \end{itemize}
2661
2662 The clipboard must have previously been opened for this call to succeed.
2663
2664
2665 \membersection{::wxGetClipboardFormatName}\label{wxgetclipboardformatname}
2666
2667 \func{bool}{wxGetClipboardFormatName}{\param{int}{ dataFormat}, \param{const wxString\& }{formatName}, \param{int}{ maxCount}}
2668
2669 Gets the name of a registered clipboard format, and puts it into the buffer {\it formatName} which is of maximum
2670 length {\it maxCount}. {\it dataFormat} must not specify a predefined clipboard format.
2671
2672
2673 \membersection{::wxIsClipboardFormatAvailable}\label{wxisclipboardformatavailable}
2674
2675 \func{bool}{wxIsClipboardFormatAvailable}{\param{int}{ dataFormat}}
2676
2677 Returns true if the given data format is available on the clipboard.
2678
2679
2680 \membersection{::wxOpenClipboard}\label{wxopenclipboard}
2681
2682 \func{bool}{wxOpenClipboard}{\void}
2683
2684 Opens the clipboard for passing data to it or getting data from it.
2685
2686
2687 \membersection{::wxRegisterClipboardFormat}\label{wxregisterclipboardformat}
2688
2689 \func{int}{wxRegisterClipboardFormat}{\param{const wxString\& }{formatName}}
2690
2691 Registers the clipboard data format name and returns an identifier.
2692
2693
2694 \membersection{::wxSetClipboardData}\label{wxsetclipboarddata}
2695
2696 \func{bool}{wxSetClipboardData}{\param{int}{ dataFormat}, \param{wxObject*}{ data}, \param{int}{ width}, \param{int}{ height}}
2697
2698 Passes data to the clipboard.
2699
2700 {\it dataFormat} may be one of:
2701
2702 \begin{itemize}\itemsep=0pt
2703 \item wxCF\_TEXT or wxCF\_OEMTEXT: {\it data} is a null-terminated text string.
2704 \item wxCF\_BITMAP: {\it data} is a wxBitmap.
2705 \item wxCF\_DIB: {\it data} is a wxBitmap. The bitmap is converted to a DIB (device independent bitmap).
2706 \item wxCF\_METAFILE: {\it data} is a wxMetafile. {\it width} and {\it height} are used to give recommended dimensions.
2707 \end{itemize}
2708
2709 The clipboard must have previously been opened for this call to succeed.
2710
2711
2712 \section{Miscellaneous functions}\label{miscellany}
2713
2714
2715 \membersection{wxCONCAT}\label{wxconcat}
2716
2717 \func{}{wxCONCAT}{\param{}{x}, \param{}{y}}
2718
2719 This macro returns the concatenation of two tokens \arg{x} and \arg{y}.
2720
2721
2722 \membersection{wxDYNLIB\_FUNCTION}\label{wxdynlibfunction}
2723
2724 \func{}{wxDYNLIB\_FUNCTION}{\param{}{type}, \param{}{name}, \param{}{dynlib}}
2725
2726 When loading a function from a DLL you always have to cast the returned
2727 {\tt void *} pointer to the correct type and, even more annoyingly, you have to
2728 repeat this type twice if you want to declare and define a function pointer all
2729 in one line
2730
2731 This macro makes this slightly less painful by allowing you to specify the
2732 type only once, as the first parameter, and creating a variable of this type
2733 named after the function but with {\tt pfn} prefix and initialized with the
2734 function \arg{name} from the \helpref{wxDynamicLibrary}{wxdynamiclibrary}
2735 \arg{dynlib}.
2736
2737 \wxheading{Parameters}
2738
2739 \docparam{type}{the type of the function}
2740
2741 \docparam{name}{the name of the function to load, not a string (without quotes,
2742 it is quoted automatically by the macro)}
2743
2744 \docparam{dynlib}{the library to load the function from}
2745
2746
2747
2748 \membersection{wxEXPLICIT}\label{wxexplicit}
2749
2750 {\tt wxEXPLICIT} is a macro which expands to the C++ {\tt explicit} keyword if
2751 the compiler supports it or nothing otherwise. Thus, it can be used even in the
2752 code which might have to be compiled with an old compiler without support for
2753 this language feature but still take advantage of it when it is available.
2754
2755
2756 \membersection{::wxGetKeyState}\label{wxgetkeystate}
2757
2758 \func{bool}{wxGetKeyState}{\param{wxKeyCode }{key}}
2759
2760 For normal keys, returns \true if the specified key is currently down.
2761
2762 For togglable keys (Caps Lock, Num Lock and Scroll Lock), returns
2763 \true if the key is toggled such that its LED indicator is lit. There is
2764 currently no way to test whether togglable keys are up or down.
2765
2766 Even though there are virtual key codes defined for mouse buttons, they
2767 cannot be used with this function currently.
2768
2769 \wxheading{Include files}
2770
2771 <wx/utils.h>
2772
2773
2774 \membersection{wxLL}\label{wxll}
2775
2776 \func{wxLongLong\_t}{wxLL}{\param{}{number}}
2777
2778 This macro is defined for the platforms with a native 64 bit integer type and
2779 allows to define 64 bit compile time constants:
2780
2781 \begin{verbatim}
2782 #ifdef wxLongLong_t
2783 wxLongLong_t ll = wxLL(0x1234567890abcdef);
2784 #endif
2785 \end{verbatim}
2786
2787 \wxheading{Include files}
2788
2789 <wx/longlong.h>
2790
2791 \wxheading{See also}
2792
2793 \helpref{wxULL}{wxull}, \helpref{wxLongLong}{wxlonglong}
2794
2795
2796 \membersection{wxLongLongFmtSpec}\label{wxlonglongfmtspec}
2797
2798 This macro is defined to contain the {\tt printf()} format specifier using
2799 which 64 bit integer numbers (i.e. those of type {\tt wxLongLong\_t}) can be
2800 printed. Example of using it:
2801
2802 \begin{verbatim}
2803 #ifdef wxLongLong_t
2804 wxLongLong_t ll = wxLL(0x1234567890abcdef);
2805 printf("Long long = %" wxLongLongFmtSpec "x\n", ll);
2806 #endif
2807 \end{verbatim}
2808
2809 \wxheading{See also}
2810
2811 \helpref{wxLL}{wxll}
2812
2813 \wxheading{Include files}
2814
2815 <wx/longlong.h>
2816
2817
2818 \membersection{::wxNewId}\label{wxnewid}
2819
2820 \func{long}{wxNewId}{\void}
2821
2822 Generates an integer identifier unique to this run of the program.
2823
2824 \wxheading{Include files}
2825
2826 <wx/utils.h>
2827
2828
2829 \membersection{wxON\_BLOCK\_EXIT}\label{wxonblockexit}
2830
2831 \func{}{wxON\_BLOCK\_EXIT0}{\param{}{func}}
2832 \func{}{wxON\_BLOCK\_EXIT1}{\param{}{func}, \param{}{p1}}
2833 \func{}{wxON\_BLOCK\_EXIT2}{\param{}{func}, \param{}{p1}, \param{}{p2}}
2834
2835 This family of macros allows to ensure that the global function \arg{func}
2836 with 0, 1, 2 or more parameters (up to some implementaton-defined limit) is
2837 executed on scope exit, whether due to a normal function return or because an
2838 exception has been thrown. A typical example of its usage:
2839 \begin{verbatim}
2840 void *buf = malloc(size);
2841 wxON_BLOCK_EXIT1(free, buf);
2842 \end{verbatim}
2843
2844 Please see the original article by Andrei Alexandrescu and Petru Marginean
2845 published in December 2000 issue of \emph{C/C++ Users Journal} for more
2846 details.
2847
2848 \wxheading{Include files}
2849
2850 <wx/scopeguard.h>
2851
2852 \wxheading{See also}
2853
2854 \helpref{wxON\_BLOCK\_EXIT\_OBJ}{wxonblockexitobj}
2855
2856
2857 \membersection{wxON\_BLOCK\_EXIT\_OBJ}\label{wxonblockexitobj}
2858
2859 \func{}{wxON\_BLOCK\_EXIT\_OBJ0}{\param{}{obj}, \param{}{method}}
2860 \func{}{wxON\_BLOCK\_EXIT\_OBJ1}{\param{}{obj}, \param{}{method}, \param{}{p1}}
2861 \func{}{wxON\_BLOCK\_EXIT\_OBJ2}{\param{}{obj}, \param{}{method}, \param{}{p1}, \param{}{p2}}
2862
2863 This family of macros is similar to \helpref{wxON\_BLOCK\_EXIT}{wxonblockexit}
2864 but calls a method of the given object instead of a free function.
2865
2866 \wxheading{Include files}
2867
2868 <wx/scopeguard.h>
2869
2870
2871 \membersection{::wxRegisterId}\label{wxregisterid}
2872
2873 \func{void}{wxRegisterId}{\param{long}{ id}}
2874
2875 Ensures that ids subsequently generated by {\bf NewId} do not clash with
2876 the given {\bf id}.
2877
2878 \wxheading{Include files}
2879
2880 <wx/utils.h>
2881
2882
2883 \membersection{::wxDDECleanUp}\label{wxddecleanup}
2884
2885 \func{void}{wxDDECleanUp}{\void}
2886
2887 Called when wxWidgets exits, to clean up the DDE system. This no longer needs to be
2888 called by the application.
2889
2890 See also \helpref{wxDDEInitialize}{wxddeinitialize}.
2891
2892 \wxheading{Include files}
2893
2894 <wx/dde.h>
2895
2896
2897 \membersection{::wxDDEInitialize}\label{wxddeinitialize}
2898
2899 \func{void}{wxDDEInitialize}{\void}
2900
2901 Initializes the DDE system. May be called multiple times without harm.
2902
2903 This no longer needs to be called by the application: it will be called
2904 by wxWidgets if necessary.
2905
2906 See also \helpref{wxDDEServer}{wxddeserver}, \helpref{wxDDEClient}{wxddeclient}, \helpref{wxDDEConnection}{wxddeconnection},\rtfsp
2907 \helpref{wxDDECleanUp}{wxddecleanup}.
2908
2909 \wxheading{Include files}
2910
2911 <wx/dde.h>
2912
2913
2914 \membersection{::wxEnableTopLevelWindows}\label{wxenabletoplevelwindows}
2915
2916 \func{void}{wxEnableTopLevelWindows}{\param{bool}{ enable = true}}
2917
2918 This function enables or disables all top level windows. It is used by
2919 \helpref{::wxSafeYield}{wxsafeyield}.
2920
2921 \wxheading{Include files}
2922
2923 <wx/utils.h>
2924
2925
2926 \membersection{::wxFindMenuItemId}\label{wxfindmenuitemid}
2927
2928 \func{int}{wxFindMenuItemId}{\param{wxFrame *}{frame}, \param{const wxString\& }{menuString}, \param{const wxString\& }{itemString}}
2929
2930 Find a menu item identifier associated with the given frame's menu bar.
2931
2932 \wxheading{Include files}
2933
2934 <wx/utils.h>
2935
2936
2937 \membersection{::wxFindWindowByLabel}\label{wxfindwindowbylabel}
2938
2939 \func{wxWindow *}{wxFindWindowByLabel}{\param{const wxString\& }{label}, \param{wxWindow *}{parent=NULL}}
2940
2941 {\bf NB:} This function is obsolete, please use
2942 \helpref{wxWindow::FindWindowByLabel}{wxwindowfindwindowbylabel} instead.
2943
2944 Find a window by its label. Depending on the type of window, the label may be a window title
2945 or panel item label. If {\it parent} is NULL, the search will start from all top-level
2946 frames and dialog boxes; if non-NULL, the search will be limited to the given window hierarchy.
2947 The search is recursive in both cases.
2948
2949 \wxheading{Include files}
2950
2951 <wx/utils.h>
2952
2953
2954 \membersection{::wxFindWindowByName}\label{wxfindwindowbyname}
2955
2956 \func{wxWindow *}{wxFindWindowByName}{\param{const wxString\& }{name}, \param{wxWindow *}{parent=NULL}}
2957
2958 {\bf NB:} This function is obsolete, please use
2959 \helpref{wxWindow::FindWindowByName}{wxwindowfindwindowbyname} instead.
2960
2961 Find a window by its name (as given in a window constructor or {\bf Create} function call).
2962 If {\it parent} is NULL, the search will start from all top-level
2963 frames and dialog boxes; if non-NULL, the search will be limited to the given window hierarchy.
2964 The search is recursive in both cases.
2965
2966 If no such named window is found, {\bf wxFindWindowByLabel} is called.
2967
2968 \wxheading{Include files}
2969
2970 <wx/utils.h>
2971
2972
2973 \membersection{::wxFindWindowAtPoint}\label{wxfindwindowatpoint}
2974
2975 \func{wxWindow *}{wxFindWindowAtPoint}{\param{const wxPoint\& }{pt}}
2976
2977 Find the deepest window at the given mouse position in screen coordinates,
2978 returning the window if found, or NULL if not.
2979
2980
2981 \membersection{::wxFindWindowAtPointer}\label{wxfindwindowatpointer}
2982
2983 \func{wxWindow *}{wxFindWindowAtPointer}{\param{wxPoint\& }{pt}}
2984
2985 Find the deepest window at the mouse pointer position, returning the window
2986 and current pointer position in screen coordinates.
2987
2988
2989 \membersection{::wxGetActiveWindow}\label{wxgetactivewindow}
2990
2991 \func{wxWindow *}{wxGetActiveWindow}{\void}
2992
2993 Gets the currently active window (implemented for MSW and GTK only currently,
2994 always returns \NULL in the other ports).
2995
2996 \wxheading{Include files}
2997
2998 <wx/windows.h>
2999
3000
3001 \membersection{::wxGetBatteryState}\label{wxgetbatterystate}
3002
3003 \func{wxBatteryState}{wxGetBatteryState}{\void}
3004
3005 Returns battery state as one of \texttt{wxBATTERY\_NORMAL\_STATE},
3006 \texttt{wxBATTERY\_LOW\_STATE}, \texttt{wxBATTERY\_CRITICAL\_STATE},
3007 \texttt{wxBATTERY\_SHUTDOWN\_STATE} or \texttt{wxBATTERY\_UNKNOWN\_STATE}.
3008 \texttt{wxBATTERY\_UNKNOWN\_STATE} is also the default on platforms where
3009 this feature is not implemented (currently everywhere but MS Windows).
3010
3011 \wxheading{Include files}
3012
3013 <wx/utils.h>
3014
3015
3016 \membersection{::wxGetDisplayName}\label{wxgetdisplayname}
3017
3018 \func{wxString}{wxGetDisplayName}{\void}
3019
3020 Under X only, returns the current display name. See also \helpref{wxSetDisplayName}{wxsetdisplayname}.
3021
3022 \wxheading{Include files}
3023
3024 <wx/utils.h>
3025
3026
3027 \membersection{::wxGetPowerType}\label{wxgetpowertype}
3028
3029 \func{wxPowerType}{wxGetPowerType}{\void}
3030
3031 Returns the type of power source as one of \texttt{wxPOWER\_SOCKET},
3032 \texttt{wxPOWER\_BATTERY} or \texttt{wxPOWER\_UNKNOWN}.
3033 \texttt{wxPOWER\_UNKNOWN} is also the default on platforms where this
3034 feature is not implemented (currently everywhere but MS Windows).
3035
3036 \wxheading{Include files}
3037
3038 <wx/utils.h>
3039
3040
3041 \membersection{::wxGetMousePosition}\label{wxgetmouseposition}
3042
3043 \func{wxPoint}{wxGetMousePosition}{\void}
3044
3045 Returns the mouse position in screen coordinates.
3046
3047 \wxheading{Include files}
3048
3049 <wx/utils.h>
3050
3051
3052 \membersection{::wxGetMouseState}\label{wxgetmousestate}
3053
3054 \func{wxMouseState}{wxGetMouseState}{\void}
3055
3056 Returns the current state of the mouse. Returns a wxMouseState
3057 instance that contains the current position of the mouse pointer in
3058 screen coordinants, as well as boolean values indicating the up/down
3059 status of the mouse buttons and the modifier keys.
3060
3061 \wxheading{Include files}
3062
3063 <wx/utils.h>
3064
3065 wxMouseState has the following interface:
3066
3067 \begin{verbatim}
3068 class wxMouseState
3069 {
3070 public:
3071 wxMouseState();
3072
3073 wxCoord GetX();
3074 wxCoord GetY();
3075
3076 bool LeftDown();
3077 bool MiddleDown();
3078 bool RightDown();
3079
3080 bool ControlDown();
3081 bool ShiftDown();
3082 bool AltDown();
3083 bool MetaDown();
3084 bool CmdDown();
3085
3086 void SetX(wxCoord x);
3087 void SetY(wxCoord y);
3088
3089 void SetLeftDown(bool down);
3090 void SetMiddleDown(bool down);
3091 void SetRightDown(bool down);
3092
3093 void SetControlDown(bool down);
3094 void SetShiftDown(bool down);
3095 void SetAltDown(bool down);
3096 void SetMetaDown(bool down);
3097 };
3098 \end{verbatim}
3099
3100
3101 \membersection{::wxGetResource}\label{wxgetresource}
3102
3103 \func{bool}{wxGetResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry},
3104 \param{const wxString\& *}{value}, \param{const wxString\& }{file = NULL}}
3105
3106 \func{bool}{wxGetResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry},
3107 \param{float *}{value}, \param{const wxString\& }{file = NULL}}
3108
3109 \func{bool}{wxGetResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry},
3110 \param{long *}{value}, \param{const wxString\& }{file = NULL}}
3111
3112 \func{bool}{wxGetResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry},
3113 \param{int *}{value}, \param{const wxString\& }{file = NULL}}
3114
3115 Gets a resource value from the resource database (for example, WIN.INI, or
3116 .Xdefaults). If {\it file} is NULL, WIN.INI or .Xdefaults is used,
3117 otherwise the specified file is used.
3118
3119 Under X, if an application class (wxApp::GetClassName) has been defined,
3120 it is appended to the string /usr/lib/X11/app-defaults/ to try to find
3121 an applications default file when merging all resource databases.
3122
3123 The reason for passing the result in an argument is that it
3124 can be convenient to define a default value, which gets overridden
3125 if the value exists in the resource file. It saves a separate
3126 test for that resource's existence, and it also allows
3127 the overloading of the function for different types.
3128
3129 See also \helpref{wxWriteResource}{wxwriteresource}, \helpref{wxConfigBase}{wxconfigbase}.
3130
3131 \wxheading{Include files}
3132
3133 <wx/utils.h>
3134
3135
3136 \membersection{::wxGetStockLabel}\label{wxgetstocklabel}
3137
3138 \func{wxString}{wxGetStockLabel}{\param{wxWindowID }{id}, \param{bool }{withCodes = true}, \param{const wxString\& }{accelerator = wxEmptyString}}
3139
3140 Returns label that should be used for given {\it id} element.
3141
3142 \wxheading{Parameters}
3143
3144 \docparam{id}{given id of the \helpref{wxMenuItem}{wxmenuitem}, \helpref{wxButton}{wxbutton}, \helpref{wxToolBar}{wxtoolbar} tool, etc.}
3145
3146 \docparam{withCodes}{if false then strip accelerator code from the label;
3147 usefull for getting labels without accelerator char code like for toolbar tooltip or
3148 under platforms without traditional keyboard like smartphones}
3149
3150 \docparam{accelerator}{optional accelerator string automatically added to label; useful
3151 for building labels for \helpref{wxMenuItem}{wxmenuitem}}
3152
3153 \wxheading{Include files}
3154
3155 <wx/stockitem.h>
3156
3157
3158 \membersection{::wxGetTopLevelParent}\label{wxgettoplevelparent}
3159
3160 \func{wxWindow *}{wxGetTopLevelParent}{\param{wxWindow }{*win}}
3161
3162 Returns the first top level parent of the given window, or in other words, the
3163 frame or dialog containing it, or {\tt NULL}.
3164
3165 \wxheading{Include files}
3166
3167 <wx/window.h>
3168
3169
3170 \membersection{::wxLaunchDefaultBrowser}\label{wxlaunchdefaultbrowser}
3171
3172 \func{bool}{wxLaunchDefaultBrowser}{\param{const wxString\& }{url}, \param{int }{flags = $0$}}
3173
3174 Open the \arg{url} in user's default browser. If \arg{flags} parameter contains
3175 \texttt{wxBROWSER\_NEW\_WINDOW} flag, a new window is opened for the URL
3176 (currently this is only supported under Windows).
3177
3178 Returns \true if the application was successfully launched.
3179
3180 \wxheading{Include files}
3181
3182 <wx/utils.h>
3183
3184
3185 \membersection{::wxLoadUserResource}\label{wxloaduserresource}
3186
3187 \func{wxString}{wxLoadUserResource}{\param{const wxString\& }{resourceName}, \param{const wxString\& }{resourceType=``TEXT"}}
3188
3189 Loads a user-defined Windows resource as a string. If the resource is found, the function creates
3190 a new character array and copies the data into it. A pointer to this data is returned. If unsuccessful, NULL is returned.
3191
3192 The resource must be defined in the {\tt .rc} file using the following syntax:
3193
3194 \begin{verbatim}
3195 myResource TEXT file.ext
3196 \end{verbatim}
3197
3198 where {\tt file.ext} is a file that the resource compiler can find.
3199
3200 This function is available under Windows only.
3201
3202 \wxheading{Include files}
3203
3204 <wx/utils.h>
3205
3206
3207 \membersection{::wxPostDelete}\label{wxpostdelete}
3208
3209 \func{void}{wxPostDelete}{\param{wxObject *}{object}}
3210
3211 Tells the system to delete the specified object when
3212 all other events have been processed. In some environments, it is
3213 necessary to use this instead of deleting a frame directly with the
3214 delete operator, because some GUIs will still send events to a deleted window.
3215
3216 Now obsolete: use \helpref{wxWindow::Close}{wxwindowclose} instead.
3217
3218 \wxheading{Include files}
3219
3220 <wx/utils.h>
3221
3222
3223 \membersection{::wxPostEvent}\label{wxpostevent}
3224
3225 \func{void}{wxPostEvent}{\param{wxEvtHandler *}{dest}, \param{wxEvent\& }{event}}
3226
3227 In a GUI application, this function posts {\it event} to the specified {\it dest}
3228 object using \helpref{wxEvtHandler::AddPendingEvent}{wxevthandleraddpendingevent}.
3229 Otherwise, it dispatches {\it event} immediately using
3230 \helpref{wxEvtHandler::ProcessEvent}{wxevthandlerprocessevent}.
3231 See the respective documentation for details (and caveats).
3232
3233 \wxheading{Include files}
3234
3235 <wx/app.h>
3236
3237
3238 \membersection{::wxSetDisplayName}\label{wxsetdisplayname}
3239
3240 \func{void}{wxSetDisplayName}{\param{const wxString\& }{displayName}}
3241
3242 Under X only, sets the current display name. This is the X host and display name such
3243 as ``colonsay:0.0", and the function indicates which display should be used for creating
3244 windows from this point on. Setting the display within an application allows multiple
3245 displays to be used.
3246
3247 See also \helpref{wxGetDisplayName}{wxgetdisplayname}.
3248
3249 \wxheading{Include files}
3250
3251 <wx/utils.h>
3252
3253
3254 \membersection{::wxStripMenuCodes}\label{wxstripmenucodes}
3255
3256 \func{wxString}{wxStripMenuCodes}{\param{const wxString\& }{str}, \param{int }{flags = wxStrip\_All}}
3257
3258 Strips any menu codes from \arg{str} and returns the result.
3259
3260 By default, the functions strips both the mnemonics character (\texttt{'\&'})
3261 which is used to indicate a keyboard shortkey, and the accelerators, which are
3262 used only in the menu items and are separated from the main text by the
3263 \texttt{$\backslash$t} (TAB) character. By using \arg{flags} of
3264 \texttt{wxStrip\_Mnemonics} or \texttt{wxStrip\_Accel} to strip only the former
3265 or the latter part, respectively.
3266
3267 Notice that in most cases
3268 \helpref{wxMenuItem::GetLabelFromText}{wxmenuitemgetlabelfromtext} or
3269 \helpref{wxControl::GetLabelText}{wxcontrolgetlabeltext} can be used instead.
3270
3271 \wxheading{Include files}
3272
3273 <wx/utils.h>
3274
3275
3276 \membersection{wxSTRINGIZE}\label{wxstringize}
3277
3278 \func{}{wxSTRINGIZE}{\param{}{x}}
3279
3280 Returns the string representation of the given symbol which can be either a
3281 literal or a macro (hence the advantage of using this macro instead of the
3282 standard preprocessor \texttt{\#} operator which doesn't work with macros).
3283
3284 Notice that this macro always produces a \texttt{char} string, use
3285 \helpref{wxSTRINGIZE\_T}{wxstringizet} to build a wide string Unicode build.
3286
3287 \wxheading{See also}
3288
3289 \helpref{wxCONCAT}{wxconcat}
3290
3291
3292 \membersection{wxSTRINGIZE\_T}\label{wxstringizet}
3293
3294 \func{}{wxSTRINGIZE\_T}{\param{}{x}}
3295
3296 Returns the string representation of the given symbol as either an ASCII or
3297 Unicode string, depending on the current build. This is the Unicode-friendly
3298 equivalent of \helpref{wxSTRINGIZE}{wxstringize}.
3299
3300
3301 \membersection{wxSUPPRESS\_GCC\_PRIVATE\_DTOR\_WARNING}\label{wxsuppressgccprivatedtorwarning}
3302
3303 \func{}{wxSUPPRESS\_GCC\_PRIVATE\_DTOR\_WARNING}{\param{}{name}}
3304
3305 GNU C++ compiler gives a warning for any class whose destructor is private
3306 unless it has a friend. This warning may sometimes be useful but it doesn't
3307 make sense for reference counted class which always delete themselves (hence
3308 destructor should be private) but don't necessarily have any friends, so this
3309 macro is provided to disable the warning in such case. The \arg{name} parameter
3310 should be the name of the class but is only used to construct a unique friend
3311 class name internally. Example of using the macro:
3312
3313 \begin{verbatim}
3314 class RefCounted
3315 {
3316 public:
3317 RefCounted() { m_nRef = 1; }
3318 void IncRef() { m_nRef++ ; }
3319 void DecRef() { if ( !--m_nRef ) delete this; }
3320
3321 private:
3322 ~RefCounted() { }
3323
3324 wxSUPPRESS_GCC_PRIVATE_DTOR(RefCounted)
3325 };
3326 \end{verbatim}
3327
3328 Notice that there should be no semicolon after this macro.
3329
3330
3331 \membersection{wxULL}\label{wxull}
3332
3333 \func{wxLongLong\_t}{wxULL}{\param{}{number}}
3334
3335 This macro is defined for the platforms with a native 64 bit integer type and
3336 allows to define unsigned 64 bit compile time constants:
3337
3338 \begin{verbatim}
3339 #ifdef wxLongLong_t
3340 unsigned wxLongLong_t ll = wxULL(0x1234567890abcdef);
3341 #endif
3342 \end{verbatim}
3343
3344 \wxheading{Include files}
3345
3346 <wx/longlong.h>
3347
3348 \wxheading{See also}
3349
3350 \helpref{wxLL}{wxll}, \helpref{wxLongLong}{wxlonglong}
3351
3352
3353 \membersection{wxVaCopy}\label{wxvacopy}
3354
3355 \func{void}{wxVaCopy}{\param{va\_list }{argptrDst}, \param{va\_list}{ argptrSrc}}
3356
3357 This macro is the same as the standard C99 \texttt{va\_copy} for the compilers
3358 which support it or its replacement for those that don't. It must be used to
3359 preserve the value of a \texttt{va\_list} object if you need to use it after
3360 passing it to another function because it can be modified by the latter.
3361
3362 As with \texttt{va\_start}, each call to \texttt{wxVaCopy} must have a matching
3363 \texttt{va\_end}.
3364
3365
3366 \membersection{::wxWriteResource}\label{wxwriteresource}
3367
3368 \func{bool}{wxWriteResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry},
3369 \param{const wxString\& }{value}, \param{const wxString\& }{file = NULL}}
3370
3371 \func{bool}{wxWriteResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry},
3372 \param{float }{value}, \param{const wxString\& }{file = NULL}}
3373
3374 \func{bool}{wxWriteResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry},
3375 \param{long }{value}, \param{const wxString\& }{file = NULL}}
3376
3377 \func{bool}{wxWriteResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry},
3378 \param{int }{value}, \param{const wxString\& }{file = NULL}}
3379
3380 Writes a resource value into the resource database (for example, WIN.INI, or
3381 .Xdefaults). If {\it file} is NULL, WIN.INI or .Xdefaults is used,
3382 otherwise the specified file is used.
3383
3384 Under X, the resource databases are cached until the internal function
3385 \rtfsp{\bf wxFlushResources} is called automatically on exit, when
3386 all updated resource databases are written to their files.
3387
3388 Note that it is considered bad manners to write to the .Xdefaults
3389 file under Unix, although the WIN.INI file is fair game under Windows.
3390
3391 See also \helpref{wxGetResource}{wxgetresource}, \helpref{wxConfigBase}{wxconfigbase}.
3392
3393 \wxheading{Include files}
3394
3395 <wx/utils.h>
3396
3397
3398 \membersection{\_\_WXFUNCTION\_\_}\label{wxfunction}
3399
3400 \func{}{\_\_WXFUNCTION\_\_}{\void}
3401
3402 This macro expands to the name of the current function if the compiler supports
3403 any of \texttt{\_\_FUNCTION\_\_}, \texttt{\_\_func\_\_} or equivalent variables
3404 or macros or to \NULL if none of them is available.
3405
3406
3407
3408 \section{Byte order macros}\label{byteordermacros}
3409
3410 The endian-ness issues (that is the difference between big-endian and
3411 little-endian architectures) are important for the portable programs working
3412 with the external binary data (for example, data files or data coming from
3413 network) which is usually in some fixed, platform-independent format. The
3414 macros are helpful for transforming the data to the correct format.
3415
3416
3417 \membersection{wxINTXX\_SWAP\_ALWAYS}\label{intswapalways}
3418
3419 \func{wxInt32}{wxINT32\_SWAP\_ALWAYS}{\param{wxInt32 }{value}}
3420
3421 \func{wxUint32}{wxUINT32\_SWAP\_ALWAYS}{\param{wxUint32 }{value}}
3422
3423 \func{wxInt16}{wxINT16\_SWAP\_ALWAYS}{\param{wxInt16 }{value}}
3424
3425 \func{wxUint16}{wxUINT16\_SWAP\_ALWAYS}{\param{wxUint16 }{value}}
3426
3427 These macros will swap the bytes of the {\it value} variable from little
3428 endian to big endian or vice versa unconditionally, i.e. independently of the
3429 current platform.
3430
3431
3432 \membersection{wxINTXX\_SWAP\_ON\_BE}\label{intswaponbe}
3433
3434 \func{wxInt32}{wxINT32\_SWAP\_ON\_BE}{\param{wxInt32 }{value}}
3435
3436 \func{wxUint32}{wxUINT32\_SWAP\_ON\_BE}{\param{wxUint32 }{value}}
3437
3438 \func{wxInt16}{wxINT16\_SWAP\_ON\_BE}{\param{wxInt16 }{value}}
3439
3440 \func{wxUint16}{wxUINT16\_SWAP\_ON\_BE}{\param{wxUint16 }{value}}
3441
3442 This macro will swap the bytes of the {\it value} variable from little
3443 endian to big endian or vice versa if the program is compiled on a
3444 big-endian architecture (such as Sun work stations). If the program has
3445 been compiled on a little-endian architecture, the value will be unchanged.
3446
3447 Use these macros to read data from and write data to a file that stores
3448 data in little-endian (for example Intel i386) format.
3449
3450
3451 \membersection{wxINTXX\_SWAP\_ON\_LE}\label{intswaponle}
3452
3453 \func{wxInt32}{wxINT32\_SWAP\_ON\_LE}{\param{wxInt32 }{value}}
3454
3455 \func{wxUint32}{wxUINT32\_SWAP\_ON\_LE}{\param{wxUint32 }{value}}
3456
3457 \func{wxInt16}{wxINT16\_SWAP\_ON\_LE}{\param{wxInt16 }{value}}
3458
3459 \func{wxUint16}{wxUINT16\_SWAP\_ON\_LE}{\param{wxUint16 }{value}}
3460
3461 This macro will swap the bytes of the {\it value} variable from little
3462 endian to big endian or vice versa if the program is compiled on a
3463 little-endian architecture (such as Intel PCs). If the program has
3464 been compiled on a big-endian architecture, the value will be unchanged.
3465
3466 Use these macros to read data from and write data to a file that stores
3467 data in big-endian format.
3468
3469
3470
3471 \section{RTTI functions}\label{rttimacros}
3472
3473 wxWidgets uses its own RTTI ("run-time type identification") system which
3474 predates the current standard C++ RTTI and so is kept for backwards
3475 compatibility reasons but also because it allows some things which the
3476 standard RTTI doesn't directly support (such as creating a class from its
3477 name).
3478
3479 The standard C++ RTTI can be used in the user code without any problems and in
3480 general you shouldn't need to use the functions and the macros in this section
3481 unless you are thinking of modifying or adding any wxWidgets classes.
3482
3483 \wxheading{See also}
3484
3485 \helpref{RTTI overview}{runtimeclassoverview}
3486
3487
3488 \membersection{CLASSINFO}\label{classinfo}
3489
3490 \func{wxClassInfo *}{CLASSINFO}{className}
3491
3492 Returns a pointer to the wxClassInfo object associated with this class.
3493
3494 \wxheading{Include files}
3495
3496 <wx/object.h>
3497
3498
3499 \membersection{DECLARE\_ABSTRACT\_CLASS}\label{declareabstractclass}
3500
3501 \func{}{DECLARE\_ABSTRACT\_CLASS}{className}
3502
3503 Used inside a class declaration to declare that the class should be
3504 made known to the class hierarchy, but objects of this class cannot be created
3505 dynamically. The same as DECLARE\_CLASS.
3506
3507 Example:
3508
3509 \begin{verbatim}
3510 class wxCommand: public wxObject
3511 {
3512 DECLARE_ABSTRACT_CLASS(wxCommand)
3513
3514 private:
3515 ...
3516 public:
3517 ...
3518 };
3519 \end{verbatim}
3520
3521 \wxheading{Include files}
3522
3523 <wx/object.h>
3524
3525
3526 \membersection{DECLARE\_APP}\label{declareapp}
3527
3528 \func{}{DECLARE\_APP}{className}
3529
3530 This is used in headers to create a forward declaration of the
3531 \helpref{wxGetApp}{wxgetapp} function implemented by
3532 \helpref{IMPLEMENT\_APP}{implementapp}. It creates the declaration
3533 {\tt className\& wxGetApp(void)}.
3534
3535 Example:
3536
3537 \begin{verbatim}
3538 DECLARE_APP(MyApp)
3539 \end{verbatim}
3540
3541 \wxheading{Include files}
3542
3543 <wx/app.h>
3544
3545
3546 \membersection{DECLARE\_CLASS}\label{declareclass}
3547
3548 \func{}{DECLARE\_CLASS}{className}
3549
3550 Used inside a class declaration to declare that the class should be
3551 made known to the class hierarchy, but objects of this class cannot be created
3552 dynamically. The same as DECLARE\_ABSTRACT\_CLASS.
3553
3554 \wxheading{Include files}
3555
3556 <wx/object.h>
3557
3558
3559 \membersection{DECLARE\_DYNAMIC\_CLASS}\label{declaredynamicclass}
3560
3561 \func{}{DECLARE\_DYNAMIC\_CLASS}{className}
3562
3563 Used inside a class declaration to make the class known to wxWidgets RTTI
3564 system and also declare that the objects of this class should be dynamically
3565 creatable from run-time type information. Notice that this implies that the
3566 class should have a default constructor, if this is not the case consider using
3567 \helpref{DECLARE\_CLASS}{declareclass}.
3568
3569 Example:
3570
3571 \begin{verbatim}
3572 class wxFrame: public wxWindow
3573 {
3574 DECLARE_DYNAMIC_CLASS(wxFrame)
3575
3576 private:
3577 const wxString& frameTitle;
3578 public:
3579 ...
3580 };
3581 \end{verbatim}
3582
3583 \wxheading{Include files}
3584
3585 <wx/object.h>
3586
3587
3588 \membersection{IMPLEMENT\_ABSTRACT\_CLASS}\label{implementabstractclass}
3589
3590 \func{}{IMPLEMENT\_ABSTRACT\_CLASS}{className, baseClassName}
3591
3592 Used in a C++ implementation file to complete the declaration of
3593 a class that has run-time type information. The same as IMPLEMENT\_CLASS.
3594
3595 Example:
3596
3597 \begin{verbatim}
3598 IMPLEMENT_ABSTRACT_CLASS(wxCommand, wxObject)
3599
3600 wxCommand::wxCommand(void)
3601 {
3602 ...
3603 }
3604 \end{verbatim}
3605
3606 \wxheading{Include files}
3607
3608 <wx/object.h>
3609
3610
3611 \membersection{IMPLEMENT\_ABSTRACT\_CLASS2}\label{implementabstractclass2}
3612
3613 \func{}{IMPLEMENT\_ABSTRACT\_CLASS2}{className, baseClassName1, baseClassName2}
3614
3615 Used in a C++ implementation file to complete the declaration of
3616 a class that has run-time type information and two base classes. The same as IMPLEMENT\_CLASS2.
3617
3618 \wxheading{Include files}
3619
3620 <wx/object.h>
3621
3622
3623 \membersection{IMPLEMENT\_APP}\label{implementapp}
3624
3625 \func{}{IMPLEMENT\_APP}{className}
3626
3627 This is used in the application class implementation file to make the application class known to
3628 wxWidgets for dynamic construction. You use this instead of
3629
3630 Old form:
3631
3632 \begin{verbatim}
3633 MyApp myApp;
3634 \end{verbatim}
3635
3636 New form:
3637
3638 \begin{verbatim}
3639 IMPLEMENT_APP(MyApp)
3640 \end{verbatim}
3641
3642 See also \helpref{DECLARE\_APP}{declareapp}.
3643
3644 \wxheading{Include files}
3645
3646 <wx/app.h>
3647
3648
3649 \membersection{IMPLEMENT\_CLASS}\label{implementclass}
3650
3651 \func{}{IMPLEMENT\_CLASS}{className, baseClassName}
3652
3653 Used in a C++ implementation file to complete the declaration of
3654 a class that has run-time type information. The same as IMPLEMENT\_ABSTRACT\_CLASS.
3655
3656 \wxheading{Include files}
3657
3658 <wx/object.h>
3659
3660
3661 \membersection{IMPLEMENT\_CLASS2}\label{implementclass2}
3662
3663 \func{}{IMPLEMENT\_CLASS2}{className, baseClassName1, baseClassName2}
3664
3665 Used in a C++ implementation file to complete the declaration of a
3666 class that has run-time type information and two base classes. The
3667 same as IMPLEMENT\_ABSTRACT\_CLASS2.
3668
3669 \wxheading{Include files}
3670
3671 <wx/object.h>
3672
3673
3674 \membersection{IMPLEMENT\_DYNAMIC\_CLASS}\label{implementdynamicclass}
3675
3676 \func{}{IMPLEMENT\_DYNAMIC\_CLASS}{className, baseClassName}
3677
3678 Used in a C++ implementation file to complete the declaration of
3679 a class that has run-time type information, and whose instances
3680 can be created dynamically.
3681
3682 Example:
3683
3684 \begin{verbatim}
3685 IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxWindow)
3686
3687 wxFrame::wxFrame(void)
3688 {
3689 ...
3690 }
3691 \end{verbatim}
3692
3693 \wxheading{Include files}
3694
3695 <wx/object.h>
3696
3697
3698 \membersection{IMPLEMENT\_DYNAMIC\_CLASS2}\label{implementdynamicclass2}
3699
3700 \func{}{IMPLEMENT\_DYNAMIC\_CLASS2}{className, baseClassName1, baseClassName2}
3701
3702 Used in a C++ implementation file to complete the declaration of
3703 a class that has run-time type information, and whose instances
3704 can be created dynamically. Use this for classes derived from two
3705 base classes.
3706
3707 \wxheading{Include files}
3708
3709 <wx/object.h>
3710
3711
3712 \membersection{wxConstCast}\label{wxconstcast}
3713
3714 \func{classname *}{wxConstCast}{ptr, classname}
3715
3716 This macro expands into {\tt const\_cast<classname *>(ptr)} if the compiler
3717 supports {\it const\_cast} or into an old, C-style cast, otherwise.
3718
3719 \wxheading{See also}
3720
3721 \helpref{wx\_const\_cast}{wxconstcastraw}\\
3722 \helpref{wxDynamicCast}{wxdynamiccast}\\
3723 \helpref{wxStaticCast}{wxstaticcast}
3724
3725
3726 \membersection{::wxCreateDynamicObject}\label{wxcreatedynamicobject}
3727
3728 \func{wxObject *}{wxCreateDynamicObject}{\param{const wxString\& }{className}}
3729
3730 Creates and returns an object of the given class, if the class has been
3731 registered with the dynamic class system using DECLARE... and IMPLEMENT... macros.
3732
3733
3734 \membersection{WXDEBUG\_NEW}\label{debugnew}
3735
3736 \func{}{WXDEBUG\_NEW}{arg}
3737
3738 This is defined in debug mode to be call the redefined new operator
3739 with filename and line number arguments. The definition is:
3740
3741 \begin{verbatim}
3742 #define WXDEBUG_NEW new(__FILE__,__LINE__)
3743 \end{verbatim}
3744
3745 In non-debug mode, this is defined as the normal new operator.
3746
3747 \wxheading{Include files}
3748
3749 <wx/object.h>
3750
3751
3752 \membersection{wxDynamicCast}\label{wxdynamiccast}
3753
3754 \func{classname *}{wxDynamicCast}{ptr, classname}
3755
3756 This macro returns the pointer {\it ptr} cast to the type {\it classname *} if
3757 the pointer is of this type (the check is done during the run-time) or
3758 {\tt NULL} otherwise. Usage of this macro is preferred over obsoleted
3759 wxObject::IsKindOf() function.
3760
3761 The {\it ptr} argument may be {\tt NULL}, in which case {\tt NULL} will be
3762 returned.
3763
3764 Example:
3765
3766 \begin{verbatim}
3767 wxWindow *win = wxWindow::FindFocus();
3768 wxTextCtrl *text = wxDynamicCast(win, wxTextCtrl);
3769 if ( text )
3770 {
3771 // a text control has the focus...
3772 }
3773 else
3774 {
3775 // no window has the focus or it is not a text control
3776 }
3777 \end{verbatim}
3778
3779 \wxheading{See also}
3780
3781 \helpref{RTTI overview}{runtimeclassoverview}\\
3782 \helpref{wxDynamicCastThis}{wxdynamiccastthis}\\
3783 \helpref{wxConstCast}{wxconstcast}\\
3784 \helpref{wxStaticCast}{wxstaticcast}
3785
3786
3787 \membersection{wxDynamicCastThis}\label{wxdynamiccastthis}
3788
3789 \func{classname *}{wxDynamicCastThis}{classname}
3790
3791 This macro is equivalent to {\tt wxDynamicCast(this, classname)} but the
3792 latter provokes spurious compilation warnings from some compilers (because it
3793 tests whether {\tt this} pointer is non-{\tt NULL} which is always true), so
3794 this macro should be used to avoid them.
3795
3796 \wxheading{See also}
3797
3798 \helpref{wxDynamicCast}{wxdynamiccast}
3799
3800
3801 \membersection{wxStaticCast}\label{wxstaticcast}
3802
3803 \func{classname *}{wxStaticCast}{ptr, classname}
3804
3805 This macro checks that the cast is valid in debug mode (an assert failure will
3806 result if {\tt wxDynamicCast(ptr, classname) == NULL}) and then returns the
3807 result of executing an equivalent of {\tt static\_cast<classname *>(ptr)}.
3808
3809 \wxheading{See also}
3810
3811 \helpref{wx\_static\_cast}{wxstaticcastraw}\\
3812 \helpref{wxDynamicCast}{wxdynamiccast}\\
3813 \helpref{wxConstCast}{wxconstcast}
3814
3815
3816 \membersection{wx\_const\_cast}\label{wxconstcastraw}
3817
3818 \func{T}{wx\_const\_cast}{T, x}
3819
3820 Same as \texttt{const\_cast<T>(x)} if the compiler supports const cast or
3821 \texttt{(T)x} for old compilers. Unlike \helpref{wxConstCast}{wxconstcast},
3822 the cast it to the type \arg{T} and not to \texttt{T *} and also the order of
3823 arguments is the same as for the standard cast.
3824
3825 \wxheading{See also}
3826
3827 \helpref{wx\_reinterpret\_cast}{wxreinterpretcastraw},\\
3828 \helpref{wx\_static\_cast}{wxstaticcastraw}
3829
3830
3831 \membersection{wx\_reinterpret\_cast}\label{wxreinterpretcastraw}
3832
3833 \func{T}{wx\_reinterpret\_cast}{T, x}
3834
3835 Same as \texttt{reinterpret\_cast<T>(x)} if the compiler supports reinterpret cast or
3836 \texttt{(T)x} for old compilers.
3837
3838 \wxheading{See also}
3839
3840 \helpref{wx\_const\_cast}{wxconstcastraw},\\
3841 \helpref{wx\_static\_cast}{wxstaticcastraw}
3842
3843
3844 \membersection{wx\_static\_cast}\label{wxstaticcastraw}
3845
3846 \func{T}{wx\_static\_cast}{T, x}
3847
3848 Same as \texttt{static\_cast<T>(x)} if the compiler supports static cast or
3849 \texttt{(T)x} for old compilers. Unlike \helpref{wxStaticCast}{wxstaticcast},
3850 there are no checks being done and the meaning of the macro arguments is exactly
3851 the same as for the standard static cast, i.e. \arg{T} is the full type name and
3852 star is not appended to it.
3853
3854 \wxheading{See also}
3855
3856 \helpref{wx\_const\_cast}{wxconstcastraw},\\
3857 \helpref{wx\_reinterpret\_cast}{wxreinterpretcastraw},\\
3858 \helpref{wx\_truncate\_cast}{wxtruncatecast}
3859
3860
3861 \membersection{wx\_truncate\_cast}\label{wxtruncatecast}
3862
3863 \func{T}{wx\_truncate\_cast}{T, x}
3864
3865 This case doesn't correspond to any standard cast but exists solely to make
3866 casts which possibly result in a truncation of an integer value more readable.
3867
3868 \wxheading{See also}
3869
3870 \helpref{wx\_static\_cast}{wxstaticcastraw}
3871
3872
3873 \section{Log functions}\label{logfunctions}
3874
3875 These functions provide a variety of logging functions: see \helpref{Log classes overview}{wxlogoverview} for
3876 further information. The functions use (implicitly) the currently active log
3877 target, so their descriptions here may not apply if the log target is not the
3878 standard one (installed by wxWidgets in the beginning of the program).
3879
3880 \wxheading{Include files}
3881
3882 <wx/log.h>
3883
3884
3885 \membersection{::wxDebugMsg}\label{wxdebugmsg}
3886
3887 \func{void}{wxDebugMsg}{\param{const wxString\& }{fmt}, \param{...}{}}
3888
3889 {\bf NB:} This function is now obsolete, replaced by \helpref{Log
3890 functions}{logfunctions} and \helpref{wxLogDebug}{wxlogdebug} in particular.
3891
3892 Display a debugging message; under Windows, this will appear on the
3893 debugger command window, and under Unix, it will be written to standard
3894 error.
3895
3896 The syntax is identical to {\bf printf}: pass a format string and a
3897 variable list of arguments.
3898
3899 {\bf Tip:} under Windows, if your application crashes before the
3900 message appears in the debugging window, put a wxYield call after
3901 each wxDebugMsg call. wxDebugMsg seems to be broken under WIN32s
3902 (at least for Watcom C++): preformat your messages and use OutputDebugString
3903 instead.
3904
3905 \wxheading{Include files}
3906
3907 <wx/utils.h>
3908
3909
3910 \membersection{::wxError}\label{wxerror}
3911
3912 \func{void}{wxError}{\param{const wxString\& }{msg}, \param{const wxString\& }{title = "wxWidgets Internal Error"}}
3913
3914 {\bf NB:} This function is now obsolete, please use \helpref{wxLogError}{wxlogerror}
3915 instead.
3916
3917 Displays {\it msg} and continues. This writes to standard error under
3918 Unix, and pops up a message box under Windows. Used for internal
3919 wxWidgets errors. See also \helpref{wxFatalError}{wxfatalerror}.
3920
3921 \wxheading{Include files}
3922
3923 <wx/utils.h>
3924
3925
3926 \membersection{::wxFatalError}\label{wxfatalerror}
3927
3928 \func{void}{wxFatalError}{\param{const wxString\& }{msg}, \param{const wxString\& }{title = "wxWidgets Fatal Error"}}
3929
3930 {\bf NB:} This function is now obsolete, please use
3931 \helpref{wxLogFatalError}{wxlogfatalerror} instead.
3932
3933 Displays {\it msg} and exits. This writes to standard error under Unix,
3934 and pops up a message box under Windows. Used for fatal internal
3935 wxWidgets errors. See also \helpref{wxError}{wxerror}.
3936
3937 \wxheading{Include files}
3938
3939 <wx/utils.h>
3940
3941
3942 \membersection{::wxLogError}\label{wxlogerror}
3943
3944 \func{void}{wxLogError}{\param{const char *}{formatString}, \param{...}{}}
3945
3946 \func{void}{wxVLogError}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
3947
3948 The functions to use for error messages, i.e. the messages that must be shown
3949 to the user. The default processing is to pop up a message box to inform the
3950 user about it.
3951
3952
3953 \membersection{::wxLogFatalError}\label{wxlogfatalerror}
3954
3955 \func{void}{wxLogFatalError}{\param{const char *}{formatString}, \param{...}{}}
3956
3957 \func{void}{wxVLogFatalError}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
3958
3959 Like \helpref{wxLogError}{wxlogerror}, but also
3960 terminates the program with the exit code 3. Using {\it abort()} standard
3961 function also terminates the program with this exit code.
3962
3963
3964 \membersection{::wxLogWarning}\label{wxlogwarning}
3965
3966 \func{void}{wxLogWarning}{\param{const char *}{formatString}, \param{...}{}}
3967
3968 \func{void}{wxVLogWarning}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
3969
3970 For warnings - they are also normally shown to the user, but don't interrupt
3971 the program work.
3972
3973
3974 \membersection{::wxLogMessage}\label{wxlogmessage}
3975
3976 \func{void}{wxLogMessage}{\param{const char *}{formatString}, \param{...}{}}
3977
3978 \func{void}{wxVLogMessage}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
3979
3980 For all normal, informational messages. They also appear in a message box by
3981 default (but it can be changed).
3982
3983 \membersection{::wxLogVerbose}\label{wxlogverbose}
3984
3985 \func{void}{wxLogVerbose}{\param{const char *}{formatString}, \param{...}{}}
3986
3987 \func{void}{wxVLogVerbose}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
3988
3989 For verbose output. Normally, it is suppressed, but
3990 might be activated if the user wishes to know more details about the program
3991 progress (another, but possibly confusing name for the same function is {\bf wxLogInfo}).
3992
3993
3994 \membersection{::wxLogStatus}\label{wxlogstatus}
3995
3996 \func{void}{wxLogStatus}{\param{wxFrame *}{frame}, \param{const char *}{formatString}, \param{...}{}}
3997
3998 \func{void}{wxVLogStatus}{\param{wxFrame *}{frame}, \param{const char *}{formatString}, \param{va\_list }{argPtr}}
3999
4000 \func{void}{wxLogStatus}{\param{const char *}{formatString}, \param{...}{}}
4001
4002 \func{void}{wxVLogStatus}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
4003
4004 Messages logged by these functions will appear in the statusbar of the {\it
4005 frame} or of the top level application window by default (i.e. when using
4006 the second version of the functions).
4007
4008 If the target frame doesn't have a statusbar, the message will be lost.
4009
4010
4011 \membersection{::wxLogSysError}\label{wxlogsyserror}
4012
4013 \func{void}{wxLogSysError}{\param{const char *}{formatString}, \param{...}{}}
4014
4015 \func{void}{wxVLogSysError}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
4016
4017 Mostly used by wxWidgets itself, but might be handy for logging errors after
4018 system call (API function) failure. It logs the specified message text as well
4019 as the last system error code ({\it errno} or {\it ::GetLastError()} depending
4020 on the platform) and the corresponding error message. The second form
4021 of this function takes the error code explicitly as the first argument.
4022
4023 \wxheading{See also}
4024
4025 \helpref{wxSysErrorCode}{wxsyserrorcode},
4026 \helpref{wxSysErrorMsg}{wxsyserrormsg}
4027
4028
4029 \membersection{::wxLogDebug}\label{wxlogdebug}
4030
4031 \func{void}{wxLogDebug}{\param{const char *}{formatString}, \param{...}{}}
4032
4033 \func{void}{wxVLogDebug}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
4034
4035 The right functions for debug output. They only do something in debug
4036 mode (when the preprocessor symbol \_\_WXDEBUG\_\_ is defined) and expand to
4037 nothing in release mode (otherwise).
4038
4039
4040 \membersection{::wxLogTrace}\label{wxlogtrace}
4041
4042 \func{void}{wxLogTrace}{\param{const char *}{formatString}, \param{...}{}}
4043
4044 \func{void}{wxVLogTrace}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
4045
4046 \func{void}{wxLogTrace}{\param{const char *}{mask}, \param{const char *}{formatString}, \param{...}{}}
4047
4048 \func{void}{wxVLogTrace}{\param{const char *}{mask}, \param{const char *}{formatString}, \param{va\_list }{argPtr}}
4049
4050 \func{void}{wxLogTrace}{\param{wxTraceMask}{ mask}, \param{const char *}{formatString}, \param{...}{}}
4051
4052 \func{void}{wxVLogTrace}{\param{wxTraceMask}{ mask}, \param{const char *}{formatString}, \param{va\_list }{argPtr}}
4053
4054 As {\bf wxLogDebug}, trace functions only do something in debug build and
4055 expand to nothing in the release one. The reason for making
4056 it a separate function from it is that usually there are a lot of trace
4057 messages, so it might make sense to separate them from other debug messages.
4058
4059 The trace messages also usually can be separated into different categories and
4060 the second and third versions of this function only log the message if the
4061 {\it mask} which it has is currently enabled in \helpref{wxLog}{wxlog}. This
4062 allows to selectively trace only some operations and not others by changing
4063 the value of the trace mask (possible during the run-time).
4064
4065 For the second function (taking a string mask), the message is logged only if
4066 the mask has been previously enabled by the call to
4067 \helpref{AddTraceMask}{wxlogaddtracemask} or by setting
4068 \helpref{{\tt WXTRACE} environment variable}{envvars}.
4069 The predefined string trace masks
4070 used by wxWidgets are:
4071
4072 \begin{itemize}\itemsep=0pt
4073 \item wxTRACE\_MemAlloc: trace memory allocation (new/delete)
4074 \item wxTRACE\_Messages: trace window messages/X callbacks
4075 \item wxTRACE\_ResAlloc: trace GDI resource allocation
4076 \item wxTRACE\_RefCount: trace various ref counting operations
4077 \item wxTRACE\_OleCalls: trace OLE method calls (Win32 only)
4078 \end{itemize}
4079
4080 {\bf Caveats:} since both the mask and the format string are strings,
4081 this might lead to function signature confusion in some cases:
4082 if you intend to call the format string only version of wxLogTrace,
4083 then add a \%s format string parameter and then supply a second string parameter for that \%s, the string mask version of wxLogTrace will erroneously get called instead, since you are supplying two string parameters to the function.
4084 In this case you'll unfortunately have to avoid having two leading
4085 string parameters, e.g. by adding a bogus integer (with its \%d format string).
4086
4087 The third version of the function only logs the message if all the bits
4088 corresponding to the {\it mask} are set in the wxLog trace mask which can be
4089 set by \helpref{SetTraceMask}{wxlogsettracemask}. This version is less
4090 flexible than the previous one because it doesn't allow defining the user
4091 trace masks easily - this is why it is deprecated in favour of using string
4092 trace masks.
4093
4094 \begin{itemize}\itemsep=0pt
4095 \item wxTraceMemAlloc: trace memory allocation (new/delete)
4096 \item wxTraceMessages: trace window messages/X callbacks
4097 \item wxTraceResAlloc: trace GDI resource allocation
4098 \item wxTraceRefCount: trace various ref counting operations
4099 \item wxTraceOleCalls: trace OLE method calls (Win32 only)
4100 \end{itemize}
4101
4102
4103 \membersection{::wxSafeShowMessage}\label{wxsafeshowmessage}
4104
4105 \func{void}{wxSafeShowMessage}{\param{const wxString\& }{title}, \param{const wxString\& }{text}}
4106
4107 This function shows a message to the user in a safe way and should be safe to
4108 call even before the application has been initialized or if it is currently in
4109 some other strange state (for example, about to crash). Under Windows this
4110 function shows a message box using a native dialog instead of
4111 \helpref{wxMessageBox}{wxmessagebox} (which might be unsafe to call), elsewhere
4112 it simply prints the message to the standard output using the title as prefix.
4113
4114 \wxheading{Parameters}
4115
4116 \docparam{title}{The title of the message box shown to the user or the prefix
4117 of the message string}
4118
4119 \docparam{text}{The text to show to the user}
4120
4121 \wxheading{See also}
4122
4123 \helpref{wxLogFatalError}{wxlogfatalerror}
4124
4125 \wxheading{Include files}
4126
4127 <wx/log.h>
4128
4129
4130 \membersection{::wxSysErrorCode}\label{wxsyserrorcode}
4131
4132 \func{unsigned long}{wxSysErrorCode}{\void}
4133
4134 Returns the error code from the last system call. This function uses
4135 {\tt errno} on Unix platforms and {\tt GetLastError} under Win32.
4136
4137 \wxheading{See also}
4138
4139 \helpref{wxSysErrorMsg}{wxsyserrormsg},
4140 \helpref{wxLogSysError}{wxlogsyserror}
4141
4142
4143 \membersection{::wxSysErrorMsg}\label{wxsyserrormsg}
4144
4145 \func{const wxChar *}{wxSysErrorMsg}{\param{unsigned long }{errCode = 0}}
4146
4147 Returns the error message corresponding to the given system error code. If
4148 {\it errCode} is $0$ (default), the last error code (as returned by
4149 \helpref{wxSysErrorCode}{wxsyserrorcode}) is used.
4150
4151 \wxheading{See also}
4152
4153 \helpref{wxSysErrorCode}{wxsyserrorcode},
4154 \helpref{wxLogSysError}{wxlogsyserror}
4155
4156
4157 \membersection{WXTRACE}\label{trace}
4158
4159 \wxheading{Include files}
4160
4161 <wx/object.h>
4162
4163 \func{}{WXTRACE}{formatString, ...}
4164
4165 {\bf NB:} This macro is now obsolete, replaced by \helpref{Log functions}{logfunctions}.
4166
4167 Calls wxTrace with printf-style variable argument syntax. Output
4168 is directed to the current output stream (see \helpref{wxDebugContext}{wxdebugcontextoverview}).
4169
4170 \wxheading{Include files}
4171
4172 <wx/memory.h>
4173
4174
4175 \membersection{WXTRACELEVEL}\label{tracelevel}
4176
4177 \func{}{WXTRACELEVEL}{level, formatString, ...}
4178
4179 {\bf NB:} This function is now obsolete, replaced by \helpref{Log functions}{logfunctions}.
4180
4181 Calls wxTraceLevel with printf-style variable argument syntax. Output
4182 is directed to the current output stream (see \helpref{wxDebugContext}{wxdebugcontextoverview}).
4183 The first argument should be the level at which this information is appropriate.
4184 It will only be output if the level returned by wxDebugContext::GetLevel is equal to or greater than
4185 this value.
4186
4187 \wxheading{Include files}
4188
4189 <wx/memory.h>
4190
4191
4192 \membersection{::wxTrace}\label{wxtrace}
4193
4194 \func{void}{wxTrace}{\param{const wxString\& }{fmt}, \param{...}{}}
4195
4196 {\bf NB:} This function is now obsolete, replaced by \helpref{Log functions}{logfunctions}.
4197
4198 Takes printf-style variable argument syntax. Output
4199 is directed to the current output stream (see \helpref{wxDebugContext}{wxdebugcontextoverview}).
4200
4201 \wxheading{Include files}
4202
4203 <wx/memory.h>
4204
4205
4206 \membersection{::wxTraceLevel}\label{wxtracelevel}
4207
4208 \func{void}{wxTraceLevel}{\param{int}{ level}, \param{const wxString\& }{fmt}, \param{...}{}}
4209
4210 {\bf NB:} This function is now obsolete, replaced by \helpref{Log functions}{logfunctions}.
4211
4212 Takes printf-style variable argument syntax. Output
4213 is directed to the current output stream (see \helpref{wxDebugContext}{wxdebugcontextoverview}).
4214 The first argument should be the level at which this information is appropriate.
4215 It will only be output if the level returned by wxDebugContext::GetLevel is equal to or greater than
4216 this value.
4217
4218 \wxheading{Include files}
4219
4220 <wx/memory.h>
4221
4222
4223
4224 \section{Time functions}\label{timefunctions}
4225
4226 The functions in this section deal with getting the current time and
4227 starting/stopping the global timers. Please note that the timer functions are
4228 deprecated because they work with one global timer only and
4229 \helpref{wxTimer}{wxtimer} and/or \helpref{wxStopWatch}{wxstopwatch} classes
4230 should be used instead. For retrieving the current time, you may also use
4231 \helpref{wxDateTime::Now}{wxdatetimenow} or
4232 \helpref{wxDateTime::UNow}{wxdatetimeunow} methods.
4233
4234
4235 \membersection{::wxGetElapsedTime}\label{wxgetelapsedtime}
4236
4237 \func{long}{wxGetElapsedTime}{\param{bool}{ resetTimer = true}}
4238
4239 Gets the time in milliseconds since the last \helpref{::wxStartTimer}{wxstarttimer}.
4240
4241 If {\it resetTimer} is true (the default), the timer is reset to zero
4242 by this call.
4243
4244 See also \helpref{wxTimer}{wxtimer}.
4245
4246 \wxheading{Include files}
4247
4248 <wx/timer.h>
4249
4250
4251 \membersection{::wxGetLocalTime}\label{wxgetlocaltime}
4252
4253 \func{long}{wxGetLocalTime}{\void}
4254
4255 Returns the number of seconds since local time 00:00:00 Jan 1st 1970.
4256
4257 \wxheading{See also}
4258
4259 \helpref{wxDateTime::Now}{wxdatetimenow}
4260
4261 \wxheading{Include files}
4262
4263 <wx/timer.h>
4264
4265
4266 \membersection{::wxGetLocalTimeMillis}\label{wxgetlocaltimemillis}
4267
4268 \func{wxLongLong}{wxGetLocalTimeMillis}{\void}
4269
4270 Returns the number of milliseconds since local time 00:00:00 Jan 1st 1970.
4271
4272 \wxheading{See also}
4273
4274 \helpref{wxDateTime::Now}{wxdatetimenow},\\
4275 \helpref{wxLongLong}{wxlonglong}
4276
4277 \wxheading{Include files}
4278
4279 <wx/timer.h>
4280
4281
4282 \membersection{::wxGetUTCTime}\label{wxgetutctime}
4283
4284 \func{long}{wxGetUTCTime}{\void}
4285
4286 Returns the number of seconds since GMT 00:00:00 Jan 1st 1970.
4287
4288 \wxheading{See also}
4289
4290 \helpref{wxDateTime::Now}{wxdatetimenow}
4291
4292 \wxheading{Include files}
4293
4294 <wx/timer.h>
4295
4296
4297 \membersection{::wxMicroSleep}\label{wxmicrosleep}
4298
4299 \func{void}{wxMicroSleep}{\param{unsigned long}{ microseconds}}
4300
4301 Sleeps for the specified number of microseconds. The microsecond resolution may
4302 not, in fact, be available on all platforms (currently only Unix platforms with
4303 nanosleep(2) may provide it) in which case this is the same as
4304 \helpref{wxMilliSleep}{wxmillisleep}(\arg{microseconds}$/1000$).
4305
4306 \wxheading{Include files}
4307
4308 <wx/utils.h>
4309
4310
4311 \membersection{::wxMilliSleep}\label{wxmillisleep}
4312
4313 \func{void}{wxMilliSleep}{\param{unsigned long}{ milliseconds}}
4314
4315 Sleeps for the specified number of milliseconds. Notice that usage of this
4316 function is encouraged instead of calling usleep(3) directly because the
4317 standard usleep() function is not MT safe.
4318
4319 \wxheading{Include files}
4320
4321 <wx/utils.h>
4322
4323
4324 \membersection{::wxNow}\label{wxnow}
4325
4326 \func{wxString}{wxNow}{\void}
4327
4328 Returns a string representing the current date and time.
4329
4330 \wxheading{Include files}
4331
4332 <wx/utils.h>
4333
4334
4335 \membersection{::wxSleep}\label{wxsleep}
4336
4337 \func{void}{wxSleep}{\param{int}{ secs}}
4338
4339 Sleeps for the specified number of seconds.
4340
4341 \wxheading{Include files}
4342
4343 <wx/utils.h>
4344
4345
4346 \membersection{::wxStartTimer}\label{wxstarttimer}
4347
4348 \func{void}{wxStartTimer}{\void}
4349
4350 Starts a stopwatch; use \helpref{::wxGetElapsedTime}{wxgetelapsedtime} to get the elapsed time.
4351
4352 See also \helpref{wxTimer}{wxtimer}.
4353
4354 \wxheading{Include files}
4355
4356 <wx/timer.h>
4357
4358
4359 \membersection{::wxUsleep}\label{wxusleep}
4360
4361 \func{void}{wxUsleep}{\param{unsigned long}{ milliseconds}}
4362
4363 This function is deprecated because its name is misleading: notice that the
4364 argument is in milliseconds, not microseconds. Please use either
4365 \helpref{wxMilliSleep}{wxmillisleep} or \helpref{wxMicroSleep}{wxmicrosleep}
4366 depending on the resolution you need.
4367
4368
4369
4370 \section{Debugging macros and functions}\label{debugmacros}
4371
4372 Useful macros and functions for error checking and defensive programming.
4373 wxWidgets defines three families of the assert-like macros:
4374 the wxASSERT and wxFAIL macros only do anything if \_\_WXDEBUG\_\_ is defined
4375 (in other words, in the debug build) but disappear completely in the release
4376 build. On the other hand, the wxCHECK macros stay event in release builds but a
4377 check failure doesn't generate any user-visible effects then. Finally, the
4378 compile time assertions don't happen during the run-time but result in the
4379 compilation error messages if the condition they check fail.
4380
4381 \wxheading{Include files}
4382
4383 <wx/debug.h>
4384
4385
4386 \membersection{::wxOnAssert}\label{wxonassert}
4387
4388 \func{void}{wxOnAssert}{\param{const char *}{fileName}, \param{int}{ lineNumber}, \param{const char *}{func}, \param{const char *}{cond}, \param{const char *}{msg = NULL}}
4389
4390 This function is called whenever one of debugging macros fails (i.e. condition
4391 is false in an assertion). It is only defined in the debug mode, in release
4392 builds the \helpref{wxCHECK}{wxcheck} failures don't result in anything.
4393
4394 To override the default behaviour in the debug builds which is to show the user
4395 a dialog asking whether he wants to abort the program, continue or continue
4396 ignoring any subsequent assert failures, you may override
4397 \helpref{wxApp::OnAssertFailure}{wxapponassertfailure} which is called by this function if
4398 the global application object exists.
4399
4400
4401 \membersection{wxASSERT}\label{wxassert}
4402
4403 \func{}{wxASSERT}{\param{}{condition}}
4404
4405 Assert macro. An error message will be generated if the condition is false in
4406 debug mode, but nothing will be done in the release build.
4407
4408 Please note that the condition in wxASSERT() should have no side effects
4409 because it will not be executed in release mode at all.
4410
4411 \wxheading{See also}
4412
4413 \helpref{wxASSERT\_MSG}{wxassertmsg},\\
4414 \helpref{wxCOMPILE\_TIME\_ASSERT}{wxcompiletimeassert}
4415
4416
4417 \membersection{wxASSERT\_MIN\_BITSIZE}\label{wxassertminbitsize}
4418
4419 \func{}{wxASSERT\_MIN\_BITSIZE}{\param{}{type}, \param{}{size}}
4420
4421 This macro results in a
4422 \helpref{compile time assertion failure}{wxcompiletimeassert} if the size
4423 of the given type {\it type} is less than {\it size} bits.
4424
4425 You may use it like this, for example:
4426
4427 \begin{verbatim}
4428 // we rely on the int being able to hold values up to 2^32
4429 wxASSERT_MIN_BITSIZE(int, 32);
4430
4431 // can't work with the platforms using UTF-8 for wchar_t
4432 wxASSERT_MIN_BITSIZE(wchar_t, 16);
4433 \end{verbatim}
4434
4435
4436 \membersection{wxASSERT\_MSG}\label{wxassertmsg}
4437
4438 \func{}{wxASSERT\_MSG}{\param{}{condition}, \param{}{msg}}
4439
4440 Assert macro with message. An error message will be generated if the condition is false.
4441
4442 \wxheading{See also}
4443
4444 \helpref{wxASSERT}{wxassert},\\
4445 \helpref{wxCOMPILE\_TIME\_ASSERT}{wxcompiletimeassert}
4446
4447
4448 \membersection{wxCOMPILE\_TIME\_ASSERT}\label{wxcompiletimeassert}
4449
4450 \func{}{wxCOMPILE\_TIME\_ASSERT}{\param{}{condition}, \param{}{msg}}
4451
4452 Using {\tt wxCOMPILE\_TIME\_ASSERT} results in a compilation error if the
4453 specified {\it condition} is false. The compiler error message should include
4454 the {\it msg} identifier - please note that it must be a valid C++ identifier
4455 and not a string unlike in the other cases.
4456
4457 This macro is mostly useful for testing the expressions involving the
4458 {\tt sizeof} operator as they can't be tested by the preprocessor but it is
4459 sometimes desirable to test them at the compile time.
4460
4461 Note that this macro internally declares a struct whose name it tries to make
4462 unique by using the {\tt \_\_LINE\_\_} in it but it may still not work if you
4463 use it on the same line in two different source files. In this case you may
4464 either change the line in which either of them appears on or use the
4465 \helpref{wxCOMPILE\_TIME\_ASSERT2}{wxcompiletimeassert2} macro.
4466
4467 Also note that Microsoft Visual C++ has a bug which results in compiler errors
4468 if you use this macro with `Program Database For Edit And Continue'
4469 (\texttt{/ZI}) option, so you shouldn't use it (`Program Database'
4470 (\texttt{/Zi}) is ok though) for the code making use of this macro.
4471
4472 \wxheading{See also}
4473
4474 \helpref{wxASSERT\_MSG}{wxassertmsg},\\
4475 \helpref{wxASSERT\_MIN\_BITSIZE}{wxassertminbitsize}
4476
4477
4478 \membersection{wxCOMPILE\_TIME\_ASSERT2}\label{wxcompiletimeassert2}
4479
4480 \func{}{wxCOMPILE\_TIME\_ASSERT}{\param{}{condition}, \param{}{msg}, \param{}{name}}
4481
4482 This macro is identical to \helpref{wxCOMPILE\_TIME\_ASSERT2}{wxcompiletimeassert2}
4483 except that it allows you to specify a unique {\it name} for the struct
4484 internally defined by this macro to avoid getting the compilation errors
4485 described \helpref{above}{wxcompiletimeassert}.
4486
4487
4488 \membersection{wxFAIL}\label{wxfail}
4489
4490 \func{}{wxFAIL}{\void}
4491
4492 Will always generate an assert error if this code is reached (in debug mode).
4493
4494 See also: \helpref{wxFAIL\_MSG}{wxfailmsg}
4495
4496
4497 \membersection{wxFAIL\_MSG}\label{wxfailmsg}
4498
4499 \func{}{wxFAIL\_MSG}{\param{}{msg}}
4500
4501 Will always generate an assert error with specified message if this code is reached (in debug mode).
4502
4503 This macro is useful for marking unreachable" code areas, for example
4504 it may be used in the "default:" branch of a switch statement if all possible
4505 cases are processed above.
4506
4507 \wxheading{See also}
4508
4509 \helpref{wxFAIL}{wxfail}
4510
4511
4512 \membersection{wxCHECK}\label{wxcheck}
4513
4514 \func{}{wxCHECK}{\param{}{condition}, \param{}{retValue}}
4515
4516 Checks that the condition is true, returns with the given return value if not (FAILs in debug mode).
4517 This check is done even in release mode.
4518
4519
4520 \membersection{wxCHECK\_MSG}\label{wxcheckmsg}
4521
4522 \func{}{wxCHECK\_MSG}{\param{}{condition}, \param{}{retValue}, \param{}{msg}}
4523
4524 Checks that the condition is true, returns with the given return value if not (FAILs in debug mode).
4525 This check is done even in release mode.
4526
4527 This macro may be only used in non-void functions, see also
4528 \helpref{wxCHECK\_RET}{wxcheckret}.
4529
4530
4531 \membersection{wxCHECK\_RET}\label{wxcheckret}
4532
4533 \func{}{wxCHECK\_RET}{\param{}{condition}, \param{}{msg}}
4534
4535 Checks that the condition is true, and returns if not (FAILs with given error
4536 message in debug mode). This check is done even in release mode.
4537
4538 This macro should be used in void functions instead of
4539 \helpref{wxCHECK\_MSG}{wxcheckmsg}.
4540
4541
4542 \membersection{wxCHECK2}\label{wxcheck2}
4543
4544 \func{}{wxCHECK2}{\param{}{condition}, \param{}{operation}}
4545
4546 Checks that the condition is true and \helpref{wxFAIL}{wxfail} and execute
4547 {\it operation} if it is not. This is a generalisation of
4548 \helpref{wxCHECK}{wxcheck} and may be used when something else than just
4549 returning from the function must be done when the {\it condition} is false.
4550
4551 This check is done even in release mode.
4552
4553
4554 \membersection{wxCHECK2\_MSG}\label{wxcheck2msg}
4555
4556 \func{}{wxCHECK2}{\param{}{condition}, \param{}{operation}, \param{}{msg}}
4557
4558 This is the same as \helpref{wxCHECK2}{wxcheck2}, but
4559 \helpref{wxFAIL\_MSG}{wxfailmsg} with the specified {\it msg} is called
4560 instead of wxFAIL() if the {\it condition} is false.
4561
4562
4563 \membersection{::wxTrap}\label{wxtrap}
4564
4565 \func{void}{wxTrap}{\void}
4566
4567 In debug mode (when {\tt \_\_WXDEBUG\_\_} is defined) this function generates a
4568 debugger exception meaning that the control is passed to the debugger if one is
4569 attached to the process. Otherwise the program just terminates abnormally.
4570
4571 In release mode this function does nothing.
4572
4573 \wxheading{Include files}
4574
4575 <wx/debug.h>
4576
4577
4578
4579 \membersection{::wxIsDebuggerRunning}\label{wxisdebuggerrunning}
4580
4581 \func{bool}{wxIsDebuggerRunning}{\void}
4582
4583 Returns \true if the program is running under debugger, \false otherwise.
4584
4585 Please note that this function is currently only implemented for Win32 and Mac
4586 builds using CodeWarrior and always returns \false elsewhere.
4587
4588
4589
4590
4591 \section{Environment access functions}\label{environfunctions}
4592
4593 The functions in this section allow to access (get) or change value of
4594 environment variables in a portable way. They are currently implemented under
4595 Win32 and POSIX-like systems (Unix).
4596
4597 % TODO add some stuff about env var inheriting but not propagating upwards (VZ)
4598
4599 \wxheading{Include files}
4600
4601 <wx/utils.h>
4602
4603
4604 \membersection{wxGetenv}\label{wxgetenvmacro}
4605
4606 \func{wxChar *}{wxGetEnv}{\param{const wxString\&}{ var}}
4607
4608 This is a macro defined as {\tt getenv()} or its wide char version in Unicode
4609 mode.
4610
4611 Note that under Win32 it may not return correct value for the variables set
4612 with \helpref{wxSetEnv}{wxsetenv}, use \helpref{wxGetEnv}{wxgetenv} function
4613 instead.
4614
4615
4616 \membersection{wxGetEnv}\label{wxgetenv}
4617
4618 \func{bool}{wxGetEnv}{\param{const wxString\&}{ var}, \param{wxString *}{value}}
4619
4620 Returns the current value of the environment variable {\it var} in {\it value}.
4621 {\it value} may be {\tt NULL} if you just want to know if the variable exists
4622 and are not interested in its value.
4623
4624 Returns \true if the variable exists, \false otherwise.
4625
4626
4627 \membersection{wxSetEnv}\label{wxsetenv}
4628
4629 \func{bool}{wxSetEnv}{\param{const wxString\&}{ var}, \param{const wxChar *}{value}}
4630
4631 Sets the value of the environment variable {\it var} (adding it if necessary)
4632 to {\it value}.
4633
4634 Returns \true on success.
4635
4636
4637 \membersection{wxUnsetEnv}\label{wxunsetenv}
4638
4639 \func{bool}{wxUnsetEnv}{\param{const wxString\&}{ var}}
4640
4641 Removes the variable {\it var} from the environment.
4642 \helpref{wxGetEnv}{wxgetenv} will return {\tt NULL} after the call to this
4643 function.
4644
4645 Returns \true on success.