]> git.saurik.com Git - wxWidgets.git/blame - docs/latex/wx/function.tex
fixed broken English...
[wxWidgets.git] / docs / latex / wx / function.tex
CommitLineData
a660d684
KB
1\chapter{Functions}\label{functions}
2\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
3\setfooter{\thepage}{}{}{}{}{\thepage}
4
b0fc8832
VZ
5The functions and macros defined in wxWindows are described here: you can
6either look up a function using the alphabetical listing of them or find it in
7the corresponding topic.
8
9\section{Alphabetical functions and macros list}
10
11\helpref{CLASSINFO}{classinfo}\\
8f5d9104 12\helpref{copystring}{copystring}\\
b0fc8832
VZ
13\helpref{DECLARE\_ABSTRACT\_CLASS}{declareabstractclass}\\
14\helpref{DECLARE\_APP}{declareapp}\\
15\helpref{DECLARE\_CLASS}{declareclass}\\
16\helpref{DECLARE\_DYNAMIC\_CLASS}{declaredynamicclass}\\
17\helpref{IMPLEMENT\_ABSTRACT\_CLASS2}{implementabstractclass2}\\
18\helpref{IMPLEMENT\_ABSTRACT\_CLASS}{implementabstractclass}\\
19\helpref{IMPLEMENT\_APP}{implementapp}\\
20\helpref{IMPLEMENT\_CLASS2}{implementclass2}\\
21\helpref{IMPLEMENT\_CLASS}{implementclass}\\
22\helpref{IMPLEMENT\_DYNAMIC\_CLASS2}{implementdynamicclass2}\\
23\helpref{IMPLEMENT\_DYNAMIC\_CLASS}{implementdynamicclass}\\
24\helpref{WXDEBUG\_NEW}{debugnew}\\
25\helpref{WXTRACELEVEL}{tracelevel}\\
26\helpref{WXTRACE}{trace}\\
8f5d9104 27\helpref{wxASSERT\_MIN\_BITSIZE}{wxassertminbitsize}\\
b0fc8832
VZ
28\helpref{wxASSERT\_MSG}{wxassertmsg}\\
29\helpref{wxASSERT}{wxassert}\\
30\helpref{wxBITMAP}{wxbitmapmacro}\\
31\helpref{wxBeginBusyCursor}{wxbeginbusycursor}\\
32\helpref{wxBell}{wxbell}\\
a30c309a 33\helpref{wxCHECK}{wxcheck}\\
b0fc8832
VZ
34\helpref{wxCHECK2\_MSG}{wxcheck2msg}\\
35\helpref{wxCHECK2}{wxcheck2}\\
a30c309a 36\helpref{wxCHECK\_GCC\_VERSION}{wxcheckgccversion}\\
b0fc8832
VZ
37\helpref{wxCHECK\_MSG}{wxcheckmsg}\\
38\helpref{wxCHECK\_RET}{wxcheckret}\\
39\helpref{wxCHECK\_VERSION}{wxcheckversion}\\
a30c309a 40\helpref{wxCHECK\_W32API\_VERSION}{wxcheckw32apiversion}\\
b0fc8832 41\helpref{wxClientDisplayRect}{wxclientdisplayrect}\\
f4fcc291 42\helpref{wxClipboardOpen}{functionwxclipboardopen}\\
b0fc8832
VZ
43\helpref{wxCloseClipboard}{wxcloseclipboard}\\
44\helpref{wxColourDisplay}{wxcolourdisplay}\\
8f5d9104 45\helpref{wxCOMPILE\_TIME\_ASSERT}{wxcompiletimeassert}\\
5b8643ea 46\helpref{wxCOMPILE\_TIME\_ASSERT2}{wxcompiletimeassert2}\\
b0fc8832
VZ
47\helpref{wxConcatFiles}{wxconcatfiles}\\
48\helpref{wxConstCast}{wxconstcast}\\
49\helpref{wxCopyFile}{wxcopyfile}\\
50\helpref{wxCreateDynamicObject}{wxcreatedynamicobject}\\
51\helpref{wxCreateFileTipProvider}{wxcreatefiletipprovider}\\
52\helpref{wxDDECleanUp}{wxddecleanup}\\
53\helpref{wxDDEInitialize}{wxddeinitialize}\\
54\helpref{wxDROP\_ICON}{wxdropicon}\\
55\helpref{wxDebugMsg}{wxdebugmsg}\\
f4fcc291 56\helpref{wxDirExists}{functionwxdirexists}\\
b0fc8832
VZ
57\helpref{wxDirSelector}{wxdirselector}\\
58\helpref{wxDisplayDepth}{wxdisplaydepth}\\
b0fc8832 59\helpref{wxDisplaySize}{wxdisplaysize}\\
f4fcc291 60\helpref{wxDisplaySizeMM}{wxdisplaysizemm}\\
b0fc8832
VZ
61\helpref{wxDos2UnixFilename}{wxdos2unixfilename}\\
62\helpref{wxDynamicCastThis}{wxdynamiccastthis}\\
63\helpref{wxDynamicCast}{wxdynamiccast}\\
64\helpref{wxEmptyClipboard}{wxemptyclipboard}\\
65\helpref{wxEnableTopLevelWindows}{wxenabletoplevelwindows}\\
66\helpref{wxEndBusyCursor}{wxendbusycursor}\\
67\helpref{wxEntry}{wxentry}\\
68\helpref{wxEnumClipboardFormats}{wxenumclipboardformats}\\
69\helpref{wxError}{wxerror}\\
70\helpref{wxExecute}{wxexecute}\\
71\helpref{wxExit}{wxexit}\\
986ecc86 72\helpref{wxEXPLICIT}{wxexplicit}\\
b0fc8832
VZ
73\helpref{wxFAIL\_MSG}{wxfailmsg}\\
74\helpref{wxFAIL}{wxfail}\\
75\helpref{wxFatalError}{wxfatalerror}\\
f4fcc291 76\helpref{wxFileExists}{functionwxfileexists}\\
b0fc8832
VZ
77\helpref{wxFileModificationTime}{wxfilemodificationtime}\\
78\helpref{wxFileNameFromPath}{wxfilenamefrompath}\\
79\helpref{wxFileSelector}{wxfileselector}\\
80\helpref{wxFindFirstFile}{wxfindfirstfile}\\
81\helpref{wxFindMenuItemId}{wxfindmenuitemid}\\
82\helpref{wxFindNextFile}{wxfindnextfile}\\
83\helpref{wxFindWindowAtPointer}{wxfindwindowatpointer}\\
84\helpref{wxFindWindowAtPoint}{wxfindwindowatpoint}\\
85\helpref{wxFindWindowByLabel}{wxfindwindowbylabel}\\
86\helpref{wxFindWindowByName}{wxfindwindowbyname}\\
a02afd14 87\helpref{wxFinite}{wxfinite}\\
b0fc8832 88\helpref{wxGetActiveWindow}{wxgetactivewindow}\\
749caeeb 89\helpref{wxGetApp}{wxgetapp}\\
b0fc8832
VZ
90\helpref{wxGetClipboardData}{wxgetclipboarddata}\\
91\helpref{wxGetClipboardFormatName}{wxgetclipboardformatname}\\
92\helpref{wxGetColourFromUser}{wxgetcolourfromuser}\\
93\helpref{wxGetCwd}{wxgetcwd}\\
94\helpref{wxGetDiskSpace}{wxgetdiskspace}\\
95\helpref{wxGetDisplayName}{wxgetdisplayname}\\
96\helpref{wxGetElapsedTime}{wxgetelapsedtime}\\
97\helpref{wxGetEmailAddress}{wxgetemailaddress}\\
98\helpref{wxGetEnv}{wxgetenv}\\
d741c583 99\helpref{wxGetFontFromUser}{wxgetfontfromuser}\\
b0fc8832
VZ
100\helpref{wxGetFreeMemory}{wxgetfreememory}\\
101\helpref{wxGetFullHostName}{wxgetfullhostname}\\
102\helpref{wxGetHomeDir}{wxgethomedir}\\
103\helpref{wxGetHostName}{wxgethostname}\\
104\helpref{wxGetLocalTimeMillis}{wxgetlocaltimemillis}\\
105\helpref{wxGetLocalTime}{wxgetlocaltime}\\
106\helpref{wxGetMousePosition}{wxgetmouseposition}\\
107\helpref{wxGetMultipleChoices}{wxgetmultiplechoices}\\
108\helpref{wxGetMultipleChoice}{wxgetmultiplechoice}\\
109\helpref{wxGetNumberFromUser}{wxgetnumberfromuser}\\
110\helpref{wxGetOSDirectory}{wxgetosdirectory}\\
111\helpref{wxGetOsDescription}{wxgetosdescription}\\
112\helpref{wxGetOsVersion}{wxgetosversion}\\
113\helpref{wxGetPasswordFromUser}{wxgetpasswordfromuser}\\
114\helpref{wxGetPrinterCommand}{wxgetprintercommand}\\
115\helpref{wxGetPrinterFile}{wxgetprinterfile}\\
116\helpref{wxGetPrinterMode}{wxgetprintermode}\\
117\helpref{wxGetPrinterOptions}{wxgetprinteroptions}\\
118\helpref{wxGetPrinterOrientation}{wxgetprinterorientation}\\
119\helpref{wxGetPrinterPreviewCommand}{wxgetprinterpreviewcommand}\\
120\helpref{wxGetPrinterScaling}{wxgetprinterscaling}\\
121\helpref{wxGetPrinterTranslation}{wxgetprintertranslation}\\
c1cb4153 122\helpref{wxGetProcessId}{wxgetprocessid}\\
b0fc8832
VZ
123\helpref{wxGetResource}{wxgetresource}\\
124\helpref{wxGetSingleChoiceData}{wxgetsinglechoicedata}\\
125\helpref{wxGetSingleChoiceIndex}{wxgetsinglechoiceindex}\\
126\helpref{wxGetSingleChoice}{wxgetsinglechoice}\\
127\helpref{wxGetTempFileName}{wxgettempfilename}\\
128\helpref{wxGetTextFromUser}{wxgettextfromuser}\\
33b494d6 129\helpref{wxGetTopLevelParent}{wxgettoplevelparent}\\
b0fc8832
VZ
130\helpref{wxGetTranslation}{wxgettranslation}\\
131\helpref{wxGetUTCTime}{wxgetutctime}\\
132\helpref{wxGetUserHome}{wxgetuserhome}\\
133\helpref{wxGetUserId}{wxgetuserid}\\
134\helpref{wxGetUserName}{wxgetusername}\\
135\helpref{wxGetWorkingDirectory}{wxgetworkingdirectory}\\
136\helpref{wxGetenv}{wxgetenvmacro}\\
137\helpref{wxHandleFatalExceptions}{wxhandlefatalexceptions}\\
138\helpref{wxICON}{wxiconmacro}\\
139\helpref{wxINTXX\_SWAP\_ALWAYS}{intswapalways}\\
140\helpref{wxINTXX\_SWAP\_ON\_BE}{intswaponbe}\\
141\helpref{wxINTXX\_SWAP\_ON\_LE}{intswaponle}\\
142\helpref{wxInitAllImageHandlers}{wxinitallimagehandlers}\\
143\helpref{wxInitialize}{wxinitialize}\\
144\helpref{wxIsAbsolutePath}{wxisabsolutepath}\\
145\helpref{wxIsBusy}{wxisbusy}\\
146\helpref{wxIsClipboardFormatAvailable}{wxisclipboardformatavailable}\\
147\helpref{wxIsEmpty}{wxisempty}\\
a02afd14 148\helpref{wxIsNaN}{wxisnan}\\
b0fc8832
VZ
149\helpref{wxIsWild}{wxiswild}\\
150\helpref{wxKill}{wxkill}\\
151\helpref{wxLoadUserResource}{wxloaduserresource}\\
152\helpref{wxLogDebug}{wxlogdebug}\\
153\helpref{wxLogError}{wxlogerror}\\
154\helpref{wxLogFatalError}{wxlogfatalerror}\\
155\helpref{wxLogMessage}{wxlogmessage}\\
156\helpref{wxLogStatus}{wxlogstatus}\\
157\helpref{wxLogSysError}{wxlogsyserror}\\
158\helpref{wxLogTrace}{wxlogtrace}\\
159\helpref{wxLogVerbose}{wxlogverbose}\\
160\helpref{wxLogWarning}{wxlogwarning}\\
2b5f62a0
VZ
161\helpref{wxLL}{wxll}\\
162\helpref{wxLongLongFmtSpec}{wxlonglongfmtspec}\\
b0fc8832
VZ
163\helpref{wxMakeMetafilePlaceable}{wxmakemetafileplaceable}\\
164\helpref{wxMatchWild}{wxmatchwild}\\
165\helpref{wxMessageBox}{wxmessagebox}\\
166\helpref{wxMkdir}{wxmkdir}\\
167\helpref{wxMutexGuiEnter}{wxmutexguienter}\\
168\helpref{wxMutexGuiLeave}{wxmutexguileave}\\
169\helpref{wxNewId}{wxnewid}\\
170\helpref{wxNow}{wxnow}\\
171\helpref{wxOnAssert}{wxonassert}\\
172\helpref{wxOpenClipboard}{wxopenclipboard}\\
173\helpref{wxPathOnly}{wxpathonly}\\
174\helpref{wxPostDelete}{wxpostdelete}\\
175\helpref{wxPostEvent}{wxpostevent}\\
176\helpref{wxRegisterClipboardFormat}{wxregisterclipboardformat}\\
177\helpref{wxRegisterId}{wxregisterid}\\
178\helpref{wxRemoveFile}{wxremovefile}\\
179\helpref{wxRenameFile}{wxrenamefile}\\
b0fc8832 180\helpref{wxRmdir}{wxrmdir}\\
c11d62a6 181\helpref{wxSafeShowMessage}{wxsafeshowmessage}\\
b0fc8832
VZ
182\helpref{wxSafeYield}{wxsafeyield}\\
183\helpref{wxSetClipboardData}{wxsetclipboarddata}\\
184\helpref{wxSetCursor}{wxsetcursor}\\
185\helpref{wxSetDisplayName}{wxsetdisplayname}\\
186\helpref{wxSetEnv}{wxsetenv}\\
187\helpref{wxSetPrinterCommand}{wxsetprintercommand}\\
188\helpref{wxSetPrinterFile}{wxsetprinterfile}\\
189\helpref{wxSetPrinterMode}{wxsetprintermode}\\
190\helpref{wxSetPrinterOptions}{wxsetprinteroptions}\\
191\helpref{wxSetPrinterOrientation}{wxsetprinterorientation}\\
192\helpref{wxSetPrinterPreviewCommand}{wxsetprinterpreviewcommand}\\
193\helpref{wxSetPrinterScaling}{wxsetprinterscaling}\\
194\helpref{wxSetPrinterTranslation}{wxsetprintertranslation}\\
195\helpref{wxSetWorkingDirectory}{wxsetworkingdirectory}\\
196\helpref{wxShell}{wxshell}\\
197\helpref{wxShowTip}{wxshowtip}\\
f6ba47d9 198\helpref{wxShutdown}{wxshutdown}\\
b0fc8832
VZ
199\helpref{wxSleep}{wxsleep}\\
200\helpref{wxSnprintf}{wxsnprintf}\\
201\helpref{wxSplitPath}{wxsplitfunction}\\
202\helpref{wxStartTimer}{wxstarttimer}\\
203\helpref{wxStaticCast}{wxstaticcast}\\
2f930c85 204\helpref{wxStrcmp}{wxstrcmp}\\
b0fc8832
VZ
205\helpref{wxStricmp}{wxstricmp}\\
206\helpref{wxStringEq}{wxstringeq}\\
207\helpref{wxStringMatch}{wxstringmatch}\\
208\helpref{wxStripMenuCodes}{wxstripmenucodes}\\
209\helpref{wxStrlen}{wxstrlen}\\
210\helpref{wxSysErrorCode}{wxsyserrorcode}\\
211\helpref{wxSysErrorMsg}{wxsyserrormsg}\\
0bbe4e29 212\helpref{wxT}{wxt}\\
b0fc8832
VZ
213\helpref{wxToLower}{wxtolower}\\
214\helpref{wxToUpper}{wxtoupper}\\
215\helpref{wxTraceLevel}{wxtracelevel}\\
216\helpref{wxTrace}{wxtrace}\\
217\helpref{wxTransferFileToStream}{wxtransferfiletostream}\\
218\helpref{wxTransferStreamToFile}{wxtransferstreamtofile}\\
219\helpref{wxTrap}{wxtrap}\\
220\helpref{wxUninitialize}{wxuninitialize}\\
221\helpref{wxUnix2DosFilename}{wxunix2dosfilename}\\
222\helpref{wxUnsetEnv}{wxunsetenv}\\
223\helpref{wxUsleep}{wxusleep}\\
224\helpref{wxVsnprintf}{wxvsnprintf}\\
225\helpref{wxWakeUpIdle}{wxwakeupidle}\\
226\helpref{wxWriteResource}{wxwriteresource}\\
0bbe4e29
VZ
227\helpref{wxYield}{wxyield}\\
228\helpref{\_}{underscore}\\
229\helpref{\_T}{underscoret}
f6bcfd97
BP
230
231\section{Version macros}\label{versionfunctions}
232
233The following constants are defined in wxWindows:
234
235\begin{itemize}\itemsep=0pt
236\item {\tt wxMAJOR\_VERSION} is the major version of wxWindows
237\item {\tt wxMINOR\_VERSION} is the minor version of wxWindows
ff8fda36 238\item {\tt wxRELEASE\_NUMBER} is the release number
f6bcfd97
BP
239\end{itemize}
240
241For example, the values or these constants for wxWindows 2.1.15 are 2, 1 and
24215.
243
244Additionally, {\tt wxVERSION\_STRING} is a user-readable string containing
245the full wxWindows version and {\tt wxVERSION\_NUMBER} is a combination of the
246three version numbers above: for 2.1.15, it is 2115 and it is 2200 for
247wxWindows 2.2.
248
249\wxheading{Include files}
250
251<wx/version.h> or <wx/defs.h>
252
253\membersection{wxCHECK\_VERSION}\label{wxcheckversion}
254
255\func{bool}{wxCHECK\_VERSION}{\param{}{major, minor, release}}
256
257This is a macro which evaluates to true if the current wxWindows version is at
258least major.minor.release.
259
260For example, to test if the program is compiled with wxWindows 2.2 or higher,
261the following can be done:
262
263\begin{verbatim}
264 wxString s;
265#if wxCHECK_VERSION(2, 2, 0)
266 if ( s.StartsWith("foo") )
267#else // replacement code for old version
268 if ( strncmp(s, "foo", 3) == 0 )
269#endif
270 {
271 ...
272 }
273\end{verbatim}
a660d684 274
a30c309a
VZ
275\membersection{wxCHECK\_GCC\_VERSION}\label{wxcheckgccversion}
276
277\func{bool}{wxCHECK\_GCC\_VERSION}{\param{}{major, minor, release}}
278
279Returns $1$ if the compiler being used to compile the code is GNU C++
280compiler (g++) version major.minor.release or greater. Otherwise, and also if
281the compiler is not GNU C++ at all, returns $0$.
282
283\membersection{wxCHECK\_W32API\_VERSION}\label{wxcheckw32apiversion}
284
285\func{bool}{wxCHECK\_GCC\_VERSION}{\param{}{major, minor, release}}
286
287Returns $1$ if the version of w32api headers used is major.minor.release or
288greater. Otherwise, and also if we are not compiling with mingw32/cygwin under
289Win32 at all, returns $0$.
290
b0fc8832 291\section{Application initialization and termination}\label{appinifunctions}
c88275cb 292
b0fc8832
VZ
293The functions in this section are used on application startup/shutdown and also
294to control the behaviour of the main event loop of the GUI programs.
c88275cb 295
b0fc8832 296\membersection{::wxEntry}\label{wxentry}
c88275cb 297
b0fc8832
VZ
298This initializes wxWindows in a platform-dependent way. Use this if you
299are not using the default wxWindows entry code (e.g. main or WinMain). For example,
300you can initialize wxWindows from an Microsoft Foundation Classes application using
301this function.
c88275cb 302
b0fc8832 303\func{void}{wxEntry}{\param{HANDLE}{ hInstance}, \param{HANDLE}{ hPrevInstance},
cc81d32f 304 \param{const wxString\& }{commandLine}, \param{int}{ cmdShow}, \param{bool}{ enterLoop = true}}
c88275cb 305
cc81d32f 306wxWindows initialization under Windows (non-DLL). If {\it enterLoop} is false, the
b0fc8832
VZ
307function will return immediately after calling wxApp::OnInit. Otherwise, the wxWindows
308message loop will be entered.
c88275cb 309
b0fc8832
VZ
310\func{void}{wxEntry}{\param{HANDLE}{ hInstance}, \param{HANDLE}{ hPrevInstance},
311 \param{WORD}{ wDataSegment}, \param{WORD}{ wHeapSize}, \param{const wxString\& }{ commandLine}}
c88275cb 312
b0fc8832 313wxWindows initialization under Windows (for applications constructed as a DLL).
c88275cb 314
b0fc8832 315\func{int}{wxEntry}{\param{int}{ argc}, \param{const wxString\& *}{argv}}
c88275cb 316
b0fc8832 317wxWindows initialization under Unix.
c88275cb 318
b0fc8832 319\wxheading{Remarks}
c88275cb 320
b0fc8832
VZ
321To clean up wxWindows, call wxApp::OnExit followed by the static function
322wxApp::CleanUp. For example, if exiting from an MFC application that also uses wxWindows:
4aff28fc 323
b0fc8832
VZ
324\begin{verbatim}
325int CTheApp::ExitInstance()
326{
327 // OnExit isn't called by CleanUp so must be called explicitly.
328 wxTheApp->OnExit();
329 wxApp::CleanUp();
330
331 return CWinApp::ExitInstance();
c88275cb
RR
332}
333\end{verbatim}
334
b0fc8832 335\wxheading{Include files}
c88275cb 336
b0fc8832 337<wx/app.h>
c88275cb 338
749caeeb
VZ
339
340\membersection{::wxGetApp}\label{wxgetapp}
341
342\func{wxAppDerivedClass\&}{wxGetApp}{\void}
343
344This function doesn't exist in wxWindows but it is created by using
345the \helpref{IMPLEMENT\_APP}{implementapp} macro. Thus, before using it
346anywhere but in the same module where this macro is used, you must make it
347available using \helpref{DECLARE\_APP}{declareapp}.
348
349The advantage of using this function compared to directly using the global
350wxTheApp pointer is that the latter is of type {\tt wxApp *} and so wouldn't
351allow you to access the functions specific to your application class but not
352present in wxApp while wxGetApp() returns the object of the right type.
353
b0fc8832 354\membersection{::wxHandleFatalExceptions}\label{wxhandlefatalexceptions}
c88275cb 355
cc81d32f 356\func{bool}{wxHandleFatalExceptions}{\param{bool}{ doIt = true}}
c88275cb 357
cc81d32f 358If {\it doIt} is true, the fatal exceptions (also known as general protection
b0fc8832
VZ
359faults under Windows or segmentation violations in the Unix world) will be
360caught and passed to \helpref{wxApp::OnFatalException}{wxapponfatalexception}.
361By default, i.e. before this function is called, they will be handled in the
362normal way which usually just means that the application will be terminated.
cc81d32f 363Calling wxHandleFatalExceptions() with {\it doIt} equal to false will restore
b0fc8832 364this default behaviour.
c88275cb 365
b0fc8832 366\membersection{::wxInitAllImageHandlers}\label{wxinitallimagehandlers}
a660d684 367
b0fc8832 368\func{void}{wxInitAllImageHandlers}{\void}
954b8ae6 369
b0fc8832
VZ
370Initializes all available image handlers. For a list of available handlers,
371see \helpref{wxImage}{wximage}.
954b8ae6
JS
372
373\wxheading{See also}
374
b0fc8832 375\helpref{wxImage}{wximage}, \helpref{wxImageHandler}{wximagehandler}
a660d684 376
b0fc8832 377\wxheading{Include files}
a660d684 378
b0fc8832 379<wx/image.h>
a660d684 380
b0fc8832 381\membersection{::wxInitialize}\label{wxinitialize}
a660d684 382
b0fc8832 383\func{bool}{wxInitialize}{\void}
a660d684 384
b0fc8832
VZ
385This function is used in wxBase only and only if you don't create
386\helpref{wxApp}{wxapp} object at all. In this case you must call it from your
387{\tt main()} function before calling any other wxWindows functions.
a660d684 388
cc81d32f 389If the function returns {\tt false} the initialization could not be performed,
b0fc8832
VZ
390in this case the library cannot be used and
391\helpref{wxUninitialize}{wxuninitialize} shouldn't be called neither.
a660d684 392
b0fc8832
VZ
393This function may be called several times but
394\helpref{wxUninitialize}{wxuninitialize} must be called for each successful
395call to this function.
a660d684 396
b0fc8832 397\wxheading{Include files}
a47ce4a7 398
b0fc8832 399<wx/app.h>
a47ce4a7 400
b0fc8832 401\membersection{::wxSafeYield}\label{wxsafeyield}
a47ce4a7 402
b829bf55 403\func{bool}{wxSafeYield}{\param{wxWindow*}{ win = NULL}, \param{bool}{
cc81d32f 404 onlyIfNeeded = false}}
a660d684 405
b0fc8832
VZ
406This function is similar to wxYield, except that it disables the user input to
407all program windows before calling wxYield and re-enables it again
408afterwards. If {\it win} is not NULL, this window will remain enabled,
409allowing the implementation of some limited user interaction.
a660d684 410
b0fc8832 411Returns the result of the call to \helpref{::wxYield}{wxyield}.
532372a3 412
b0fc8832 413\wxheading{Include files}
a660d684 414
b0fc8832 415<wx/utils.h>
a660d684 416
b0fc8832 417\membersection{::wxUninitialize}\label{wxuninitialize}
a660d684 418
b0fc8832 419\func{void}{wxUninitialize}{\void}
a660d684 420
b0fc8832
VZ
421This function is for use in console (wxBase) programs only. It must be called
422once for each previous successful call to \helpref{wxInitialize}{wxinitialize}.
a660d684 423
b0fc8832 424\wxheading{Include files}
a660d684 425
b0fc8832 426<wx/app.h>
a660d684 427
b0fc8832 428\membersection{::wxYield}\label{wxyield}
a660d684 429
b0fc8832 430\func{bool}{wxYield}{\void}
a660d684 431
b0fc8832 432Calls \helpref{wxApp::Yield}{wxappyield}.
a660d684 433
b829bf55 434This function is kept only for backwards compatibility. Please use
2b5f62a0 435the \helpref{wxApp::Yield}{wxappyield} method instead in any new code.
a660d684 436
b0fc8832 437\wxheading{Include files}
5ab656cd 438
b0fc8832 439<wx/app.h> or <wx/utils.h>
eadd7bd2 440
b0fc8832 441\membersection{::wxWakeUpIdle}\label{wxwakeupidle}
eadd7bd2 442
b0fc8832 443\func{void}{wxWakeUpIdle}{\void}
eadd7bd2 444
b0fc8832
VZ
445This functions wakes up the (internal and platform dependent) idle system, i.e. it
446will force the system to send an idle event even if the system currently {\it is}
447 idle and thus would not send any idle event until after some other event would get
448sent. This is also useful for sending events between two threads and is used by
449the corresponding functions \helpref{::wxPostEvent}{wxpostevent} and
450\helpref{wxEvtHandler::AddPendingEvent}{wxevthandleraddpendingevent}.
eadd7bd2 451
b0fc8832 452\wxheading{Include files}
eadd7bd2 453
b0fc8832 454<wx/app.h>
eadd7bd2 455
b0fc8832 456\section{Process control functions}\label{processfunctions}
eadd7bd2 457
b0fc8832
VZ
458The functions in this section are used to launch or terminate the other
459processes.
eadd7bd2 460
b0fc8832 461\membersection{::wxExecute}\label{wxexecute}
631f1bfe 462
fbf456aa 463\func{long}{wxExecute}{\param{const wxString\& }{command}, \param{int }{sync = wxEXEC\_ASYNC}, \param{wxProcess *}{callback = NULL}}
631f1bfe 464
fbf456aa 465\func{long}{wxExecute}{\param{char **}{argv}, \param{int }{flags = wxEXEC\_ASYNC}, \param{wxProcess *}{callback = NULL}}
631f1bfe 466
b0fc8832 467\func{long}{wxExecute}{\param{const wxString\& }{command}, \param{wxArrayString\& }{output}}
a660d684 468
9722642d
MB
469\perlnote{In wxPerl this function only takes the {\tt command} argument,
470and returns a 2-element list {\tt ( status, output )}, where {\tt output} is
471an array reference.}
472
b0fc8832 473\func{long}{wxExecute}{\param{const wxString\& }{command}, \param{wxArrayString\& }{output}, \param{wxArrayString\& }{errors}}
a660d684 474
9722642d
MB
475\perlnote{In wxPerl this function only takes the {\tt command} argument,
476and returns a 3-element list {\tt ( status, output, errors )}, where
477{\tt output} and {\tt errors} are array references.}
478
b0fc8832 479Executes another program in Unix or Windows.
a660d684 480
b0fc8832 481The first form takes a command string, such as {\tt "emacs file.txt"}.
a660d684 482
b0fc8832
VZ
483The second form takes an array of values: a command, any number of
484arguments, terminated by NULL.
a660d684 485
b0fc8832
VZ
486The semantics of the third and fourth versions is different from the first two
487and is described in more details below.
a660d684 488
fbf456aa
VZ
489If {\it flags} parameter contains {\tt wxEXEC\_ASYNC} flag (the default), flow
490of control immediately returns. If it contains {\tt wxEXEC\_SYNC}, the current
491application waits until the other program has terminated.
a660d684 492
b0fc8832
VZ
493In the case of synchronous execution, the return value is the exit code of
494the process (which terminates by the moment the function returns) and will be
495$-1$ if the process couldn't be started and typically 0 if the process
496terminated successfully. Also, while waiting for the process to
497terminate, wxExecute will call \helpref{wxYield}{wxyield}. The caller
498should ensure that this can cause no recursion, in the simplest case by
cc81d32f 499calling \helpref{wxEnableTopLevelWindows(false)}{wxenabletoplevelwindows}.
a660d684 500
b0fc8832
VZ
501For asynchronous execution, however, the return value is the process id and
502zero value indicates that the command could not be executed. As an added
2edb0bde 503complication, the return value of $-1$ in this case indicates that we didn't
b0fc8832
VZ
504launch a new process, but connected to the running one (this can only happen in
505case of using DDE under Windows for command execution). In particular, in this,
506and only this, case the calling code will not get the notification about
507process termination.
a660d684 508
b829bf55 509If callback isn't NULL and if execution is asynchronous,
b0fc8832 510\helpref{wxProcess::OnTerminate}{wxprocessonterminate} will be called when
fbf456aa 511the process finishes. Specifying this parameter also allows you to redirect the
b829bf55 512standard input and/or output of the process being launched by calling
fbf456aa
VZ
513\helpref{Redirect}{wxprocessredirect}. If the child process IO is redirected,
514under Windows the process window is not shown by default (this avoids having to
515flush an unnecessary console for the processes which don't create any windows
516anyhow) but a {\tt wxEXEC\_NOHIDE} flag can be used to prevent this from
517happening, i.e. with this flag the child process window will be shown normally.
a660d684 518
e1082c9f
VZ
519Under Unix the flag {\tt wxEXEC\_MAKE\_GROUP\_LEADER} may be used to ensure
520that the new process is a group leader (this will create a new session if
521needed). Calling \helpref{wxKill}{wxkill} with the argument of -pid where pid
522is the process ID of the new process will kill this process as well as all of
523its children (except those which have started their own session).
524
b0fc8832
VZ
525Finally, you may use the third overloaded version of this function to execute
526a process (always synchronously) and capture its output in the array
527{\it output}. The fourth version adds the possibility to additionally capture
528the messages from standard error output in the {\it errors} array.
a660d684 529
647b8e37
VZ
530{\bf NB:} Currently wxExecute() can only be used from the main thread, calling
531this function from another thread will result in an assert failure in debug
532build and won't work.
533
534\wxheading{See also}
535
536\helpref{wxShell}{wxshell}, \helpref{wxProcess}{wxprocess}, \helpref{Exec sample}{sampleexec}.
a660d684 537
fbf456aa
VZ
538\wxheading{Parameters}
539
540\docparam{command}{The command to execute and any parameters to pass to it as a
541single string.}
542
543\docparam{argv}{The command to execute should be the first element of this
544array, any additional ones are the command parameters and the array must be
545terminated with a NULL pointer.}
546
b829bf55 547\docparam{flags}{Combination of bit masks {\tt wxEXEC\_ASYNC},
fbf456aa
VZ
548{\tt wxEXEC\_SYNC} and {\tt wxEXEC\_NOHIDE}}
549
550\docparam{callback}{An optional pointer to \helpref{wxProcess}{wxprocess}}
551
b0fc8832 552\wxheading{Include files}
a660d684 553
b0fc8832 554<wx/utils.h>
a660d684 555
b0fc8832 556\membersection{::wxExit}\label{wxexit}
a660d684 557
b0fc8832 558\func{void}{wxExit}{\void}
7af89395 559
b0fc8832
VZ
560Exits application after calling \helpref{wxApp::OnExit}{wxapponexit}.
561Should only be used in an emergency: normally the top-level frame
562should be deleted (after deleting all other frames) to terminate the
f4fcc291 563application. See \helpref{wxCloseEvent}{wxcloseevent} and \helpref{wxApp}{wxapp}.
7af89395 564
b0fc8832 565\wxheading{Include files}
7af89395 566
b0fc8832 567<wx/app.h>
a660d684 568
b0fc8832 569\membersection{::wxKill}\label{wxkill}
a660d684 570
b0fc8832 571\func{int}{wxKill}{\param{long}{ pid}, \param{int}{ sig = wxSIGTERM}, \param{wxKillError }{*rc = NULL}}
7af89395 572
b0fc8832 573Equivalent to the Unix kill function: send the given signal {\it sig} to the
2edb0bde 574process with PID {\it pid}. The valid signal values are
a660d684 575
b0fc8832
VZ
576\begin{verbatim}
577enum wxSignal
578{
579 wxSIGNONE = 0, // verify if the process exists under Unix
580 wxSIGHUP,
581 wxSIGINT,
582 wxSIGQUIT,
583 wxSIGILL,
584 wxSIGTRAP,
585 wxSIGABRT,
586 wxSIGEMT,
587 wxSIGFPE,
588 wxSIGKILL, // forcefully kill, dangerous!
589 wxSIGBUS,
590 wxSIGSEGV,
591 wxSIGSYS,
592 wxSIGPIPE,
593 wxSIGALRM,
594 wxSIGTERM // terminate the process gently
595};
596\end{verbatim}
a660d684 597
b0fc8832
VZ
598{\tt wxSIGNONE}, {\tt wxSIGKILL} and {\tt wxSIGTERM} have the same meaning
599under both Unix and Windows but all the other signals are equivalent to
600{\tt wxSIGTERM} under Windows.
a660d684 601
b0fc8832
VZ
602Returns 0 on success, -1 on failure. If {\it rc} parameter is not NULL, it will
603be filled with an element of {\tt wxKillError} enum:
a660d684 604
b0fc8832
VZ
605\begin{verbatim}
606enum wxKillError
607{
608 wxKILL_OK, // no error
609 wxKILL_BAD_SIGNAL, // no such signal
610 wxKILL_ACCESS_DENIED, // permission denied
611 wxKILL_NO_PROCESS, // no such process
612 wxKILL_ERROR // another, unspecified error
613};
614\end{verbatim}
c0ab6adf 615
b0fc8832 616\wxheading{See also}
ade35f11 617
b0fc8832
VZ
618\helpref{wxProcess::Kill}{wxprocesskill},\rtfsp
619\helpref{wxProcess::Exists}{wxprocessexists},\rtfsp
620\helpref{Exec sample}{sampleexec}
a660d684 621
b0fc8832 622\wxheading{Include files}
a660d684 623
b0fc8832 624<wx/utils.h>
a660d684 625
c1cb4153
VZ
626\membersection{::wxGetProcessId}\label{wxgetprocessid}
627
628\func{unsigned long}{wxGetProcessId}{\void}
629
630Returns the number uniquely identifying the current process in the system.
631
632If an error occurs, $0$ is returned.
633
634\wxheading{Include files}
635
636<wx/utils.h>
637
b0fc8832 638\membersection{::wxShell}\label{wxshell}
a660d684 639
b0fc8832 640\func{bool}{wxShell}{\param{const wxString\& }{command = NULL}}
a660d684 641
b0fc8832
VZ
642Executes a command in an interactive shell window. If no command is
643specified, then just the shell is spawned.
a660d684 644
b0fc8832 645See also \helpref{wxExecute}{wxexecute}, \helpref{Exec sample}{sampleexec}.
a660d684 646
b0fc8832 647\wxheading{Include files}
a660d684 648
b0fc8832 649<wx/utils.h>
a660d684 650
f6ba47d9
VZ
651\membersection{::wxShutdown}\label{wxshutdown}
652
653\func{bool}{wxShutdown}{\param{wxShutdownFlags}{flags}}
654
b829bf55 655This function shuts down or reboots the computer depending on the value of the
f6ba47d9
VZ
656{\it flags}. Please notice that doing this requires the corresponding access
657rights (superuser under Unix, {\tt SE\_SHUTDOWN} privelege under Windows NT)
658and that this function is only implemented under Unix and Win32.
659
660\wxheading{Parameters}
661
662\docparam{flags}{Either {\tt wxSHUTDOWN\_POWEROFF} or {\tt wxSHUTDOWN\_REBOOT}}
663
664\wxheading{Returns}
665
cc81d32f 666{\tt true} on success, {\tt false} if an error occured.
f6ba47d9
VZ
667
668\wxheading{Include files}
669
670<wx/utils.h>
a660d684 671
b0fc8832 672\section{Thread functions}\label{threadfunctions}
1a33c3ba 673
b0fc8832 674\wxheading{Include files}
a660d684 675
b0fc8832 676<wx/thread.h>
a660d684 677
b0fc8832 678\wxheading{See also}
a660d684 679
b0fc8832 680\helpref{wxThread}{wxthread}, \helpref{wxMutex}{wxmutex}, \helpref{Multithreading overview}{wxthreadoverview}
a660d684 681
b0fc8832 682\membersection{::wxMutexGuiEnter}\label{wxmutexguienter}
a660d684 683
b0fc8832 684\func{void}{wxMutexGuiEnter}{\void}
a660d684 685
b0fc8832
VZ
686This function must be called when any thread other than the main GUI thread
687wants to get access to the GUI library. This function will block the execution
688of the calling thread until the main thread (or any other thread holding the
689main GUI lock) leaves the GUI library and no other thread will enter the GUI
690library until the calling thread calls \helpref{::wxMutexGuiLeave()}{wxmutexguileave}.
a660d684 691
b0fc8832 692Typically, these functions are used like this:
a660d684 693
b0fc8832
VZ
694\begin{verbatim}
695void MyThread::Foo(void)
696{
697 // before doing any GUI calls we must ensure that this thread is the only
698 // one doing it!
a660d684 699
b0fc8832 700 wxMutexGuiEnter();
a660d684 701
b0fc8832
VZ
702 // Call GUI here:
703 my_window->DrawSomething();
a660d684 704
b0fc8832
VZ
705 wxMutexGuiLeave();
706}
707\end{verbatim}
a660d684 708
b0fc8832
VZ
709Note that under GTK, no creation of top-level windows is allowed in any
710thread but the main one.
a660d684 711
b0fc8832
VZ
712This function is only defined on platforms which support preemptive
713threads.
d37fd2fa 714
b0fc8832 715\membersection{::wxMutexGuiLeave}\label{wxmutexguileave}
d37fd2fa 716
b0fc8832 717\func{void}{wxMutexGuiLeave}{\void}
d37fd2fa 718
b0fc8832 719See \helpref{::wxMutexGuiEnter()}{wxmutexguienter}.
d37fd2fa 720
b0fc8832
VZ
721This function is only defined on platforms which support preemptive
722threads.
d37fd2fa 723
b0fc8832 724\section{File functions}\label{filefunctions}
d37fd2fa 725
b0fc8832 726\wxheading{Include files}
ed93168b 727
b0fc8832 728<wx/utils.h>
ed93168b 729
b0fc8832 730\wxheading{See also}
ed93168b 731
b0fc8832
VZ
732\helpref{wxPathList}{wxpathlist}\\
733\helpref{wxDir}{wxdir}\\
734\helpref{wxFile}{wxfile}\\
735\helpref{wxFileName}{wxfilename}
ed93168b 736
f4fcc291 737\membersection{::wxDirExists}\label{functionwxdirexists}
ed93168b 738
b0fc8832 739\func{bool}{wxDirExists}{\param{const wxString\& }{dirname}}
ed93168b 740
cc81d32f 741Returns true if the directory exists.
ed93168b 742
b0fc8832 743\membersection{::wxDos2UnixFilename}\label{wxdos2unixfilename}
ed93168b 744
b0fc8832 745\func{void}{wxDos2UnixFilename}{\param{wxChar *}{s}}
d524e22d 746
b0fc8832
VZ
747Converts a DOS to a Unix filename by replacing backslashes with forward
748slashes.
d524e22d 749
f4fcc291 750\membersection{::wxFileExists}\label{functionwxfileexists}
d524e22d 751
b0fc8832 752\func{bool}{wxFileExists}{\param{const wxString\& }{filename}}
d524e22d 753
cc81d32f 754Returns true if the file exists. It also returns true if the file is
b0fc8832 755a directory.
e12be2f7 756
b0fc8832 757\membersection{::wxFileModificationTime}\label{wxfilemodificationtime}
d524e22d 758
b0fc8832 759\func{time\_t}{wxFileModificationTime}{\param{const wxString\& }{filename}}
d524e22d 760
b0fc8832 761Returns time of last modification of given file.
d524e22d 762
b0fc8832 763\membersection{::wxFileNameFromPath}\label{wxfilenamefrompath}
d524e22d 764
b0fc8832 765\func{wxString}{wxFileNameFromPath}{\param{const wxString\& }{path}}
d524e22d 766
7ac13b21 767\func{char *}{wxFileNameFromPath}{\param{char *}{path}}
d524e22d 768
b829bf55 769{\bf NB:} This function is obsolete, please use
2bd25c5a
VZ
770\helpref{wxFileName::SplitPath}{wxfilenamesplitpath} instead.
771
b0fc8832
VZ
772Returns the filename for a full path. The second form returns a pointer to
773temporary storage that should not be deallocated.
d524e22d 774
b0fc8832 775\membersection{::wxFindFirstFile}\label{wxfindfirstfile}
d524e22d 776
7ac13b21 777\func{wxString}{wxFindFirstFile}{\param{const char *}{spec}, \param{int}{ flags = 0}}
d524e22d 778
b0fc8832
VZ
779This function does directory searching; returns the first file
780that matches the path {\it spec}, or the empty string. Use \helpref{wxFindNextFile}{wxfindnextfile} to
781get the next matching file. Neither will report the current directory "." or the
782parent directory "..".
d524e22d 783
b0fc8832 784{\it spec} may contain wildcards.
85ec2f26 785
b0fc8832 786{\it flags} may be wxDIR for restricting the query to directories, wxFILE for files or zero for either.
d524e22d 787
b0fc8832 788For example:
d524e22d 789
b0fc8832
VZ
790\begin{verbatim}
791 wxString f = wxFindFirstFile("/home/project/*.*");
792 while ( !f.IsEmpty() )
793 {
794 ...
795 f = wxFindNextFile();
796 }
797\end{verbatim}
d524e22d 798
b0fc8832 799\membersection{::wxFindNextFile}\label{wxfindnextfile}
d524e22d 800
b0fc8832 801\func{wxString}{wxFindNextFile}{\void}
e12be2f7 802
b0fc8832 803Returns the next file that matches the path passed to \helpref{wxFindFirstFile}{wxfindfirstfile}.
d524e22d 804
b0fc8832 805See \helpref{wxFindFirstFile}{wxfindfirstfile} for an example.
d524e22d 806
b0fc8832 807\membersection{::wxGetDiskSpace}\label{wxgetdiskspace}
d524e22d 808
b0fc8832 809\func{bool}{wxGetDiskSpace}{\param{const wxString\& }{path}, \param{wxLongLong }{*total = NULL}, \param{wxLongLong }{*free = NULL}}
d524e22d 810
b0fc8832
VZ
811This function returns the total number of bytes and number of free bytes on
812the disk containing the directory {\it path} (it should exist). Both
813{\it total} and {\it free} parameters may be {\tt NULL} if the corresponding
814information is not needed.
d524e22d 815
b0fc8832 816\wxheading{Returns}
85ec2f26 817
cc81d32f 818{\tt true} on success, {\tt false} if an error occured (for example, the
b0fc8832 819directory doesn't exist).
d524e22d 820
b0fc8832 821\wxheading{Portability}
d524e22d 822
b0fc8832
VZ
823This function is implemented for Win16 (only for drives less than 2Gb), Win32,
824Mac OS and generic Unix provided the system has {\tt statfs()} function.
d524e22d 825
b0fc8832 826This function first appeared in wxWindows 2.3.2.
d524e22d 827
b0fc8832 828\membersection{::wxGetOSDirectory}\label{wxgetosdirectory}
e12be2f7 829
b0fc8832 830\func{wxString}{wxGetOSDirectory}{\void}
d524e22d 831
b0fc8832 832Returns the Windows directory under Windows; on other platforms returns the empty string.
d524e22d 833
b0fc8832 834\membersection{::wxIsAbsolutePath}\label{wxisabsolutepath}
d524e22d 835
b0fc8832 836\func{bool}{wxIsAbsolutePath}{\param{const wxString\& }{filename}}
d524e22d 837
cc81d32f 838Returns true if the argument is an absolute filename, i.e. with a slash
b0fc8832 839or drive name at the beginning.
85ec2f26 840
b0fc8832 841\membersection{::wxPathOnly}\label{wxpathonly}
d524e22d 842
b0fc8832 843\func{wxString}{wxPathOnly}{\param{const wxString\& }{path}}
d524e22d 844
b0fc8832 845Returns the directory part of the filename.
d524e22d 846
b0fc8832 847\membersection{::wxUnix2DosFilename}\label{wxunix2dosfilename}
d524e22d 848
b0fc8832 849\func{void}{wxUnix2DosFilename}{\param{const wxString\& }{s}}
e12be2f7 850
b0fc8832
VZ
851Converts a Unix to a DOS filename by replacing forward
852slashes with backslashes.
d524e22d 853
b0fc8832 854\membersection{::wxConcatFiles}\label{wxconcatfiles}
d524e22d 855
b0fc8832
VZ
856\func{bool}{wxConcatFiles}{\param{const wxString\& }{file1}, \param{const wxString\& }{file2},
857\param{const wxString\& }{file3}}
d524e22d 858
b0fc8832 859Concatenates {\it file1} and {\it file2} to {\it file3}, returning
cc81d32f 860true if successful.
a660d684 861
b0fc8832 862\membersection{::wxCopyFile}\label{wxcopyfile}
a660d684 863
cc81d32f 864\func{bool}{wxCopyFile}{\param{const wxString\& }{file1}, \param{const wxString\& }{file2}, \param{bool }{overwrite = true}}
a660d684 865
cc81d32f
VS
866Copies {\it file1} to {\it file2}, returning true if successful. If
867{\it overwrite} parameter is true (default), the destination file is overwritten
868if it exists, but if {\it overwrite} is false, the functions fails in this
b0fc8832 869case.
a660d684 870
b0fc8832 871\membersection{::wxGetCwd}\label{wxgetcwd}
7ae8ee14 872
b0fc8832 873\func{wxString}{wxGetCwd}{\void}
7ae8ee14 874
b0fc8832 875Returns a string containing the current (or working) directory.
7ae8ee14 876
b0fc8832 877\membersection{::wxGetWorkingDirectory}\label{wxgetworkingdirectory}
7ae8ee14 878
7ac13b21 879\func{wxString}{wxGetWorkingDirectory}{\param{char *}{buf=NULL}, \param{int }{sz=1000}}
7ae8ee14 880
2bd25c5a 881{\bf NB:} This function is obsolete: use \helpref{wxGetCwd}{wxgetcwd} instead.
7ae8ee14 882
b0fc8832
VZ
883Copies the current working directory into the buffer if supplied, or
884copies the working directory into new storage (which you must delete yourself)
885if the buffer is NULL.
7ae8ee14 886
b0fc8832 887{\it sz} is the size of the buffer if supplied.
a660d684 888
b0fc8832 889\membersection{::wxGetTempFileName}\label{wxgettempfilename}
a660d684 890
7ac13b21 891\func{char *}{wxGetTempFileName}{\param{const wxString\& }{prefix}, \param{char *}{buf=NULL}}
a660d684 892
b0fc8832 893\func{bool}{wxGetTempFileName}{\param{const wxString\& }{prefix}, \param{wxString\& }{buf}}
7ae8ee14 894
b0fc8832
VZ
895%% Makes a temporary filename based on {\it prefix}, opens and closes the file,
896%% and places the name in {\it buf}. If {\it buf} is NULL, new store
897%% is allocated for the temporary filename using {\it new}.
898%%
899%% Under Windows, the filename will include the drive and name of the
900%% directory allocated for temporary files (usually the contents of the
901%% TEMP variable). Under Unix, the {\tt /tmp} directory is used.
902%%
903%% It is the application's responsibility to create and delete the file.
a660d684 904
2bd25c5a 905{\bf NB:} These functions are obsolete, please use\rtfsp
b0fc8832
VZ
906\helpref{wxFileName::CreateTempFileName}{wxfilenamecreatetempfilename}\rtfsp
907instead.
a660d684 908
b0fc8832 909\membersection{::wxIsWild}\label{wxiswild}
a660d684 910
b0fc8832 911\func{bool}{wxIsWild}{\param{const wxString\& }{pattern}}
a660d684 912
cc81d32f 913Returns true if the pattern contains wildcards. See \helpref{wxMatchWild}{wxmatchwild}.
a660d684 914
b0fc8832 915\membersection{::wxMatchWild}\label{wxmatchwild}
ed93168b 916
b0fc8832 917\func{bool}{wxMatchWild}{\param{const wxString\& }{pattern}, \param{const wxString\& }{text}, \param{bool}{ dot\_special}}
ed93168b 918
cc81d32f
VS
919Returns true if the {\it pattern}\/ matches the {\it text}\/; if {\it
920dot\_special}\/ is true, filenames beginning with a dot are not matched
b0fc8832 921with wildcard characters. See \helpref{wxIsWild}{wxiswild}.
ed93168b 922
b0fc8832 923\membersection{::wxMkdir}\label{wxmkdir}
ed93168b 924
b0fc8832 925\func{bool}{wxMkdir}{\param{const wxString\& }{dir}, \param{int }{perm = 0777}}
ed93168b 926
cc81d32f 927Makes the directory {\it dir}, returning true if successful.
a660d684 928
b0fc8832
VZ
929{\it perm} is the access mask for the directory for the systems on which it is
930supported (Unix) and doesn't have effect for the other ones.
378b05f7 931
b0fc8832 932\membersection{::wxRemoveFile}\label{wxremovefile}
378b05f7 933
b0fc8832 934\func{bool}{wxRemoveFile}{\param{const wxString\& }{file}}
378b05f7 935
cc81d32f 936Removes {\it file}, returning true if successful.
378b05f7 937
b0fc8832 938\membersection{::wxRenameFile}\label{wxrenamefile}
e12be2f7 939
b0fc8832 940\func{bool}{wxRenameFile}{\param{const wxString\& }{file1}, \param{const wxString\& }{file2}}
378b05f7 941
cc81d32f 942Renames {\it file1} to {\it file2}, returning true if successful.
378b05f7 943
b0fc8832 944\membersection{::wxRmdir}\label{wxrmdir}
378b05f7 945
b0fc8832 946\func{bool}{wxRmdir}{\param{const wxString\& }{dir}, \param{int}{ flags=0}}
378b05f7 947
cc81d32f 948Removes the directory {\it dir}, returning true if successful. Does not work under VMS.
e12be2f7 949
b0fc8832 950The {\it flags} parameter is reserved for future use.
378b05f7 951
b0fc8832 952\membersection{::wxSetWorkingDirectory}\label{wxsetworkingdirectory}
a660d684 953
b0fc8832 954\func{bool}{wxSetWorkingDirectory}{\param{const wxString\& }{dir}}
a660d684 955
cc81d32f 956Sets the current working directory, returning true if the operation succeeded.
b0fc8832 957Under MS Windows, the current drive is also changed if {\it dir} contains a drive specification.
c50f1fb9 958
b0fc8832 959\membersection{::wxSplitPath}\label{wxsplitfunction}
c50f1fb9 960
b0fc8832 961\func{void}{wxSplitPath}{\param{const char *}{ fullname}, \param{wxString *}{ path}, \param{wxString *}{ name}, \param{wxString *}{ ext}}
c50f1fb9 962
b829bf55 963{\bf NB:} This function is obsolete, please use
2bd25c5a
VZ
964\helpref{wxFileName::SplitPath}{wxfilenamesplitpath} instead.
965
b0fc8832
VZ
966This function splits a full file name into components: the path (including possible disk/drive
967specification under Windows), the base name and the extension. Any of the output parameters
968({\it path}, {\it name} or {\it ext}) may be NULL if you are not interested in the value of
969a particular component.
c50f1fb9 970
b0fc8832
VZ
971wxSplitPath() will correctly handle filenames with both DOS and Unix path separators under
972Windows, however it will not consider backslashes as path separators under Unix (where backslash
973is a valid character in a filename).
c50f1fb9 974
b0fc8832 975On entry, {\it fullname} should be non-NULL (it may be empty though).
c50f1fb9 976
b0fc8832
VZ
977On return, {\it path} contains the file path (without the trailing separator), {\it name}
978contains the file name and {\it ext} contains the file extension without leading dot. All
979three of them may be empty if the corresponding component is. The old contents of the
980strings pointed to by these parameters will be overwritten in any case (if the pointers
981are not NULL).
c50f1fb9 982
b0fc8832 983\membersection{::wxTransferFileToStream}\label{wxtransferfiletostream}
c50f1fb9 984
b0fc8832 985\func{bool}{wxTransferFileToStream}{\param{const wxString\& }{filename}, \param{ostream\& }{stream}}
10eb1f1e 986
b0fc8832
VZ
987Copies the given file to {\it stream}. Useful when converting an old application to
988use streams (within the document/view framework, for example).
10eb1f1e 989
b0fc8832 990\wxheading{Include files}
10eb1f1e 991
b0fc8832 992<wx/docview.h>
10eb1f1e 993
b0fc8832
VZ
994\membersection{::wxTransferStreamToFile}\label{wxtransferstreamtofile}
995
996\func{bool}{wxTransferStreamToFile}{\param{istream\& }{stream} \param{const wxString\& }{filename}}
997
998Copies the given stream to the file {\it filename}. Useful when converting an old application to
999use streams (within the document/view framework, for example).
10eb1f1e
VZ
1000
1001\wxheading{Include files}
1002
b0fc8832 1003<wx/docview.h>
10eb1f1e 1004
b0fc8832 1005\section{Network, user and OS functions}\label{networkfunctions}
a660d684 1006
b0fc8832
VZ
1007The functions in this section are used to retrieve information about the
1008current computer and/or user characteristics.
a660d684 1009
b0fc8832 1010\membersection{::wxGetFreeMemory}\label{wxgetfreememory}
a660d684 1011
b0fc8832 1012\func{long}{wxGetFreeMemory}{\void}
a660d684 1013
b0fc8832
VZ
1014Returns the amount of free memory in bytes under environments which
1015support it, and -1 if not supported. Currently, it is supported only
1016under Windows, Linux and Solaris.
a660d684 1017
b0fc8832 1018\wxheading{Include files}
a660d684 1019
b0fc8832 1020<wx/utils.h>
a660d684 1021
b0fc8832 1022\membersection{::wxGetFullHostName}\label{wxgetfullhostname}
a660d684 1023
b0fc8832 1024\func{wxString}{wxGetFullHostName}{\void}
954b8ae6 1025
b0fc8832
VZ
1026Returns the FQDN (fully qualified domain host name) or an empty string on
1027error.
954b8ae6 1028
b0fc8832 1029\wxheading{See also}
c49245f8 1030
b0fc8832 1031\helpref{wxGetHostName}{wxgethostname}
4aff28fc 1032
b0fc8832 1033\wxheading{Include files}
4aff28fc 1034
b0fc8832 1035<wx/utils.h>
4aff28fc 1036
b0fc8832 1037\membersection{::wxGetEmailAddress}\label{wxgetemailaddress}
4aff28fc 1038
b0fc8832
VZ
1039\func{bool}{wxGetEmailAddress}{\param{const wxString\& }{buf}, \param{int }{sz}}
1040
1041Copies the user's email address into the supplied buffer, by
1042concatenating the values returned by \helpref{wxGetFullHostName}{wxgetfullhostname}\rtfsp
1043and \helpref{wxGetUserId}{wxgetuserid}.
1044
cc81d32f 1045Returns true if successful, false otherwise.
4aff28fc
VZ
1046
1047\wxheading{Include files}
1048
b0fc8832 1049<wx/utils.h>
4aff28fc 1050
b0fc8832 1051\membersection{::wxGetHomeDir}\label{wxgethomedir}
d6c9c1b7 1052
b0fc8832 1053\func{wxString}{wxGetHomeDir}{\void}
d6c9c1b7 1054
b0fc8832 1055Return the (current) user's home directory.
d6c9c1b7 1056
b0fc8832 1057\wxheading{See also}
d6c9c1b7 1058
b0fc8832 1059\helpref{wxGetUserHome}{wxgetuserhome}
d6c9c1b7
VZ
1060
1061\wxheading{Include files}
1062
b0fc8832 1063<wx/utils.h>
d6c9c1b7 1064
b0fc8832 1065\membersection{::wxGetHostName}\label{wxgethostname}
f3539882 1066
b0fc8832 1067\func{wxString}{wxGetHostName}{\void}
4aff28fc 1068
b0fc8832 1069\func{bool}{wxGetHostName}{\param{char * }{buf}, \param{int }{sz}}
c49245f8 1070
b0fc8832
VZ
1071Copies the current host machine's name into the supplied buffer. Please note
1072that the returned name is {\it not} fully qualified, i.e. it does not include
1073the domain name.
c49245f8 1074
b0fc8832
VZ
1075Under Windows or NT, this function first looks in the environment
1076variable SYSTEM\_NAME; if this is not found, the entry {\bf HostName}\rtfsp
1077in the {\bf wxWindows} section of the WIN.INI file is tried.
c49245f8 1078
b0fc8832 1079The first variant of this function returns the hostname if successful or an
cc81d32f
VS
1080empty string otherwise. The second (deprecated) function returns true
1081if successful, false otherwise.
b0fc8832
VZ
1082
1083\wxheading{See also}
1084
1085\helpref{wxGetFullHostName}{wxgetfullhostname}
c49245f8
VZ
1086
1087\wxheading{Include files}
a294c6d5 1088
b0fc8832 1089<wx/utils.h>
a294c6d5 1090
b0fc8832 1091\membersection{::wxGetUserId}\label{wxgetuserid}
a294c6d5 1092
b0fc8832 1093\func{wxString}{wxGetUserId}{\void}
a294c6d5 1094
b0fc8832
VZ
1095\func{bool}{wxGetUserId}{\param{char * }{buf}, \param{int }{sz}}
1096
1097This function returns the "user id" also known as "login name" under Unix i.e.
1098something like "jsmith". It uniquely identifies the current user (on this system).
1099
1100Under Windows or NT, this function first looks in the environment
1101variables USER and LOGNAME; if neither of these is found, the entry {\bf UserId}\rtfsp
1102in the {\bf wxWindows} section of the WIN.INI file is tried.
1103
1104The first variant of this function returns the login name if successful or an
cc81d32f
VS
1105empty string otherwise. The second (deprecated) function returns true
1106if successful, false otherwise.
b0fc8832
VZ
1107
1108\wxheading{See also}
1109
1110\helpref{wxGetUserName}{wxgetusername}
a294c6d5
VZ
1111
1112\wxheading{Include files}
c49245f8 1113
b0fc8832 1114<wx/utils.h>
c49245f8 1115
b0fc8832 1116\membersection{::wxGetOsDescription}\label{wxgetosdescription}
a660d684 1117
b0fc8832 1118\func{wxString}{wxGetOsDescription}{\void}
a660d684 1119
b0fc8832
VZ
1120Returns the string containing the description of the current platform in a
1121user-readable form. For example, this function may return strings like
1122{\tt Windows NT Version 4.0} or {\tt Linux 2.2.2 i386}.
a660d684 1123
b0fc8832
VZ
1124\wxheading{See also}
1125
1126\helpref{::wxGetOsVersion}{wxgetosversion}
a660d684 1127
954b8ae6
JS
1128\wxheading{Include files}
1129
b0fc8832 1130<wx/utils.h>
954b8ae6 1131
b0fc8832 1132\membersection{::wxGetOsVersion}\label{wxgetosversion}
a660d684 1133
b0fc8832 1134\func{int}{wxGetOsVersion}{\param{int *}{major = NULL}, \param{int *}{minor = NULL}}
a660d684 1135
b0fc8832 1136Gets operating system version information.
a660d684 1137
b0fc8832
VZ
1138\begin{twocollist}\itemsep=0pt
1139\twocolitemruled{Platform}{Return types}
3b432890
SC
1140\twocolitem{Mac OS}{Return value is wxMAC when compiled with CodeWarrior under Mac OS 8.x/9.x and Mac OS X, wxMAC\_DARWIN when compiled with the Apple Developer Tools under Mac OS X.
1141
1142Both {\it major} and {\it minor} have to be looked at as hexadecimal numbers. So System 10.2.4 returns 0x10, resp 16 for {\it major} and 0x24, resp 36 for {\it minor}. }
b0fc8832
VZ
1143\twocolitem{GTK}{Return value is wxGTK, For GTK 1.0, {\it major} is 1, {\it minor} is 0. }
1144\twocolitem{Motif}{Return value is wxMOTIF\_X, {\it major} is X version, {\it minor} is X revision.}
1145\twocolitem{OS/2}{Return value is wxOS2\_PM.}
1146\twocolitem{Windows 3.1}{Return value is wxWINDOWS, {\it major} is 3, {\it minor} is 1.}
1147\twocolitem{Windows NT/2000}{Return value is wxWINDOWS\_NT, version is returned in {\it major} and {\it minor}}
1148\twocolitem{Windows 98}{Return value is wxWIN95, {\it major} is 4, {\it minor} is 1 or greater.}
1149\twocolitem{Windows 95}{Return value is wxWIN95, {\it major} is 4, {\it minor} is 0.}
1150\twocolitem{Win32s (Windows 3.1)}{Return value is wxWIN32S, {\it major} is 3, {\it minor} is 1.}
1151\twocolitem{Watcom C++ 386 supervisor mode (Windows 3.1)}{Return value is wxWIN386, {\it major} is 3, {\it minor} is 1.}
1152\end{twocollist}
a660d684 1153
b0fc8832 1154\wxheading{See also}
a660d684 1155
b0fc8832 1156\helpref{::wxGetOsDescription}{wxgetosdescription}
a660d684 1157
b0fc8832
VZ
1158\wxheading{Include files}
1159
1160<wx/utils.h>
1161
1162\membersection{::wxGetUserHome}\label{wxgetuserhome}
1163
1164\func{const wxChar *}{wxGetUserHome}{\param{const wxString\& }{user = ""}}
1165
1166Returns the home directory for the given user. If the username is empty
b829bf55 1167(default value), this function behaves like
b0fc8832 1168\helpref{wxGetHomeDir}{wxgethomedir}.
a660d684 1169
954b8ae6
JS
1170\wxheading{Include files}
1171
b0fc8832 1172<wx/utils.h>
954b8ae6 1173
b0fc8832 1174\membersection{::wxGetUserName}\label{wxgetusername}
a660d684 1175
b0fc8832 1176\func{wxString}{wxGetUserName}{\void}
d6c9c1b7 1177
b0fc8832 1178\func{bool}{wxGetUserName}{\param{char * }{buf}, \param{int }{sz}}
d6c9c1b7 1179
b0fc8832 1180This function returns the full user name (something like "Mr. John Smith").
d6c9c1b7 1181
b0fc8832
VZ
1182Under Windows or NT, this function looks for the entry {\bf UserName}\rtfsp
1183in the {\bf wxWindows} section of the WIN.INI file. If PenWindows
1184is running, the entry {\bf Current} in the section {\bf User} of
1185the PENWIN.INI file is used.
d6c9c1b7 1186
b0fc8832 1187The first variant of this function returns the user name if successful or an
cc81d32f
VS
1188empty string otherwise. The second (deprecated) function returns {\tt true}
1189if successful, {\tt false} otherwise.
b0fc8832
VZ
1190
1191\wxheading{See also}
1192
1193\helpref{wxGetUserId}{wxgetuserid}
a660d684 1194
954b8ae6
JS
1195\wxheading{Include files}
1196
b0fc8832 1197<wx/utils.h>
954b8ae6 1198
b0fc8832 1199\section{String functions}
f3539882 1200
b0fc8832 1201\membersection{::copystring}\label{copystring}
a660d684 1202
7ac13b21 1203\func{char *}{copystring}{\param{const char *}{s}}
a660d684 1204
b0fc8832
VZ
1205Makes a copy of the string {\it s} using the C++ new operator, so it can be
1206deleted with the {\it delete} operator.
d6c9c1b7 1207
b0fc8832 1208This function is deprecated, use \helpref{wxString}{wxstring} class instead.
a660d684 1209
0bbe4e29
VZ
1210\membersection{::wxGetTranslation}\label{wxgettranslation}
1211
1212\func{const char *}{wxGetTranslation}{\param{const char * }{str}}
1213
1214This function returns the translation of string {\it str} in the current
1215\helpref{locale}{wxlocale}. If the string is not found in any of the loaded
1216message catalogs (see \helpref{internationalization overview}{internationalization}), the
1217original string is returned. In debug build, an error message is logged -- this
1218should help to find the strings which were not yet translated. As this function
1219is used very often, an alternative (and also common in Unix world) syntax is
1220provided: the \helpref{\_()}{underscore} macro is defined to do the same thing
1221as wxGetTranslation.
1222
b0fc8832 1223\membersection{::wxIsEmpty}\label{wxisempty}
954b8ae6 1224
b0fc8832 1225\func{bool}{wxIsEmpty}{\param{const char *}{ p}}
954b8ae6 1226
cc81d32f
VS
1227Returns {\tt true} if the pointer is either {\tt NULL} or points to an empty
1228string, {\tt false} otherwise.
f3539882 1229
2f930c85
JS
1230\membersection{::wxStrcmp}\label{wxstrcmp}
1231
1232\func{int}{wxStrcmp}{\param{const char *}{p1}, \param{const char *}{p2}}
1233
1234Returns a negative value, 0, or positive value if {\it p1} is less than, equal
1235to or greater than {\it p2}. The comparison is case-sensitive.
1236
1237This function complements the standard C function {\it stricmp()} which performs
1238case-insensitive comparison.
1239
b0fc8832 1240\membersection{::wxStricmp}\label{wxstricmp}
a660d684 1241
b0fc8832 1242\func{int}{wxStricmp}{\param{const char *}{p1}, \param{const char *}{p2}}
d6c9c1b7 1243
b0fc8832
VZ
1244Returns a negative value, 0, or positive value if {\it p1} is less than, equal
1245to or greater than {\it p2}. The comparison is case-insensitive.
a660d684 1246
b0fc8832
VZ
1247This function complements the standard C function {\it strcmp()} which performs
1248case-sensitive comparison.
a660d684 1249
b0fc8832 1250\membersection{::wxStringMatch}\label{wxstringmatch}
954b8ae6 1251
b0fc8832 1252\func{bool}{wxStringMatch}{\param{const wxString\& }{s1}, \param{const wxString\& }{s2},\\
cc81d32f 1253 \param{bool}{ subString = true}, \param{bool}{ exact = false}}
954b8ae6 1254
2bd25c5a
VZ
1255{\bf NB:} This function is obsolete, use \helpref{wxString::Find}{wxstringfind} instead.
1256
cc81d32f
VS
1257Returns {\tt true} if the substring {\it s1} is found within {\it s2},
1258ignoring case if {\it exact} is false. If {\it subString} is {\tt false},
b0fc8832 1259no substring matching is done.
f3539882 1260
b0fc8832 1261\membersection{::wxStringEq}\label{wxstringeq}
a660d684 1262
b0fc8832 1263\func{bool}{wxStringEq}{\param{const wxString\& }{s1}, \param{const wxString\& }{s2}}
a660d684 1264
2bd25c5a
VZ
1265{\bf NB:} This function is obsolete, use \helpref{wxString}{wxstring} instead.
1266
b0fc8832
VZ
1267A macro defined as:
1268
1269\begin{verbatim}
1270#define wxStringEq(s1, s2) (s1 && s2 && (strcmp(s1, s2) == 0))
1271\end{verbatim}
1272
b0fc8832
VZ
1273\membersection{::wxStrlen}\label{wxstrlen}
1274
1275\func{size\_t}{wxStrlen}{\param{const char *}{ p}}
1276
1277This is a safe version of standard function {\it strlen()}: it does exactly the
1278same thing (i.e. returns the length of the string) except that it returns 0 if
1279{\it p} is the {\tt NULL} pointer.
1280
b0fc8832 1281\membersection{::wxSnprintf}\label{wxsnprintf}
a660d684 1282
b0fc8832 1283\func{int}{wxSnprintf}{\param{wxChar *}{buf}, \param{size\_t }{len}, \param{const wxChar *}{format}, \param{}{...}}
a660d684 1284
b0fc8832
VZ
1285This function replaces the dangerous standard function {\tt sprintf()} and is
1286like {\tt snprintf()} available on some platforms. The only difference with
1287sprintf() is that an additional argument - buffer size - is taken and the
1288buffer is never overflowed.
a660d684 1289
b0fc8832
VZ
1290Returns the number of characters copied to the buffer or -1 if there is not
1291enough space.
a660d684 1292
b0fc8832 1293\wxheading{See also}
a660d684 1294
b0fc8832
VZ
1295\helpref{wxVsnprintf}{wxvsnprintf}, \helpref{wxString::Printf}{wxstringprintf}
1296
0bbe4e29
VZ
1297\membersection{wxT}\label{wxt}
1298
1299\func{wxChar}{wxT}{\param{char }{ch}}
1300
1301\func{const wxChar *}{wxT}{\param{const char *}{s}}
1302
1303wxT() is a macro which can be used with character and string literals (in other
1304words, {\tt 'x'} or {\tt "foo"}) to automatically convert them to Unicode in
1305Unicode build configuration. Please see the
1306\helpref{Unicode overview}{unicode} for more information.
1307
1308This macro is simply returns the value passed to it without changes in ASCII
1309build. In fact, its definition is:
1310\begin{verbatim}
1311#ifdef UNICODE
1312#define wxT(x) L ## x
1313#else // !Unicode
1314#define wxT(x) x
1315#endif
1316\end{verbatim}
1317
1318\membersection{wxTRANSLATE}\label{wxtranslate}
1319
1320\func{const wxChar *}{wxTRANSLATE}{\param{const char *}{s}}
1321
1322This macro doesn't do anything in the program code -- it simply expands to the
1323value of its argument (expand in Unicode build where it is equivalent to
1324\helpref{wxT}{wxt} which makes it unnecessary to use both wxTRANSLATE and wxT
1325with the same string which would be really unreadable).
1326
1327However it does have a purpose and it is to mark the literal strings for the
1328extraction into the message catalog created by {\tt xgettext} program. Usually
1329this is achieved using \helpref{\_()}{underscore} but that macro not only marks
1330the string for extraction but also expands into
1331\helpref{wxGetTranslation}{wxgettranslation} function call which means that it
1332cannot be used in some situations, notably for the static arrays
1333initialization.
1334
1335Here is an example which should make it more clear: suppose that you have a
1336static array of strings containing the weekday names and which have to be
1337translated (note that it is a bad example, really, as
1338\helpref{wxDateTime}{wxdatetime} already can be used to get the localized week
1339day names already). If you write
1340\begin{verbatim}
1341static const wxChar * const weekdays[] = { _("Mon"), ..., _("Sun") };
1342...
1343// use weekdays[n] as usual
1344\end{verbatim}
1345the code wouldn't compile because the function calls are forbidden in the array
1346initializer. So instead you should do
1347\begin{verbatim}
1348static const wxChar * const weekdays[] = { wxTRANSLATE("Mon"), ..., wxTRANSLATE("Sun") };
1349...
1350// use wxGetTranslation(weekdays[n])
1351\end{verbatim}
1352here.
1353
1354Note that although the code {\bf would} compile if you simply omit
1355wxTRANSLATE() in the above, it wouldn't work as expected because there would be
1356no translations for the weekday names in the program message catalog and
1357wxGetTranslation wouldn't find them.
1358
1359
b0fc8832
VZ
1360\membersection{::wxToLower}\label{wxtolower}
1361
1362\func{char}{wxToLower}{\param{char }{ch}}
1363
1364Converts the character to lower case. This is implemented as a macro for efficiency.
a660d684 1365
954b8ae6
JS
1366\wxheading{Include files}
1367
b0fc8832 1368<wx/utils.h>
954b8ae6 1369
b0fc8832 1370\membersection{::wxToUpper}\label{wxtoupper}
c50f1fb9 1371
b0fc8832 1372\func{char}{wxToUpper}{\param{char }{ch}}
c50f1fb9 1373
b0fc8832 1374Converts the character to upper case. This is implemented as a macro for efficiency.
c50f1fb9 1375
b0fc8832 1376\wxheading{Include files}
c50f1fb9 1377
b0fc8832 1378<wx/utils.h>
c50f1fb9 1379
b0fc8832
VZ
1380\membersection{::wxVsnprintf}\label{wxvsnprintf}
1381
ea44a631 1382\func{int}{wxVsnprintf}{\param{wxChar *}{buf}, \param{size\_t }{len}, \param{const wxChar *}{format}, \param{va\_list }{argPtr}}
b0fc8832 1383
7ac13b21 1384The same as \helpref{wxSnprintf}{wxsnprintf} but takes a {\tt va\_list }
b0fc8832 1385argument instead of arbitrary number of parameters.
c50f1fb9 1386
e12be2f7 1387\wxheading{See also}
c50f1fb9 1388
b0fc8832 1389\helpref{wxSnprintf}{wxsnprintf}, \helpref{wxString::PrintfV}{wxstringprintfv}
c50f1fb9 1390
0bbe4e29
VZ
1391
1392\membersection{\_}\label{underscore}
1393
1394\func{const wxChar *}{\_}{\param{const char *}{s}}
1395
1396This macro expands into a call to \helpref{wxGetTranslation}{wxgettranslation}
1397function, so it marks the message for the extraction by {\tt xgettext} just as
1398\helpref{wxTRANSLATE}{wxtranslate} does, but also returns the translation of
1399the string for the current locale during execution.
1400
1401Don't confuse this macro with \helpref{\_T()}{underscoret}!
1402
1403
1404\membersection{\_T}\label{underscoret}
1405
1406\func{wxChar}{\_T}{\param{char }{ch}}
1407
1408\func{const wxChar *}{\_T}{\param{const wxChar }{ch}}
1409
1410This macro is exactly the same as \helpref{wxT}{wxt} and is defined in
1411wxWindows simply because it may be more intuitive for Windows programmers as
1412the standard Win32 headers also define it (as well as yet another name for the
1413same macro which is {\tt \_TEXT()}).
1414
1415Don't confuse this macro with \helpref{\_()}{underscore}!
1416
1417\membersection{\_}\label{underscore}
1418
b0fc8832 1419\section{Dialog functions}\label{dialogfunctions}
c50f1fb9 1420
b0fc8832
VZ
1421Below are a number of convenience functions for getting input from the
1422user or displaying messages. Note that in these functions the last three
1423parameters are optional. However, it is recommended to pass a parent frame
1424parameter, or (in MS Windows or Motif) the wrong window frame may be brought to
1425the front when the dialog box is popped up.
c50f1fb9 1426
b0fc8832 1427\membersection{::wxBeginBusyCursor}\label{wxbeginbusycursor}
a660d684 1428
b0fc8832
VZ
1429\func{void}{wxBeginBusyCursor}{\param{wxCursor *}{cursor = wxHOURGLASS\_CURSOR}}
1430
1431Changes the cursor to the given cursor for all windows in the application.
1432Use \helpref{wxEndBusyCursor}{wxendbusycursor} to revert the cursor back
1433to its previous state. These two calls can be nested, and a counter
1434ensures that only the outer calls take effect.
1435
1436See also \helpref{wxIsBusy}{wxisbusy}, \helpref{wxBusyCursor}{wxbusycursor}.
a660d684 1437
954b8ae6
JS
1438\wxheading{Include files}
1439
b0fc8832 1440<wx/utils.h>
954b8ae6 1441
b0fc8832 1442\membersection{::wxBell}\label{wxbell}
ec5d7799 1443
b0fc8832 1444\func{void}{wxBell}{\void}
ec5d7799 1445
b0fc8832 1446Ring the system bell.
ec5d7799 1447
b0fc8832 1448\wxheading{Include files}
ec5d7799 1449
b0fc8832 1450<wx/utils.h>
a660d684 1451
b0fc8832 1452\membersection{::wxCreateFileTipProvider}\label{wxcreatefiletipprovider}
a660d684 1453
b0fc8832
VZ
1454\func{wxTipProvider *}{wxCreateFileTipProvider}{\param{const wxString\& }{filename},
1455 \param{size\_t }{currentTip}}
a660d684 1456
b0fc8832
VZ
1457This function creates a \helpref{wxTipProvider}{wxtipprovider} which may be
1458used with \helpref{wxShowTip}{wxshowtip}.
a660d684 1459
b0fc8832
VZ
1460\docparam{filename}{The name of the file containing the tips, one per line}
1461\docparam{currentTip}{The index of the first tip to show - normally this index
1462is remembered between the 2 program runs.}
a660d684 1463
b0fc8832 1464\wxheading{See also}
a660d684 1465
b0fc8832 1466\helpref{Tips overview}{tipsoverview}
904a68b6 1467
b0fc8832 1468\wxheading{Include files}
904a68b6 1469
b0fc8832 1470<wx/tipdlg.h>
904a68b6 1471
b0fc8832 1472\membersection{::wxDirSelector}\label{wxdirselector}
904a68b6 1473
b0fc8832
VZ
1474\func{wxString}{wxDirSelector}{\param{const wxString\& }{message = wxDirSelectorPromptStr},\\
1475 \param{const wxString\& }{default\_path = ""},\\
1476 \param{long }{style = 0}, \param{const wxPoint\& }{pos = wxDefaultPosition},\\
1477 \param{wxWindow *}{parent = NULL}}
904a68b6 1478
b0fc8832
VZ
1479Pops up a directory selector dialog. The arguments have the same meaning as
1480those of wxDirDialog::wxDirDialog(). The message is displayed at the top,
1481and the default\_path, if specified, is set as the initial selection.
904a68b6 1482
b0fc8832
VZ
1483The application must check for an empty return value (if the user pressed
1484Cancel). For example:
904a68b6 1485
b0fc8832
VZ
1486\begin{verbatim}
1487const wxString& dir = wxDirSelector("Choose a folder");
1488if ( !dir.empty() )
1489{
1490 ...
1491}
1492\end{verbatim}
904a68b6 1493
b0fc8832 1494\wxheading{Include files}
a660d684 1495
b0fc8832 1496<wx/dirdlg.h>
a660d684 1497
b0fc8832 1498\membersection{::wxFileSelector}\label{wxfileselector}
a660d684 1499
b0fc8832
VZ
1500\func{wxString}{wxFileSelector}{\param{const wxString\& }{message}, \param{const wxString\& }{default\_path = ""},\\
1501 \param{const wxString\& }{default\_filename = ""}, \param{const wxString\& }{default\_extension = ""},\\
1502 \param{const wxString\& }{wildcard = ``*.*''}, \param{int }{flags = 0}, \param{wxWindow *}{parent = ""},\\
1503 \param{int}{ x = -1}, \param{int}{ y = -1}}
a660d684 1504
b0fc8832
VZ
1505Pops up a file selector box. In Windows, this is the common file selector
1506dialog. In X, this is a file selector box with the same functionality.
1507The path and filename are distinct elements of a full file pathname.
1508If path is empty, the current directory will be used. If filename is empty,
1509no default filename will be supplied. The wildcard determines what files
1510are displayed in the file selector, and file extension supplies a type
1511extension for the required filename. Flags may be a combination of wxOPEN,
1512wxSAVE, wxOVERWRITE\_PROMPT, wxHIDE\_READONLY, wxFILE\_MUST\_EXIST, wxMULTIPLE or 0.
a660d684 1513
b0fc8832
VZ
1514Both the Unix and Windows versions implement a wildcard filter. Typing a
1515filename containing wildcards (*, ?) in the filename text item, and
1516clicking on Ok, will result in only those files matching the pattern being
1517displayed.
a660d684 1518
b0fc8832
VZ
1519The wildcard may be a specification for multiple types of file
1520with a description for each, such as:
a660d684 1521
b0fc8832
VZ
1522\begin{verbatim}
1523 "BMP files (*.bmp)|*.bmp|GIF files (*.gif)|*.gif"
1524\end{verbatim}
a660d684 1525
b0fc8832
VZ
1526The application must check for an empty return value (the user pressed
1527Cancel). For example:
a660d684 1528
b0fc8832 1529\begin{verbatim}
f0f12073
VZ
1530wxString filename = wxFileSelector("Choose a file to open");
1531if ( !filename.empty() )
b0fc8832 1532{
f0f12073
VZ
1533 // work with the file
1534 ...
b0fc8832 1535}
f0f12073 1536//else: cancelled by user
b0fc8832 1537\end{verbatim}
a660d684 1538
b0fc8832 1539\wxheading{Include files}
a660d684 1540
b0fc8832 1541<wx/filedlg.h>
a660d684 1542
b0fc8832 1543\membersection{::wxEndBusyCursor}\label{wxendbusycursor}
a660d684 1544
b0fc8832 1545\func{void}{wxEndBusyCursor}{\void}
f53561f1 1546
b0fc8832
VZ
1547Changes the cursor back to the original cursor, for all windows in the application.
1548Use with \helpref{wxBeginBusyCursor}{wxbeginbusycursor}.
1549
1550See also \helpref{wxIsBusy}{wxisbusy}, \helpref{wxBusyCursor}{wxbusycursor}.
a660d684 1551
954b8ae6
JS
1552\wxheading{Include files}
1553
b0fc8832 1554<wx/utils.h>
954b8ae6 1555
b0fc8832 1556\membersection{::wxGetColourFromUser}\label{wxgetcolourfromuser}
a660d684 1557
b0fc8832 1558\func{wxColour}{wxGetColourFromUser}{\param{wxWindow *}{parent}, \param{const wxColour\& }{colInit}}
a660d684 1559
b0fc8832
VZ
1560Shows the colour selection dialog and returns the colour selected by user or
1561invalid colour (use \helpref{wxColour::Ok}{wxcolourok} to test whether a colour
1562is valid) if the dialog was cancelled.
a660d684 1563
b0fc8832 1564\wxheading{Parameters}
a660d684 1565
b0fc8832 1566\docparam{parent}{The parent window for the colour selection dialog}
a660d684 1567
b0fc8832 1568\docparam{colInit}{If given, this will be the colour initially selected in the dialog.}
a660d684 1569
b0fc8832 1570\wxheading{Include files}
a660d684 1571
b0fc8832 1572<wx/colordlg.h>
a660d684 1573
d741c583
VZ
1574\membersection{::wxGetFontFromUser}\label{wxgetfontfromuser}
1575
1576\func{wxFont}{wxGetFontFromUser}{\param{wxWindow *}{parent}, \param{const wxFont\& }{fontInit}}
1577
1578Shows the font selection dialog and returns the font selected by user or
1579invalid font (use \helpref{wxFont::Ok}{wxfontok} to test whether a font
1580is valid) if the dialog was cancelled.
1581
1582\wxheading{Parameters}
1583
65d877d2 1584\docparam{parent}{The parent window for the font selection dialog}
d741c583
VZ
1585
1586\docparam{fontInit}{If given, this will be the font initially selected in the dialog.}
1587
1588\wxheading{Include files}
1589
1590<wx/fontdlg.h>
1591
1592
b0fc8832 1593\membersection{::wxGetMultipleChoices}\label{wxgetmultiplechoices}
a660d684 1594
b0fc8832
VZ
1595\func{size\_t}{wxGetMultipleChoices}{\\
1596 \param{wxArrayInt\& }{selections},\\
1597 \param{const wxString\& }{message},\\
1598 \param{const wxString\& }{caption},\\
1599 \param{const wxArrayString\& }{aChoices},\\
1600 \param{wxWindow *}{parent = NULL},\\
1601 \param{int}{ x = -1}, \param{int}{ y = -1},\\
cc81d32f 1602 \param{bool}{ centre = true},\\
b0fc8832 1603 \param{int }{width=150}, \param{int }{height=200}}
a660d684 1604
b0fc8832
VZ
1605\func{size\_t}{wxGetMultipleChoices}{\\
1606 \param{wxArrayInt\& }{selections},\\
1607 \param{const wxString\& }{message},\\
1608 \param{const wxString\& }{caption},\\
1609 \param{int}{ n}, \param{const wxString\& }{choices[]},\\
1610 \param{wxWindow *}{parent = NULL},\\
1611 \param{int}{ x = -1}, \param{int}{ y = -1},\\
cc81d32f 1612 \param{bool}{ centre = true},\\
b0fc8832 1613 \param{int }{width=150}, \param{int }{height=200}}
a660d684 1614
b0fc8832
VZ
1615Pops up a dialog box containing a message, OK/Cancel buttons and a
1616multiple-selection listbox. The user may choose an arbitrary (including 0)
1617number of items in the listbox whose indices will be returned in
1618{\it selection} array. The initial contents of this array will be used to
1619select the items when the dialog is shown.
a660d684 1620
b0fc8832
VZ
1621You may pass the list of strings to choose from either using {\it choices}
1622which is an array of {\it n} strings for the listbox or by using a single
1623{\it aChoices} parameter of type \helpref{wxArrayString}{wxarraystring}.
a660d684 1624
cc81d32f
VS
1625If {\it centre} is true, the message text (which may include new line
1626characters) is centred; if false, the message is left-justified.
a660d684 1627
b0fc8832 1628\wxheading{Include files}
a660d684 1629
b0fc8832 1630<wx/choicdlg.h>
a660d684 1631
b0fc8832
VZ
1632\perlnote{In wxPerl there is just an array reference in place of {\tt n}
1633and {\tt choices}, and no {\tt selections} parameter; the function
1634returns an array containing the user selections.}
a660d684 1635
b0fc8832 1636\membersection{::wxGetNumberFromUser}\label{wxgetnumberfromuser}
a660d684 1637
b0fc8832
VZ
1638\func{long}{wxGetNumberFromUser}{
1639 \param{const wxString\& }{message},
1640 \param{const wxString\& }{prompt},
1641 \param{const wxString\& }{caption},
1642 \param{long }{value},
1643 \param{long }{min = 0},
1644 \param{long }{max = 100},
1645 \param{wxWindow *}{parent = NULL},
1646 \param{const wxPoint\& }{pos = wxDefaultPosition}}
a660d684 1647
b0fc8832
VZ
1648Shows a dialog asking the user for numeric input. The dialogs title is set to
1649{\it caption}, it contains a (possibly) multiline {\it message} above the
1650single line {\it prompt} and the zone for entering the number.
a660d684 1651
b0fc8832
VZ
1652The number entered must be in the range {\it min}..{\it max} (both of which
1653should be positive) and {\it value} is the initial value of it. If the user
1654enters an invalid value or cancels the dialog, the function will return -1.
a660d684 1655
b0fc8832
VZ
1656Dialog is centered on its {\it parent} unless an explicit position is given in
1657{\it pos}.
a660d684 1658
b0fc8832 1659\wxheading{Include files}
a660d684 1660
b0fc8832 1661<wx/textdlg.h>
a660d684 1662
b0fc8832 1663\membersection{::wxGetPasswordFromUser}\label{wxgetpasswordfromuser}
a660d684 1664
b0fc8832
VZ
1665\func{wxString}{wxGetTextFromUser}{\param{const wxString\& }{message}, \param{const wxString\& }{caption = ``Input text"},\\
1666 \param{const wxString\& }{default\_value = ``"}, \param{wxWindow *}{parent = NULL}}
a660d684 1667
b0fc8832
VZ
1668Similar to \helpref{wxGetTextFromUser}{wxgettextfromuser} but the text entered
1669in the dialog is not shown on screen but replaced with stars. This is intended
1670to be used for entering passwords as the function name implies.
a660d684 1671
b0fc8832 1672\wxheading{Include files}
a660d684 1673
b0fc8832 1674<wx/textdlg.h>
a660d684 1675
b0fc8832 1676\membersection{::wxGetTextFromUser}\label{wxgettextfromuser}
a660d684 1677
b0fc8832
VZ
1678\func{wxString}{wxGetTextFromUser}{\param{const wxString\& }{message}, \param{const wxString\& }{caption = ``Input text"},\\
1679 \param{const wxString\& }{default\_value = ``"}, \param{wxWindow *}{parent = NULL},\\
cc81d32f 1680 \param{int}{ x = -1}, \param{int}{ y = -1}, \param{bool}{ centre = true}}
a660d684 1681
b0fc8832
VZ
1682Pop up a dialog box with title set to {\it caption}, {\it message}, and a
1683\rtfsp{\it default\_value}. The user may type in text and press OK to return this text,
1684or press Cancel to return the empty string.
a660d684 1685
cc81d32f
VS
1686If {\it centre} is true, the message text (which may include new line characters)
1687is centred; if false, the message is left-justified.
a660d684 1688
b0fc8832 1689\wxheading{Include files}
a660d684 1690
b0fc8832 1691<wx/textdlg.h>
a660d684 1692
b0fc8832 1693\membersection{::wxGetMultipleChoice}\label{wxgetmultiplechoice}
a660d684 1694
b0fc8832
VZ
1695\func{int}{wxGetMultipleChoice}{\param{const wxString\& }{message}, \param{const wxString\& }{caption}, \param{int}{ n}, \param{const wxString\& }{choices[]},\\
1696 \param{int }{nsel}, \param{int *}{selection},
1697 \param{wxWindow *}{parent = NULL}, \param{int}{ x = -1}, \param{int}{ y = -1},\\
cc81d32f 1698 \param{bool}{ centre = true}, \param{int }{width=150}, \param{int }{height=200}}
a660d684 1699
b0fc8832
VZ
1700Pops up a dialog box containing a message, OK/Cancel buttons and a multiple-selection
1701listbox. The user may choose one or more item(s) and press OK or Cancel.
a660d684 1702
b0fc8832
VZ
1703The number of initially selected choices, and array of the selected indices,
1704are passed in; this array will contain the user selections on exit, with
1705the function returning the number of selections. {\it selection} must be
1706as big as the number of choices, in case all are selected.
a660d684 1707
b0fc8832 1708If Cancel is pressed, -1 is returned.
a660d684 1709
b0fc8832 1710{\it choices} is an array of {\it n} strings for the listbox.
a660d684 1711
cc81d32f
VS
1712If {\it centre} is true, the message text (which may include new line characters)
1713is centred; if false, the message is left-justified.
a660d684 1714
b0fc8832 1715\wxheading{Include files}
a660d684 1716
b0fc8832 1717<wx/choicdlg.h>
a660d684 1718
b0fc8832 1719\membersection{::wxGetSingleChoice}\label{wxgetsinglechoice}
a660d684 1720
b0fc8832
VZ
1721\func{wxString}{wxGetSingleChoice}{\param{const wxString\& }{message},\\
1722 \param{const wxString\& }{caption},\\
1723 \param{const wxArrayString\& }{aChoices},\\
1724 \param{wxWindow *}{parent = NULL},\\
1725 \param{int}{ x = -1}, \param{int}{ y = -1},\\
cc81d32f 1726 \param{bool}{ centre = true},\\
b0fc8832 1727 \param{int }{width=150}, \param{int }{height=200}}
a660d684 1728
b0fc8832
VZ
1729\func{wxString}{wxGetSingleChoice}{\param{const wxString\& }{message},\\
1730 \param{const wxString\& }{caption},\\
1731 \param{int}{ n}, \param{const wxString\& }{choices[]},\\
1732 \param{wxWindow *}{parent = NULL},\\
1733 \param{int}{ x = -1}, \param{int}{ y = -1},\\
cc81d32f 1734 \param{bool}{ centre = true},\\
b0fc8832 1735 \param{int }{width=150}, \param{int }{height=200}}
a660d684 1736
b0fc8832
VZ
1737Pops up a dialog box containing a message, OK/Cancel buttons and a
1738single-selection listbox. The user may choose an item and press OK to return a
1739string or Cancel to return the empty string. Use
1740\helpref{wxGetSingleChoiceIndex}{wxgetsinglechoiceindex} if empty string is a
1741valid choice and if you want to be able to detect pressing Cancel reliably.
a660d684 1742
b0fc8832
VZ
1743You may pass the list of strings to choose from either using {\it choices}
1744which is an array of {\it n} strings for the listbox or by using a single
1745{\it aChoices} parameter of type \helpref{wxArrayString}{wxarraystring}.
a660d684 1746
cc81d32f
VS
1747If {\it centre} is true, the message text (which may include new line
1748characters) is centred; if false, the message is left-justified.
a660d684 1749
954b8ae6
JS
1750\wxheading{Include files}
1751
b0fc8832 1752<wx/choicdlg.h>
954b8ae6 1753
b0fc8832
VZ
1754\perlnote{In wxPerl there is just an array reference in place of {\tt n}
1755and {\tt choices}.}
a660d684 1756
b0fc8832 1757\membersection{::wxGetSingleChoiceIndex}\label{wxgetsinglechoiceindex}
a660d684 1758
b0fc8832
VZ
1759\func{int}{wxGetSingleChoiceIndex}{\param{const wxString\& }{message},\\
1760 \param{const wxString\& }{caption},\\
1761 \param{const wxArrayString\& }{aChoices},\\
1762 \param{wxWindow *}{parent = NULL}, \param{int}{ x = -1}, \param{int}{ y = -1},\\
cc81d32f 1763 \param{bool}{ centre = true}, \param{int }{width=150}, \param{int }{height=200}}
a660d684 1764
b0fc8832
VZ
1765\func{int}{wxGetSingleChoiceIndex}{\param{const wxString\& }{message},\\
1766 \param{const wxString\& }{caption},\\
1767 \param{int}{ n}, \param{const wxString\& }{choices[]},\\
1768 \param{wxWindow *}{parent = NULL}, \param{int}{ x = -1}, \param{int}{ y = -1},\\
cc81d32f 1769 \param{bool}{ centre = true}, \param{int }{width=150}, \param{int }{height=200}}
a660d684 1770
b0fc8832
VZ
1771As {\bf wxGetSingleChoice} but returns the index representing the selected
1772string. If the user pressed cancel, -1 is returned.
a660d684 1773
b0fc8832 1774\wxheading{Include files}
a660d684 1775
b0fc8832 1776<wx/choicdlg.h>
a660d684 1777
b0fc8832
VZ
1778\perlnote{In wxPerl there is just an array reference in place of {\tt n}
1779and {\tt choices}.}
a660d684 1780
b0fc8832 1781\membersection{::wxGetSingleChoiceData}\label{wxgetsinglechoicedata}
a660d684 1782
b0fc8832
VZ
1783\func{wxString}{wxGetSingleChoiceData}{\param{const wxString\& }{message},\\
1784 \param{const wxString\& }{caption},\\
1785 \param{const wxArrayString\& }{aChoices},\\
1786 \param{const wxString\& }{client\_data[]},\\
1787 \param{wxWindow *}{parent = NULL},\\
1788 \param{int}{ x = -1}, \param{int}{ y = -1},\\
cc81d32f 1789 \param{bool}{ centre = true}, \param{int }{width=150}, \param{int }{height=200}}
a660d684 1790
b0fc8832
VZ
1791\func{wxString}{wxGetSingleChoiceData}{\param{const wxString\& }{message},\\
1792 \param{const wxString\& }{caption},\\
1793 \param{int}{ n}, \param{const wxString\& }{choices[]},\\
1794 \param{const wxString\& }{client\_data[]},\\
1795 \param{wxWindow *}{parent = NULL},\\
1796 \param{int}{ x = -1}, \param{int}{ y = -1},\\
cc81d32f 1797 \param{bool}{ centre = true}, \param{int }{width=150}, \param{int }{height=200}}
a660d684 1798
b0fc8832
VZ
1799As {\bf wxGetSingleChoice} but takes an array of client data pointers
1800corresponding to the strings, and returns one of these pointers or NULL if
1801Cancel was pressed. The {\it client\_data} array must have the same number of
1802elements as {\it choices} or {\it aChoices}!
a660d684 1803
b0fc8832 1804\wxheading{Include files}
a660d684 1805
b0fc8832 1806<wx/choicdlg.h>
a660d684 1807
b0fc8832
VZ
1808\perlnote{In wxPerl there is just an array reference in place of {\tt n}
1809and {\tt choices}, and the client data array must have the
1810same length as the choices array.}
a660d684 1811
b0fc8832 1812\membersection{::wxIsBusy}\label{wxisbusy}
a660d684 1813
b0fc8832 1814\func{bool}{wxIsBusy}{\void}
a660d684 1815
cc81d32f 1816Returns true if between two \helpref{wxBeginBusyCursor}{wxbeginbusycursor} and\rtfsp
b0fc8832 1817\helpref{wxEndBusyCursor}{wxendbusycursor} calls.
a660d684 1818
b0fc8832 1819See also \helpref{wxBusyCursor}{wxbusycursor}.
a660d684 1820
b0fc8832 1821\wxheading{Include files}
a660d684 1822
b0fc8832 1823<wx/utils.h>
a660d684 1824
b0fc8832 1825\membersection{::wxMessageBox}\label{wxmessagebox}
a660d684 1826
b0fc8832
VZ
1827\func{int}{wxMessageBox}{\param{const wxString\& }{message}, \param{const wxString\& }{caption = ``Message"}, \param{int}{ style = wxOK \pipe wxCENTRE},\\
1828 \param{wxWindow *}{parent = NULL}, \param{int}{ x = -1}, \param{int}{ y = -1}}
a660d684 1829
b0fc8832
VZ
1830General purpose message dialog. {\it style} may be a bit list of the
1831following identifiers:
a660d684 1832
b0fc8832
VZ
1833\begin{twocollist}\itemsep=0pt
1834\twocolitem{wxYES\_NO}{Puts Yes and No buttons on the message box. May be combined with
1835wxCANCEL.}
1836\twocolitem{wxCANCEL}{Puts a Cancel button on the message box. May be combined with
1837wxYES\_NO or wxOK.}
1838\twocolitem{wxOK}{Puts an Ok button on the message box. May be combined with wxCANCEL.}
1839\twocolitem{wxCENTRE}{Centres the text.}
1840\twocolitem{wxICON\_EXCLAMATION}{Displays an exclamation mark symbol.}
1841\twocolitem{wxICON\_HAND}{Displays an error symbol.}
1842\twocolitem{wxICON\_ERROR}{Displays an error symbol - the same as wxICON\_HAND.}
1843\twocolitem{wxICON\_QUESTION}{Displays a question mark symbol.}
1844\twocolitem{wxICON\_INFORMATION}{Displays an information symbol.}
1845\end{twocollist}
a660d684 1846
b0fc8832 1847The return value is one of: wxYES, wxNO, wxCANCEL, wxOK.
a660d684 1848
b0fc8832 1849For example:
a660d684 1850
b0fc8832
VZ
1851\begin{verbatim}
1852 ...
1853 int answer = wxMessageBox("Quit program?", "Confirm",
1854 wxYES_NO | wxCANCEL, main_frame);
1855 if (answer == wxYES)
1856 delete main_frame;
1857 ...
1858\end{verbatim}
a660d684 1859
b0fc8832
VZ
1860{\it message} may contain newline characters, in which case the
1861message will be split into separate lines, to cater for large messages.
a660d684 1862
b0fc8832
VZ
1863Under Windows, the native MessageBox function is used unless wxCENTRE
1864is specified in the style, in which case a generic function is used.
1865This is because the native MessageBox function cannot centre text.
1866The symbols are not shown when the generic function is used.
a660d684 1867
b0fc8832 1868\wxheading{Include files}
a660d684 1869
b0fc8832 1870<wx/msgdlg.h>
a660d684 1871
b0fc8832 1872\membersection{::wxShowTip}\label{wxshowtip}
a660d684 1873
b0fc8832
VZ
1874\func{bool}{wxShowTip}{\param{wxWindow *}{parent},
1875 \param{wxTipProvider *}{tipProvider},
cc81d32f 1876 \param{bool }{showAtStartup = true}}
a660d684 1877
7975104d
MB
1878This function shows a "startup tip" to the user. The return value is the
1879state of the ``Show tips at startup'' checkbox.
a660d684 1880
b0fc8832 1881\docparam{parent}{The parent window for the modal dialog}
a660d684 1882
b0fc8832
VZ
1883\docparam{tipProvider}{An object which is used to get the text of the tips.
1884It may be created with the \helpref{wxCreateFileTipProvider}{wxcreatefiletipprovider} function.}
a660d684 1885
cc81d32f 1886\docparam{showAtStartup}{Should be true if startup tips are shown, false
b0fc8832
VZ
1887otherwise. This is used as the initial value for "Show tips at startup"
1888checkbox which is shown in the tips dialog.}
a660d684 1889
b0fc8832 1890\wxheading{See also}
a660d684 1891
b0fc8832 1892\helpref{Tips overview}{tipsoverview}
a660d684 1893
b0fc8832 1894\wxheading{Include files}
f6bcfd97 1895
b0fc8832 1896<wx/tipdlg.h>
f6bcfd97 1897
a02afd14
VZ
1898
1899\section{Math functions}
1900
1901\wxheading{Include files}
1902
1903<wx/math.h>
1904
1905\membersection{wxFinite}\label{wxfinite}
1906
1907\func{int}{wxFinite}{\param{double }{x}}
1908
1909Returns a non-zero value if {\it x} is neither infinite or NaN (not a number),
1910returns 0 otherwise.
1911
1912\membersection{wxIsNaN}\label{wxisnan}
1913
1914\func{bool}{wxIsNaN}{\param{double }{x}}
1915
1916Returns a non-zero value if {\it x} is NaN (not a number), returns 0
1917otherwise.
1918
1919
b0fc8832 1920\section{GDI functions}\label{gdifunctions}
f6bcfd97 1921
b0fc8832 1922The following are relevant to the GDI (Graphics Device Interface).
f6bcfd97
BP
1923
1924\wxheading{Include files}
1925
b0fc8832 1926<wx/gdicmn.h>
f6bcfd97 1927
b0fc8832 1928\membersection{wxBITMAP}\label{wxbitmapmacro}
a660d684 1929
b0fc8832 1930\func{}{wxBITMAP}{bitmapName}
a660d684 1931
b0fc8832
VZ
1932This macro loads a bitmap from either application resources (on the platforms
1933for which they exist, i.e. Windows and OS2) or from an XPM file. It allows to
1934avoid using {\tt \#ifdef}s when creating bitmaps.
a660d684 1935
b0fc8832 1936\wxheading{See also}
954b8ae6 1937
b0fc8832
VZ
1938\helpref{Bitmaps and icons overview}{wxbitmapoverview},
1939\helpref{wxICON}{wxiconmacro}
a660d684 1940
b0fc8832 1941\wxheading{Include files}
954b8ae6 1942
b0fc8832 1943<wx/gdicmn.h>
a660d684 1944
b0fc8832 1945\membersection{::wxClientDisplayRect}\label{wxclientdisplayrect}
a660d684 1946
b0fc8832
VZ
1947\func{void}{wxClientDisplayRect}{\param{int *}{x}, \param{int *}{y},
1948\param{int *}{width}, \param{int *}{height}}
954b8ae6 1949
b0fc8832 1950\func{wxRect}{wxGetClientDisplayRect}{\void}
954b8ae6 1951
b0fc8832
VZ
1952Returns the dimensions of the work area on the display. On Windows
1953this means the area not covered by the taskbar, etc. Other platforms
1954are currently defaulting to the whole display until a way is found to
1955provide this info for all window managers, etc.
a660d684 1956
b0fc8832 1957\membersection{::wxColourDisplay}\label{wxcolourdisplay}
a660d684 1958
b0fc8832 1959\func{bool}{wxColourDisplay}{\void}
a660d684 1960
cc81d32f 1961Returns true if the display is colour, false otherwise.
a660d684 1962
b0fc8832 1963\membersection{::wxDisplayDepth}\label{wxdisplaydepth}
954b8ae6 1964
b0fc8832 1965\func{int}{wxDisplayDepth}{\void}
954b8ae6 1966
b0fc8832 1967Returns the depth of the display (a value of 1 denotes a monochrome display).
a660d684 1968
b0fc8832 1969\membersection{::wxDisplaySize}\label{wxdisplaysize}
a660d684 1970
b0fc8832 1971\func{void}{wxDisplaySize}{\param{int *}{width}, \param{int *}{height}}
a660d684 1972
b0fc8832 1973\func{wxSize}{wxGetDisplaySize}{\void}
a660d684 1974
b0fc8832 1975Returns the display size in pixels.
a660d684 1976
b0fc8832 1977\membersection{::wxDisplaySizeMM}\label{wxdisplaysizemm}
a660d684 1978
b0fc8832 1979\func{void}{wxDisplaySizeMM}{\param{int *}{width}, \param{int *}{height}}
a660d684 1980
b0fc8832 1981\func{wxSize}{wxGetDisplaySizeMM}{\void}
a660d684 1982
b0fc8832 1983Returns the display size in millimeters.
e2a6f233 1984
b0fc8832 1985\membersection{::wxDROP\_ICON}\label{wxdropicon}
e2a6f233 1986
b0fc8832 1987\func{wxIconOrCursor}{wxDROP\_ICON}{\param{const char *}{name}}
e2a6f233 1988
b0fc8832
VZ
1989This macro creates either a cursor (MSW) or an icon (elsewhere) with the given
1990name. Under MSW, the cursor is loaded from the resource file and the icon is
1991loaded from XPM file under other platforms.
1992
1993This macro should be used with
1994\helpref{wxDropSource constructor}{wxdropsourcewxdropsource}.
e2a6f233 1995
954b8ae6
JS
1996\wxheading{Include files}
1997
b0fc8832 1998<wx/dnd.h>
954b8ae6 1999
b0fc8832 2000\membersection{wxICON}\label{wxiconmacro}
e2a6f233 2001
b0fc8832 2002\func{}{wxICON}{iconName}
e2a6f233 2003
b0fc8832
VZ
2004This macro loads an icon from either application resources (on the platforms
2005for which they exist, i.e. Windows and OS2) or from an XPM file. It allows to
2006avoid using {\tt \#ifdef}s when creating icons.
e2a6f233 2007
b0fc8832 2008\wxheading{See also}
e2a6f233 2009
b0fc8832
VZ
2010\helpref{Bitmaps and icons overview}{wxbitmapoverview},
2011\helpref{wxBITMAP}{wxbitmapmacro}
e2a6f233 2012
954b8ae6
JS
2013\wxheading{Include files}
2014
b0fc8832 2015<wx/gdicmn.h>
a660d684 2016
b0fc8832 2017\membersection{::wxMakeMetafilePlaceable}\label{wxmakemetafileplaceable}
de6019fb 2018
b0fc8832
VZ
2019\func{bool}{wxMakeMetafilePlaceable}{\param{const wxString\& }{filename}, \param{int }{minX}, \param{int }{minY},
2020 \param{int }{maxX}, \param{int }{maxY}, \param{float }{scale=1.0}}
a660d684 2021
b0fc8832
VZ
2022Given a filename for an existing, valid metafile (as constructed using \helpref{wxMetafileDC}{wxmetafiledc})
2023makes it into a placeable metafile by prepending a header containing the given
2024bounding box. The bounding box may be obtained from a device context after drawing
2025into it, using the functions wxDC::MinX, wxDC::MinY, wxDC::MaxX and wxDC::MaxY.
a660d684 2026
b0fc8832
VZ
2027In addition to adding the placeable metafile header, this function adds
2028the equivalent of the following code to the start of the metafile data:
a660d684 2029
b0fc8832
VZ
2030\begin{verbatim}
2031 SetMapMode(dc, MM_ANISOTROPIC);
2032 SetWindowOrg(dc, minX, minY);
2033 SetWindowExt(dc, maxX - minX, maxY - minY);
2034\end{verbatim}
6fb26ea3 2035
b0fc8832 2036This simulates the wxMM\_TEXT mapping mode, which wxWindows assumes.
954b8ae6 2037
b0fc8832
VZ
2038Placeable metafiles may be imported by many Windows applications, and can be
2039used in RTF (Rich Text Format) files.
954b8ae6 2040
b0fc8832 2041{\it scale} allows the specification of scale for the metafile.
a660d684 2042
b0fc8832 2043This function is only available under Windows.
a660d684 2044
b0fc8832 2045\membersection{::wxSetCursor}\label{wxsetcursor}
a660d684 2046
b0fc8832 2047\func{void}{wxSetCursor}{\param{wxCursor *}{cursor}}
954b8ae6 2048
b0fc8832
VZ
2049Globally sets the cursor; only has an effect in Windows and GTK.
2050See also \helpref{wxCursor}{wxcursor}, \helpref{wxWindow::SetCursor}{wxwindowsetcursor}.
954b8ae6 2051
b0fc8832 2052\section{Printer settings}\label{printersettings}
8e193f38 2053
2bd25c5a 2054{\bf NB:} These routines are obsolete and should no longer be used!
8e193f38 2055
b0fc8832
VZ
2056The following functions are used to control PostScript printing. Under
2057Windows, PostScript output can only be sent to a file.
8e193f38
VZ
2058
2059\wxheading{Include files}
2060
b0fc8832 2061<wx/dcps.h>
a660d684 2062
b0fc8832 2063\membersection{::wxGetPrinterCommand}\label{wxgetprintercommand}
a660d684 2064
b0fc8832 2065\func{wxString}{wxGetPrinterCommand}{\void}
a660d684 2066
b0fc8832 2067Gets the printer command used to print a file. The default is {\tt lpr}.
a660d684 2068
b0fc8832 2069\membersection{::wxGetPrinterFile}\label{wxgetprinterfile}
a660d684 2070
b0fc8832 2071\func{wxString}{wxGetPrinterFile}{\void}
a660d684 2072
b0fc8832 2073Gets the PostScript output filename.
a660d684 2074
b0fc8832 2075\membersection{::wxGetPrinterMode}\label{wxgetprintermode}
a660d684 2076
b0fc8832 2077\func{int}{wxGetPrinterMode}{\void}
954b8ae6 2078
b0fc8832
VZ
2079Gets the printing mode controlling where output is sent (PS\_PREVIEW, PS\_FILE or PS\_PRINTER).
2080The default is PS\_PREVIEW.
954b8ae6 2081
b0fc8832 2082\membersection{::wxGetPrinterOptions}\label{wxgetprinteroptions}
954b8ae6 2083
b0fc8832 2084\func{wxString}{wxGetPrinterOptions}{\void}
954b8ae6 2085
b0fc8832 2086Gets the additional options for the print command (e.g. specific printer). The default is nothing.
954b8ae6 2087
b0fc8832 2088\membersection{::wxGetPrinterOrientation}\label{wxgetprinterorientation}
954b8ae6 2089
b0fc8832 2090\func{int}{wxGetPrinterOrientation}{\void}
a660d684 2091
b0fc8832 2092Gets the orientation (PS\_PORTRAIT or PS\_LANDSCAPE). The default is PS\_PORTRAIT.
a660d684 2093
b0fc8832 2094\membersection{::wxGetPrinterPreviewCommand}\label{wxgetprinterpreviewcommand}
8e193f38 2095
b0fc8832 2096\func{wxString}{wxGetPrinterPreviewCommand}{\void}
a660d684 2097
b0fc8832 2098Gets the command used to view a PostScript file. The default depends on the platform.
954b8ae6 2099
b0fc8832 2100\membersection{::wxGetPrinterScaling}\label{wxgetprinterscaling}
954b8ae6 2101
b0fc8832 2102\func{void}{wxGetPrinterScaling}{\param{float *}{x}, \param{float *}{y}}
a660d684 2103
b0fc8832 2104Gets the scaling factor for PostScript output. The default is 1.0, 1.0.
a660d684 2105
b0fc8832 2106\membersection{::wxGetPrinterTranslation}\label{wxgetprintertranslation}
a660d684 2107
b0fc8832 2108\func{void}{wxGetPrinterTranslation}{\param{float *}{x}, \param{float *}{y}}
954b8ae6 2109
b0fc8832 2110Gets the translation (from the top left corner) for PostScript output. The default is 0.0, 0.0.
954b8ae6 2111
b0fc8832 2112\membersection{::wxSetPrinterCommand}\label{wxsetprintercommand}
a660d684 2113
b0fc8832 2114\func{void}{wxSetPrinterCommand}{\param{const wxString\& }{command}}
a660d684 2115
b0fc8832 2116Sets the printer command used to print a file. The default is {\tt lpr}.
a660d684 2117
b0fc8832 2118\membersection{::wxSetPrinterFile}\label{wxsetprinterfile}
cd6ce4a9 2119
b0fc8832 2120\func{void}{wxSetPrinterFile}{\param{const wxString\& }{filename}}
f6bcfd97 2121
b0fc8832 2122Sets the PostScript output filename.
a660d684 2123
b0fc8832 2124\membersection{::wxSetPrinterMode}\label{wxsetprintermode}
a660d684 2125
b0fc8832 2126\func{void}{wxSetPrinterMode}{\param{int }{mode}}
a660d684 2127
b0fc8832
VZ
2128Sets the printing mode controlling where output is sent (PS\_PREVIEW, PS\_FILE or PS\_PRINTER).
2129The default is PS\_PREVIEW.
cd6ce4a9 2130
b0fc8832 2131\membersection{::wxSetPrinterOptions}\label{wxsetprinteroptions}
a660d684 2132
b0fc8832 2133\func{void}{wxSetPrinterOptions}{\param{const wxString\& }{options}}
e6045e08 2134
b0fc8832 2135Sets the additional options for the print command (e.g. specific printer). The default is nothing.
a660d684 2136
b0fc8832 2137\membersection{::wxSetPrinterOrientation}\label{wxsetprinterorientation}
eafc087e 2138
b0fc8832 2139\func{void}{wxSetPrinterOrientation}{\param{int}{ orientation}}
cd6ce4a9 2140
b0fc8832 2141Sets the orientation (PS\_PORTRAIT or PS\_LANDSCAPE). The default is PS\_PORTRAIT.
a660d684 2142
b0fc8832 2143\membersection{::wxSetPrinterPreviewCommand}\label{wxsetprinterpreviewcommand}
954b8ae6 2144
b0fc8832 2145\func{void}{wxSetPrinterPreviewCommand}{\param{const wxString\& }{command}}
954b8ae6 2146
b0fc8832 2147Sets the command used to view a PostScript file. The default depends on the platform.
a660d684 2148
b0fc8832 2149\membersection{::wxSetPrinterScaling}\label{wxsetprinterscaling}
a660d684 2150
b0fc8832 2151\func{void}{wxSetPrinterScaling}{\param{float }{x}, \param{float }{y}}
a660d684 2152
b0fc8832 2153Sets the scaling factor for PostScript output. The default is 1.0, 1.0.
954b8ae6 2154
b0fc8832 2155\membersection{::wxSetPrinterTranslation}\label{wxsetprintertranslation}
954b8ae6 2156
b0fc8832 2157\func{void}{wxSetPrinterTranslation}{\param{float }{x}, \param{float }{y}}
a660d684 2158
b0fc8832 2159Sets the translation (from the top left corner) for PostScript output. The default is 0.0, 0.0.
a660d684 2160
b0fc8832
VZ
2161\section{Clipboard functions}\label{clipsboard}
2162
2163These clipboard functions are implemented for Windows only. The use of these functions
2164is deprecated and the code is no longer maintained. Use the \helpref{wxClipboard}{wxclipboard}
2165class instead.
a660d684 2166
954b8ae6
JS
2167\wxheading{Include files}
2168
b0fc8832 2169<wx/clipbrd.h>
954b8ae6 2170
f4fcc291 2171\membersection{::wxClipboardOpen}\label{functionwxclipboardopen}
a660d684 2172
b0fc8832 2173\func{bool}{wxClipboardOpen}{\void}
a660d684 2174
cc81d32f 2175Returns true if this application has already opened the clipboard.
a660d684 2176
b0fc8832 2177\membersection{::wxCloseClipboard}\label{wxcloseclipboard}
954b8ae6 2178
b0fc8832 2179\func{bool}{wxCloseClipboard}{\void}
954b8ae6 2180
b0fc8832 2181Closes the clipboard to allow other applications to use it.
a660d684 2182
b0fc8832 2183\membersection{::wxEmptyClipboard}\label{wxemptyclipboard}
a660d684 2184
b0fc8832 2185\func{bool}{wxEmptyClipboard}{\void}
a660d684 2186
b0fc8832 2187Empties the clipboard.
954b8ae6 2188
b0fc8832 2189\membersection{::wxEnumClipboardFormats}\label{wxenumclipboardformats}
954b8ae6 2190
b0fc8832 2191\func{int}{wxEnumClipboardFormats}{\param{int}{dataFormat}}
a660d684 2192
b0fc8832
VZ
2193Enumerates the formats found in a list of available formats that belong
2194to the clipboard. Each call to this function specifies a known
2195available format; the function returns the format that appears next in
2196the list.
a660d684 2197
b0fc8832
VZ
2198{\it dataFormat} specifies a known format. If this parameter is zero,
2199the function returns the first format in the list.
a660d684 2200
b0fc8832
VZ
2201The return value specifies the next known clipboard data format if the
2202function is successful. It is zero if the {\it dataFormat} parameter specifies
2203the last format in the list of available formats, or if the clipboard
2204is not open.
a660d684 2205
b0fc8832
VZ
2206Before it enumerates the formats function, an application must open the clipboard by using the
2207wxOpenClipboard function.
954b8ae6 2208
b0fc8832 2209\membersection{::wxGetClipboardData}\label{wxgetclipboarddata}
954b8ae6 2210
b0fc8832 2211\func{wxObject *}{wxGetClipboardData}{\param{int}{dataFormat}}
26a80c22 2212
b0fc8832 2213Gets data from the clipboard.
26a80c22 2214
b0fc8832 2215{\it dataFormat} may be one of:
26a80c22 2216
b0fc8832
VZ
2217\begin{itemize}\itemsep=0pt
2218\item wxCF\_TEXT or wxCF\_OEMTEXT: returns a pointer to new memory containing a null-terminated text string.
2219\item wxCF\_BITMAP: returns a new wxBitmap.
2220\end{itemize}
26a80c22 2221
b0fc8832 2222The clipboard must have previously been opened for this call to succeed.
26a80c22 2223
b0fc8832 2224\membersection{::wxGetClipboardFormatName}\label{wxgetclipboardformatname}
26a80c22 2225
b0fc8832 2226\func{bool}{wxGetClipboardFormatName}{\param{int}{dataFormat}, \param{const wxString\& }{formatName}, \param{int}{maxCount}}
a660d684 2227
b0fc8832
VZ
2228Gets the name of a registered clipboard format, and puts it into the buffer {\it formatName} which is of maximum
2229length {\it maxCount}. {\it dataFormat} must not specify a predefined clipboard format.
a660d684 2230
b0fc8832 2231\membersection{::wxIsClipboardFormatAvailable}\label{wxisclipboardformatavailable}
a660d684 2232
b0fc8832 2233\func{bool}{wxIsClipboardFormatAvailable}{\param{int}{dataFormat}}
954b8ae6 2234
cc81d32f 2235Returns true if the given data format is available on the clipboard.
954b8ae6 2236
b0fc8832 2237\membersection{::wxOpenClipboard}\label{wxopenclipboard}
a660d684 2238
b0fc8832 2239\func{bool}{wxOpenClipboard}{\void}
a660d684 2240
b0fc8832 2241Opens the clipboard for passing data to it or getting data from it.
a660d684 2242
b0fc8832 2243\membersection{::wxRegisterClipboardFormat}\label{wxregisterclipboardformat}
954b8ae6 2244
b0fc8832 2245\func{int}{wxRegisterClipboardFormat}{\param{const wxString\& }{formatName}}
954b8ae6 2246
b0fc8832 2247Registers the clipboard data format name and returns an identifier.
a660d684 2248
b0fc8832 2249\membersection{::wxSetClipboardData}\label{wxsetclipboarddata}
a660d684 2250
b0fc8832 2251\func{bool}{wxSetClipboardData}{\param{int}{dataFormat}, \param{wxObject *}{data}, \param{int}{width}, \param{int}{height}}
c51deffc 2252
b0fc8832 2253Passes data to the clipboard.
c51deffc 2254
b0fc8832 2255{\it dataFormat} may be one of:
a660d684 2256
b0fc8832
VZ
2257\begin{itemize}\itemsep=0pt
2258\item wxCF\_TEXT or wxCF\_OEMTEXT: {\it data} is a null-terminated text string.
2259\item wxCF\_BITMAP: {\it data} is a wxBitmap.
2260\item wxCF\_DIB: {\it data} is a wxBitmap. The bitmap is converted to a DIB (device independent bitmap).
2261\item wxCF\_METAFILE: {\it data} is a wxMetafile. {\it width} and {\it height} are used to give recommended dimensions.
2262\end{itemize}
954b8ae6 2263
b0fc8832 2264The clipboard must have previously been opened for this call to succeed.
954b8ae6 2265
b0fc8832 2266\section{Miscellaneous functions}\label{miscellany}
a660d684 2267
986ecc86
VZ
2268\membersection{wxEXPLICIT}\label{wxexplicit}
2269
2270{\tt wxEXPLICIT} is a macro which expands to the C++ {\tt explicit} keyword if
2271the compiler supports it or nothing otherwise. Thus, it can be used even in the
2272code which might have to be compiled with an old compiler without support for
2273this language feature but still take advantage of it when it is available.
2274
2b5f62a0
VZ
2275\membersection{wxLL}\label{wxll}
2276
2277\func{wxLongLong\_t}{wxLL}{\param{}{number}}
2278
2279This macro is defined for the platforms with a native 64 bit integer type and
2280allows to define 64 bit compile time constants:
2281
2282\begin{verbatim}
2283 #ifdef wxLongLong_t
2284 wxLongLong_t ll = wxLL(0x1234567890abcdef);
2285 #endif
2286\end{verbatim}
2287
2288\wxheading{Include files}
2289
2290<wx/longlong.h>
2291
2292\membersection{wxLongLongFmtSpec}\label{wxlonglongfmtspec}
2293
2294This macro is defined to contain the {\tt printf()} format specifier using
2295which 64 bit integer numbers (i.e. those of type {\tt wxLongLong\_t}) can be
2296printed. Example of using it:
2297
2298\begin{verbatim}
2299 #ifdef wxLongLong_t
2300 wxLongLong_t ll = wxLL(0x1234567890abcdef);
2301 printf("Long long = %" wxLongLongFmtSpec "x\n", ll);
2302 #endif
2303\end{verbatim}
2304
2305\wxheading{See also}
2306
2307\helpref{wxLL}{wxll}
2308
2309\wxheading{Include files}
2310
2311<wx/longlong.h>
2312
b0fc8832 2313\membersection{::wxNewId}\label{wxnewid}
a660d684 2314
b0fc8832
VZ
2315\func{long}{wxNewId}{\void}
2316
2317Generates an integer identifier unique to this run of the program.
a660d684 2318
954b8ae6
JS
2319\wxheading{Include files}
2320
2321<wx/utils.h>
2322
b0fc8832 2323\membersection{::wxRegisterId}\label{wxregisterid}
a660d684 2324
b0fc8832 2325\func{void}{wxRegisterId}{\param{long}{ id}}
a660d684 2326
b0fc8832
VZ
2327Ensures that ids subsequently generated by {\bf NewId} do not clash with
2328the given {\bf id}.
a660d684 2329
954b8ae6
JS
2330\wxheading{Include files}
2331
2332<wx/utils.h>
2333
b0fc8832 2334\membersection{::wxDDECleanUp}\label{wxddecleanup}
bdc72a22 2335
b0fc8832 2336\func{void}{wxDDECleanUp}{\void}
bdc72a22 2337
b0fc8832
VZ
2338Called when wxWindows exits, to clean up the DDE system. This no longer needs to be
2339called by the application.
bdc72a22 2340
b0fc8832 2341See also \helpref{wxDDEInitialize}{wxddeinitialize}.
bdc72a22
VZ
2342
2343\wxheading{Include files}
2344
b0fc8832 2345<wx/dde.h>
a660d684 2346
b0fc8832 2347\membersection{::wxDDEInitialize}\label{wxddeinitialize}
a660d684 2348
b0fc8832 2349\func{void}{wxDDEInitialize}{\void}
a660d684 2350
b0fc8832 2351Initializes the DDE system. May be called multiple times without harm.
a660d684 2352
b0fc8832
VZ
2353This no longer needs to be called by the application: it will be called
2354by wxWindows if necessary.
bdc72a22 2355
b0fc8832
VZ
2356See also \helpref{wxDDEServer}{wxddeserver}, \helpref{wxDDEClient}{wxddeclient}, \helpref{wxDDEConnection}{wxddeconnection},
2357\helpref{wxDDECleanUp}{wxddecleanup}.
bdc72a22 2358
954b8ae6
JS
2359\wxheading{Include files}
2360
b0fc8832 2361<wx/dde.h>
a660d684 2362
b0fc8832 2363\membersection{::wxEnableTopLevelWindows}\label{wxenabletoplevelwindows}
a660d684 2364
cc81d32f 2365\func{void}{wxEnableTopLevelWindow}{\param{bool}{ enable = true}}
a660d684 2366
b0fc8832
VZ
2367This function enables or disables all top level windows. It is used by
2368\helpref{::wxSafeYield}{wxsafeyield}.
a660d684 2369
954b8ae6
JS
2370\wxheading{Include files}
2371
2372<wx/utils.h>
2373
b0fc8832 2374\membersection{::wxFindMenuItemId}\label{wxfindmenuitemid}
a660d684 2375
b0fc8832 2376\func{int}{wxFindMenuItemId}{\param{wxFrame *}{frame}, \param{const wxString\& }{menuString}, \param{const wxString\& }{itemString}}
a660d684 2377
b0fc8832 2378Find a menu item identifier associated with the given frame's menu bar.
a660d684 2379
954b8ae6
JS
2380\wxheading{Include files}
2381
2382<wx/utils.h>
2383
b0fc8832 2384\membersection{::wxFindWindowByLabel}\label{wxfindwindowbylabel}
c51deffc 2385
b0fc8832 2386\func{wxWindow *}{wxFindWindowByLabel}{\param{const wxString\& }{label}, \param{wxWindow *}{parent=NULL}}
c51deffc 2387
b829bf55 2388{\bf NB:} This function is obsolete, please use
146ba0fe
VZ
2389\helpref{wxWindow::FindWindowByLabel}{wxwindowfindwindowbylabel} instead.
2390
b0fc8832
VZ
2391Find a window by its label. Depending on the type of window, the label may be a window title
2392or panel item label. If {\it parent} is NULL, the search will start from all top-level
2393frames and dialog boxes; if non-NULL, the search will be limited to the given window hierarchy.
2394The search is recursive in both cases.
c51deffc
VZ
2395
2396\wxheading{Include files}
2397
2398<wx/utils.h>
2399
b0fc8832
VZ
2400\membersection{::wxFindWindowByName}\label{wxfindwindowbyname}
2401
2402\func{wxWindow *}{wxFindWindowByName}{\param{const wxString\& }{name}, \param{wxWindow *}{parent=NULL}}
a660d684 2403
b829bf55 2404{\bf NB:} This function is obsolete, please use
146ba0fe
VZ
2405\helpref{wxWindow::FindWindowByName}{wxwindowfindwindowbyname} instead.
2406
b0fc8832
VZ
2407Find a window by its name (as given in a window constructor or {\bf Create} function call).
2408If {\it parent} is NULL, the search will start from all top-level
2409frames and dialog boxes; if non-NULL, the search will be limited to the given window hierarchy.
2410The search is recursive in both cases.
a660d684 2411
b0fc8832 2412If no such named window is found, {\bf wxFindWindowByLabel} is called.
a660d684 2413
954b8ae6
JS
2414\wxheading{Include files}
2415
2416<wx/utils.h>
2417
b0fc8832 2418\membersection{::wxFindWindowAtPoint}\label{wxfindwindowatpoint}
6787e41e 2419
b0fc8832 2420\func{wxWindow *}{wxFindWindowAtPoint}{\param{const wxPoint\& }{pt}}
6787e41e 2421
b0fc8832
VZ
2422Find the deepest window at the given mouse position in screen coordinates,
2423returning the window if found, or NULL if not.
4d01e583 2424
b0fc8832 2425\membersection{::wxFindWindowAtPointer}\label{wxfindwindowatpointer}
4d01e583 2426
b0fc8832 2427\func{wxWindow *}{wxFindWindowAtPointer}{\param{wxPoint\& }{pt}}
4d01e583 2428
b0fc8832
VZ
2429Find the deepest window at the mouse pointer position, returning the window
2430and current pointer position in screen coordinates.
4d01e583 2431
b0fc8832 2432\membersection{::wxGetActiveWindow}\label{wxgetactivewindow}
4d01e583 2433
b0fc8832 2434\func{wxWindow *}{wxGetActiveWindow}{\void}
4d01e583 2435
b0fc8832 2436Gets the currently active window (Windows only).
4d01e583 2437
b0fc8832 2438\wxheading{Include files}
4d01e583 2439
b0fc8832 2440<wx/windows.h>
4d01e583 2441
b0fc8832 2442\membersection{::wxGetDisplayName}\label{wxgetdisplayname}
4d01e583 2443
b0fc8832 2444\func{wxString}{wxGetDisplayName}{\void}
4d01e583 2445
b0fc8832 2446Under X only, returns the current display name. See also \helpref{wxSetDisplayName}{wxsetdisplayname}.
4d01e583
VZ
2447
2448\wxheading{Include files}
2449
b0fc8832 2450<wx/utils.h>
4d01e583 2451
b0fc8832 2452\membersection{::wxGetMousePosition}\label{wxgetmouseposition}
4d01e583 2453
b0fc8832 2454\func{wxPoint}{wxGetMousePosition}{\void}
4d01e583 2455
b0fc8832 2456Returns the mouse position in screen coordinates.
4d01e583
VZ
2457
2458\wxheading{Include files}
2459
2460<wx/utils.h>
2461
b0fc8832 2462\membersection{::wxGetResource}\label{wxgetresource}
a660d684 2463
b0fc8832
VZ
2464\func{bool}{wxGetResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry},
2465 \param{const wxString\& *}{value}, \param{const wxString\& }{file = NULL}}
a660d684 2466
b0fc8832
VZ
2467\func{bool}{wxGetResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry},
2468 \param{float *}{value}, \param{const wxString\& }{file = NULL}}
a660d684 2469
b0fc8832
VZ
2470\func{bool}{wxGetResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry},
2471 \param{long *}{value}, \param{const wxString\& }{file = NULL}}
50567b69 2472
b0fc8832
VZ
2473\func{bool}{wxGetResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry},
2474 \param{int *}{value}, \param{const wxString\& }{file = NULL}}
50567b69 2475
b0fc8832
VZ
2476Gets a resource value from the resource database (for example, WIN.INI, or
2477.Xdefaults). If {\it file} is NULL, WIN.INI or .Xdefaults is used,
2478otherwise the specified file is used.
50567b69 2479
b0fc8832
VZ
2480Under X, if an application class (wxApp::GetClassName) has been defined,
2481it is appended to the string /usr/lib/X11/app-defaults/ to try to find
2482an applications default file when merging all resource databases.
50567b69 2483
b0fc8832
VZ
2484The reason for passing the result in an argument is that it
2485can be convenient to define a default value, which gets overridden
2486if the value exists in the resource file. It saves a separate
2487test for that resource's existence, and it also allows
2488the overloading of the function for different types.
50567b69 2489
b0fc8832 2490See also \helpref{wxWriteResource}{wxwriteresource}, \helpref{wxConfigBase}{wxconfigbase}.
a660d684 2491
954b8ae6 2492\wxheading{Include files}
a660d684 2493
954b8ae6 2494<wx/utils.h>
a660d684 2495
33b494d6
VZ
2496\membersection{::wxGetTopLevelParent}\label{wxgettoplevelparent}
2497
2498\func{wxWindow *}{wxGetTopLevelParent}{\param{wxWindow }{*win}}
2499
2500Returns the first top level parent of the given window, or in other words, the
2501frame or dialog containing it, or {\tt NULL}.
2502
2503\wxheading{Include files}
2504
2505<wx/window.h>
2506
a660d684
KB
2507\membersection{::wxLoadUserResource}\label{wxloaduserresource}
2508
2509\func{wxString}{wxLoadUserResource}{\param{const wxString\& }{resourceName}, \param{const wxString\& }{resourceType=``TEXT"}}
2510
2511Loads a user-defined Windows resource as a string. If the resource is found, the function creates
2512a new character array and copies the data into it. A pointer to this data is returned. If unsuccessful, NULL is returned.
2513
2514The resource must be defined in the {\tt .rc} file using the following syntax:
2515
2516\begin{verbatim}
2517myResource TEXT file.ext
2518\end{verbatim}
2519
2520where {\tt file.ext} is a file that the resource compiler can find.
2521
a660d684
KB
2522This function is available under Windows only.
2523
954b8ae6
JS
2524\wxheading{Include files}
2525
2526<wx/utils.h>
2527
a660d684
KB
2528\membersection{::wxPostDelete}\label{wxpostdelete}
2529
2530\func{void}{wxPostDelete}{\param{wxObject *}{object}}
2531
954b8ae6 2532Tells the system to delete the specified object when
a660d684
KB
2533all other events have been processed. In some environments, it is
2534necessary to use this instead of deleting a frame directly with the
954b8ae6 2535delete operator, because some GUIs will still send events to a deleted window.
a660d684
KB
2536
2537Now obsolete: use \helpref{wxWindow::Close}{wxwindowclose} instead.
2538
954b8ae6
JS
2539\wxheading{Include files}
2540
2541<wx/utils.h>
2542
8e193f38
VZ
2543\membersection{::wxPostEvent}\label{wxpostevent}
2544
2545\func{void}{wxPostEvent}{\param{wxEvtHandler *}{dest}, \param{wxEvent\& }{event}}
2546
9a9e73f6
RR
2547In a GUI application, this function posts {\it event} to the specified {\it dest}
2548object using \helpref{wxEvtHandler::AddPendingEvent}{wxevthandleraddpendingevent}.
2549Otherwise, it dispatches {\it event} immediately using
2550\helpref{wxEvtHandler::ProcessEvent}{wxevthandlerprocessevent}.
2551See the respective documentation for details (and caveats).
8e193f38
VZ
2552
2553\wxheading{Include files}
2554
2555<wx/app.h>
2556
a660d684
KB
2557\membersection{::wxSetDisplayName}\label{wxsetdisplayname}
2558
2559\func{void}{wxSetDisplayName}{\param{const wxString\& }{displayName}}
2560
2561Under X only, sets the current display name. This is the X host and display name such
2562as ``colonsay:0.0", and the function indicates which display should be used for creating
2563windows from this point on. Setting the display within an application allows multiple
2564displays to be used.
2565
2566See also \helpref{wxGetDisplayName}{wxgetdisplayname}.
2567
954b8ae6
JS
2568\wxheading{Include files}
2569
2570<wx/utils.h>
2571
b0fc8832 2572\membersection{::wxStripMenuCodes}\label{wxstripmenucodes}
a660d684 2573
8a2c6ef8
JS
2574\func{wxString}{wxStripMenuCodes}{\param{const wxString\& }{in}}
2575
7ac13b21 2576\func{void}{wxStripMenuCodes}{\param{char *}{in}, \param{char *}{out}}
a660d684 2577
b829bf55 2578{\bf NB:} This function is obsolete, please use
b0fc8832
VZ
2579\helpref{wxMenuItem::GetLabelFromText}{wxmenuitemgetlabelfromtext} instead.
2580
a660d684 2581Strips any menu codes from {\it in} and places the result
8a2c6ef8
JS
2582in {\it out} (or returns the new string, in the first form).
2583
2584Menu codes include \& (mark the next character with an underline
a660d684
KB
2585as a keyboard shortkey in Windows and Motif) and $\backslash$t (tab in Windows).
2586
954b8ae6
JS
2587\wxheading{Include files}
2588
2589<wx/utils.h>
2590
a660d684
KB
2591\membersection{::wxWriteResource}\label{wxwriteresource}
2592
2593\func{bool}{wxWriteResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry},
2594 \param{const wxString\& }{value}, \param{const wxString\& }{file = NULL}}
2595
2596\func{bool}{wxWriteResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry},
2597 \param{float }{value}, \param{const wxString\& }{file = NULL}}
2598
2599\func{bool}{wxWriteResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry},
2600 \param{long }{value}, \param{const wxString\& }{file = NULL}}
2601
2602\func{bool}{wxWriteResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry},
2603 \param{int }{value}, \param{const wxString\& }{file = NULL}}
2604
2605Writes a resource value into the resource database (for example, WIN.INI, or
2606.Xdefaults). If {\it file} is NULL, WIN.INI or .Xdefaults is used,
2607otherwise the specified file is used.
2608
2609Under X, the resource databases are cached until the internal function
b0fc8832
VZ
2610\rtfsp{\bf wxFlushResources} is called automatically on exit, when
2611all updated resource databases are written to their files.
8a293590 2612
b0fc8832
VZ
2613Note that it is considered bad manners to write to the .Xdefaults
2614file under Unix, although the WIN.INI file is fair game under Windows.
8a293590 2615
b0fc8832 2616See also \helpref{wxGetResource}{wxgetresource}, \helpref{wxConfigBase}{wxconfigbase}.
8a293590
RR
2617
2618\wxheading{Include files}
2619
b0fc8832 2620<wx/utils.h>
8a293590 2621
81c9effa 2622\section{Byte order macros}\label{byteordermacros}
a660d684 2623
b0fc8832
VZ
2624The endian-ness issues (that is the difference between big-endian and
2625little-endian architectures) are important for the portable programs working
2626with the external binary data (for example, data files or data coming from
2627network) which is usually in some fixed, platform-independent format. The
2628macros are helpful for transforming the data to the correct format.
a660d684 2629
0180dad6
RR
2630\membersection{wxINTXX\_SWAP\_ALWAYS}\label{intswapalways}
2631
2632\func{wxInt32}{wxINT32\_SWAP\_ALWAYS}{\param{wxInt32 }{value}}
2633
2634\func{wxUint32}{wxUINT32\_SWAP\_ALWAYS}{\param{wxUint32 }{value}}
2635
2636\func{wxInt16}{wxINT16\_SWAP\_ALWAYS}{\param{wxInt16 }{value}}
2637
2638\func{wxUint16}{wxUINT16\_SWAP\_ALWAYS}{\param{wxUint16 }{value}}
2639
b0fc8832
VZ
2640These macros will swap the bytes of the {\it value} variable from little
2641endian to big endian or vice versa unconditionally, i.e. independently of the
2642current platform.
0180dad6
RR
2643
2644\membersection{wxINTXX\_SWAP\_ON\_BE}\label{intswaponbe}
2645
2646\func{wxInt32}{wxINT32\_SWAP\_ON\_BE}{\param{wxInt32 }{value}}
2647
2648\func{wxUint32}{wxUINT32\_SWAP\_ON\_BE}{\param{wxUint32 }{value}}
2649
2650\func{wxInt16}{wxINT16\_SWAP\_ON\_BE}{\param{wxInt16 }{value}}
2651
2652\func{wxUint16}{wxUINT16\_SWAP\_ON\_BE}{\param{wxUint16 }{value}}
2653
2654This macro will swap the bytes of the {\it value} variable from little
2655endian to big endian or vice versa if the program is compiled on a
ec5d7799 2656big-endian architecture (such as Sun work stations). If the program has
0180dad6
RR
2657been compiled on a little-endian architecture, the value will be unchanged.
2658
ec5d7799 2659Use these macros to read data from and write data to a file that stores
b0fc8832 2660data in little-endian (for example Intel i386) format.
0180dad6
RR
2661
2662\membersection{wxINTXX\_SWAP\_ON\_LE}\label{intswaponle}
2663
2664\func{wxInt32}{wxINT32\_SWAP\_ON\_LE}{\param{wxInt32 }{value}}
2665
2666\func{wxUint32}{wxUINT32\_SWAP\_ON\_LE}{\param{wxUint32 }{value}}
2667
2668\func{wxInt16}{wxINT16\_SWAP\_ON\_LE}{\param{wxInt16 }{value}}
2669
2670\func{wxUint16}{wxUINT16\_SWAP\_ON\_LE}{\param{wxUint16 }{value}}
2671
2672This macro will swap the bytes of the {\it value} variable from little
2673endian to big endian or vice versa if the program is compiled on a
ec5d7799 2674little-endian architecture (such as Intel PCs). If the program has
0180dad6
RR
2675been compiled on a big-endian architecture, the value will be unchanged.
2676
ec5d7799 2677Use these macros to read data from and write data to a file that stores
b0fc8832
VZ
2678data in big-endian format.
2679
f4fcc291 2680\section{RTTI functions}\label{rttimacros}
b0fc8832
VZ
2681
2682wxWindows uses its own RTTI ("run-time type identification") system which
2683predates the current standard C++ RTTI and so is kept for backwards
2edb0bde 2684compatibility reasons but also because it allows some things which the
b0fc8832
VZ
2685standard RTTI doesn't directly support (such as creating a class from its
2686name).
2687
2688The standard C++ RTTI can be used in the user code without any problems and in
2689general you shouldn't need to use the functions and the macros in this section
2690unless you are thinking of modifying or adding any wxWindows classes.
2691
2692\wxheading{See also}
2693
2694\helpref{RTTI overview}{runtimeclassoverview}
0180dad6 2695
a660d684
KB
2696\membersection{CLASSINFO}\label{classinfo}
2697
2698\func{wxClassInfo *}{CLASSINFO}{className}
2699
2700Returns a pointer to the wxClassInfo object associated with this class.
2701
954b8ae6
JS
2702\wxheading{Include files}
2703
2704<wx/object.h>
2705
b0fc8832 2706\membersection{DECLARE\_ABSTRACT\_CLASS}\label{declareabstractclass}
a660d684
KB
2707
2708\func{}{DECLARE\_ABSTRACT\_CLASS}{className}
2709
2710Used inside a class declaration to declare that the class should be
2711made known to the class hierarchy, but objects of this class cannot be created
2712dynamically. The same as DECLARE\_CLASS.
2713
2714Example:
2715
2716\begin{verbatim}
2717class wxCommand: public wxObject
2718{
2719 DECLARE_ABSTRACT_CLASS(wxCommand)
2720
2721 private:
2722 ...
2723 public:
2724 ...
2725};
2726\end{verbatim}
2727
954b8ae6
JS
2728\wxheading{Include files}
2729
2730<wx/object.h>
2731
a660d684
KB
2732\membersection{DECLARE\_APP}\label{declareapp}
2733
2734\func{}{DECLARE\_APP}{className}
2735
749caeeb
VZ
2736This is used in headers to create a forward declaration of the
2737\helpref{wxGetApp}{wxgetapp} function implemented by
2738\helpref{IMPLEMENT\_APP}{implementapp}. It creates the declaration
2739{\tt className\& wxGetApp(void)}.
a660d684
KB
2740
2741Example:
2742
2743\begin{verbatim}
2744 DECLARE_APP(MyApp)
2745\end{verbatim}
2746
954b8ae6
JS
2747\wxheading{Include files}
2748
2749<wx/app.h>
2750
b0fc8832 2751\membersection{DECLARE\_CLASS}\label{declareclass}
a660d684
KB
2752
2753\func{}{DECLARE\_CLASS}{className}
2754
2755Used inside a class declaration to declare that the class should be
2756made known to the class hierarchy, but objects of this class cannot be created
2757dynamically. The same as DECLARE\_ABSTRACT\_CLASS.
2758
954b8ae6
JS
2759\wxheading{Include files}
2760
2761<wx/object.h>
2762
b0fc8832 2763\membersection{DECLARE\_DYNAMIC\_CLASS}\label{declaredynamicclass}
a660d684
KB
2764
2765\func{}{DECLARE\_DYNAMIC\_CLASS}{className}
2766
2767Used inside a class declaration to declare that the objects of this class should be dynamically
f6bcfd97 2768creatable from run-time type information.
a660d684
KB
2769
2770Example:
2771
2772\begin{verbatim}
2773class wxFrame: public wxWindow
2774{
2775 DECLARE_DYNAMIC_CLASS(wxFrame)
2776
2777 private:
2b5f62a0 2778 const wxString& frameTitle;
a660d684
KB
2779 public:
2780 ...
2781};
2782\end{verbatim}
2783
954b8ae6
JS
2784\wxheading{Include files}
2785
2786<wx/object.h>
2787
b0fc8832 2788\membersection{IMPLEMENT\_ABSTRACT\_CLASS}\label{implementabstractclass}
a660d684
KB
2789
2790\func{}{IMPLEMENT\_ABSTRACT\_CLASS}{className, baseClassName}
2791
2792Used in a C++ implementation file to complete the declaration of
2793a class that has run-time type information. The same as IMPLEMENT\_CLASS.
2794
2795Example:
2796
2797\begin{verbatim}
2798IMPLEMENT_ABSTRACT_CLASS(wxCommand, wxObject)
2799
2800wxCommand::wxCommand(void)
2801{
2802...
2803}
2804\end{verbatim}
2805
954b8ae6
JS
2806\wxheading{Include files}
2807
2808<wx/object.h>
2809
b0fc8832 2810\membersection{IMPLEMENT\_ABSTRACT\_CLASS2}\label{implementabstractclass2}
a660d684
KB
2811
2812\func{}{IMPLEMENT\_ABSTRACT\_CLASS2}{className, baseClassName1, baseClassName2}
2813
2814Used in a C++ implementation file to complete the declaration of
2815a class that has run-time type information and two base classes. The same as IMPLEMENT\_CLASS2.
2816
954b8ae6
JS
2817\wxheading{Include files}
2818
2819<wx/object.h>
2820
a660d684
KB
2821\membersection{IMPLEMENT\_APP}\label{implementapp}
2822
2823\func{}{IMPLEMENT\_APP}{className}
2824
2825This is used in the application class implementation file to make the application class known to
2826wxWindows for dynamic construction. You use this instead of
2827
2828Old form:
2829
2830\begin{verbatim}
2831 MyApp myApp;
2832\end{verbatim}
2833
2834New form:
2835
2836\begin{verbatim}
2837 IMPLEMENT_APP(MyApp)
2838\end{verbatim}
2839
2840See also \helpref{DECLARE\_APP}{declareapp}.
2841
954b8ae6
JS
2842\wxheading{Include files}
2843
2844<wx/app.h>
2845
b0fc8832 2846\membersection{IMPLEMENT\_CLASS}\label{implementclass}
a660d684
KB
2847
2848\func{}{IMPLEMENT\_CLASS}{className, baseClassName}
2849
2850Used in a C++ implementation file to complete the declaration of
2851a class that has run-time type information. The same as IMPLEMENT\_ABSTRACT\_CLASS.
2852
954b8ae6
JS
2853\wxheading{Include files}
2854
2855<wx/object.h>
2856
b0fc8832 2857\membersection{IMPLEMENT\_CLASS2}\label{implementclass2}
a660d684
KB
2858
2859\func{}{IMPLEMENT\_CLASS2}{className, baseClassName1, baseClassName2}
2860
2861Used in a C++ implementation file to complete the declaration of a
2862class that has run-time type information and two base classes. The
2863same as IMPLEMENT\_ABSTRACT\_CLASS2.
2864
954b8ae6
JS
2865\wxheading{Include files}
2866
2867<wx/object.h>
2868
b0fc8832 2869\membersection{IMPLEMENT\_DYNAMIC\_CLASS}\label{implementdynamicclass}
a660d684
KB
2870
2871\func{}{IMPLEMENT\_DYNAMIC\_CLASS}{className, baseClassName}
2872
2873Used in a C++ implementation file to complete the declaration of
2874a class that has run-time type information, and whose instances
2875can be created dynamically.
2876
2877Example:
2878
2879\begin{verbatim}
2880IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxWindow)
2881
2882wxFrame::wxFrame(void)
2883{
2884...
2885}
2886\end{verbatim}
2887
954b8ae6
JS
2888\wxheading{Include files}
2889
2890<wx/object.h>
2891
b0fc8832 2892\membersection{IMPLEMENT\_DYNAMIC\_CLASS2}\label{implementdynamicclass2}
a660d684
KB
2893
2894\func{}{IMPLEMENT\_DYNAMIC\_CLASS2}{className, baseClassName1, baseClassName2}
2895
2896Used in a C++ implementation file to complete the declaration of
2897a class that has run-time type information, and whose instances
2898can be created dynamically. Use this for classes derived from two
2899base classes.
2900
954b8ae6
JS
2901\wxheading{Include files}
2902
2903<wx/object.h>
2904
f6bcfd97
BP
2905\membersection{wxConstCast}\label{wxconstcast}
2906
f7637829 2907\func{classname *}{wxConstCast}{ptr, classname}
f6bcfd97
BP
2908
2909This macro expands into {\tt const\_cast<classname *>(ptr)} if the compiler
2910supports {\it const\_cast} or into an old, C-style cast, otherwise.
2911
2912\wxheading{See also}
2913
2914\helpref{wxDynamicCast}{wxdynamiccast}\\
2915\helpref{wxStaticCast}{wxstaticcast}
2916
b0fc8832
VZ
2917\membersection{::wxCreateDynamicObject}\label{wxcreatedynamicobject}
2918
2919\func{wxObject *}{wxCreateDynamicObject}{\param{const wxString\& }{className}}
2920
2921Creates and returns an object of the given class, if the class has been
2922registered with the dynamic class system using DECLARE... and IMPLEMENT... macros.
2923
34636400
VZ
2924\membersection{WXDEBUG\_NEW}\label{debugnew}
2925
2926\func{}{WXDEBUG\_NEW}{arg}
2927
2928This is defined in debug mode to be call the redefined new operator
2929with filename and line number arguments. The definition is:
2930
2931\begin{verbatim}
2932#define WXDEBUG_NEW new(__FILE__,__LINE__)
2933\end{verbatim}
2934
2935In non-debug mode, this is defined as the normal new operator.
2936
2937\wxheading{Include files}
2938
2939<wx/object.h>
2940
2941\membersection{wxDynamicCast}\label{wxdynamiccast}
2942
f7637829 2943\func{classname *}{wxDynamicCast}{ptr, classname}
34636400
VZ
2944
2945This macro returns the pointer {\it ptr} cast to the type {\it classname *} if
8a7f3379 2946the pointer is of this type (the check is done during the run-time) or
f7637829
VZ
2947{\tt NULL} otherwise. Usage of this macro is preferred over obsoleted
2948wxObject::IsKindOf() function.
34636400 2949
f7637829
VZ
2950The {\it ptr} argument may be {\tt NULL}, in which case {\tt NULL} will be
2951returned.
34636400
VZ
2952
2953Example:
2954
2955\begin{verbatim}
2956 wxWindow *win = wxWindow::FindFocus();
2957 wxTextCtrl *text = wxDynamicCast(win, wxTextCtrl);
2958 if ( text )
2959 {
2960 // a text control has the focus...
2961 }
2962 else
2963 {
f6bcfd97 2964 // no window has the focus or it is not a text control
34636400
VZ
2965 }
2966\end{verbatim}
2967
2968\wxheading{See also}
2969
f6bcfd97 2970\helpref{RTTI overview}{runtimeclassoverview}\\
f7637829 2971\helpref{wxDynamicCastThis}{wxdynamiccastthis}\\
f6bcfd97
BP
2972\helpref{wxConstCast}{wxconstcast}\\
2973\helpref{wxStatiicCast}{wxstaticcast}
34636400 2974
f7637829
VZ
2975\membersection{wxDynamicCastThis}\label{wxdynamiccastthis}
2976
2977\func{classname *}{wxDynamicCastThis}{classname}
2978
2979This macro is equivalent to {\tt wxDynamicCast(this, classname)} but the
2980latter provokes spurious compilation warnings from some compilers (because it
2981tests whether {\tt this} pointer is non {\tt NULL} which is always true), so
2982this macro should be used to avoid them.
2983
2984\wxheading{See also}
2985
2986\helpref{wxDynamicCast}{wxdynamiccast}
2987
f6bcfd97
BP
2988\membersection{wxStaticCast}\label{wxstaticcast}
2989
f7637829 2990\func{classname *}{wxStaticCast}{ptr, classname}
f6bcfd97
BP
2991
2992This macro checks that the cast is valid in debug mode (an assert failure will
2993result if {\tt wxDynamicCast(ptr, classname) == NULL}) and then returns the
2994result of executing an equivalent of {\tt static\_cast<classname *>(ptr)}.
2995
2996\helpref{wxDynamicCast}{wxdynamiccast}\\
2997\helpref{wxConstCast}{wxconstcast}
2998
6fb26ea3
JS
2999\section{Log functions}\label{logfunctions}
3000
3001These functions provide a variety of logging functions: see \helpref{Log classes overview}{wxlogoverview} for
f68586e5
VZ
3002further information. The functions use (implicitly) the currently active log
3003target, so their descriptions here may not apply if the log target is not the
3004standard one (installed by wxWindows in the beginning of the program).
6fb26ea3 3005
954b8ae6
JS
3006\wxheading{Include files}
3007
3008<wx/log.h>
3009
b0fc8832
VZ
3010\membersection{::wxDebugMsg}\label{wxdebugmsg}
3011
3012\func{void}{wxDebugMsg}{\param{const wxString\& }{fmt}, \param{...}{}}
3013
2bd25c5a
VZ
3014{\bf NB:} This function is now obsolete, replaced by \helpref{Log
3015functions}{logfunctions} and \helpref{wxLogDebug}{wxlogdebug} in particular.
b0fc8832
VZ
3016
3017Display a debugging message; under Windows, this will appear on the
3018debugger command window, and under Unix, it will be written to standard
3019error.
3020
3021The syntax is identical to {\bf printf}: pass a format string and a
3022variable list of arguments.
3023
3024{\bf Tip:} under Windows, if your application crashes before the
3025message appears in the debugging window, put a wxYield call after
3026each wxDebugMsg call. wxDebugMsg seems to be broken under WIN32s
3027(at least for Watcom C++): preformat your messages and use OutputDebugString
3028instead.
3029
b0fc8832
VZ
3030\wxheading{Include files}
3031
3032<wx/utils.h>
3033
3034\membersection{::wxError}\label{wxerror}
3035
3036\func{void}{wxError}{\param{const wxString\& }{msg}, \param{const wxString\& }{title = "wxWindows Internal Error"}}
3037
b829bf55 3038{\bf NB:} This function is now obsolete, please use \helpref{wxLogError}{wxlogerror}
b0fc8832
VZ
3039instead.
3040
3041Displays {\it msg} and continues. This writes to standard error under
3042Unix, and pops up a message box under Windows. Used for internal
3043wxWindows errors. See also \helpref{wxFatalError}{wxfatalerror}.
3044
3045\wxheading{Include files}
3046
3047<wx/utils.h>
3048
3049\membersection{::wxFatalError}\label{wxfatalerror}
3050
3051\func{void}{wxFatalError}{\param{const wxString\& }{msg}, \param{const wxString\& }{title = "wxWindows Fatal Error"}}
3052
b829bf55 3053{\bf NB:} This function is now obsolete, please use
b0fc8832
VZ
3054\helpref{wxLogFatalError}{wxlogfatalerror} instead.
3055
3056Displays {\it msg} and exits. This writes to standard error under Unix,
3057and pops up a message box under Windows. Used for fatal internal
3058wxWindows errors. See also \helpref{wxError}{wxerror}.
3059
3060\wxheading{Include files}
3061
3062<wx/utils.h>
3063
6fb26ea3
JS
3064\membersection{::wxLogError}\label{wxlogerror}
3065
7ac13b21 3066\func{void}{wxLogError}{\param{const char *}{formatString}, \param{...}{}}
6fb26ea3 3067
1d63fd6b
GD
3068\func{void}{wxVLogError}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
3069
ea44a631 3070The functions to use for error messages, i.e. the messages that must be shown
f68586e5
VZ
3071to the user. The default processing is to pop up a message box to inform the
3072user about it.
6fb26ea3
JS
3073
3074\membersection{::wxLogFatalError}\label{wxlogfatalerror}
3075
7ac13b21 3076\func{void}{wxLogFatalError}{\param{const char *}{formatString}, \param{...}{}}
6fb26ea3 3077
1d63fd6b
GD
3078\func{void}{wxVLogFatalError}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
3079
6fb26ea3
JS
3080Like \helpref{wxLogError}{wxlogerror}, but also
3081terminates the program with the exit code 3. Using {\it abort()} standard
3082function also terminates the program with this exit code.
3083
3084\membersection{::wxLogWarning}\label{wxlogwarning}
3085
7ac13b21 3086\func{void}{wxLogWarning}{\param{const char *}{formatString}, \param{...}{}}
6fb26ea3 3087
1d63fd6b
GD
3088\func{void}{wxVLogWarning}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
3089
f68586e5
VZ
3090For warnings - they are also normally shown to the user, but don't interrupt
3091the program work.
6fb26ea3
JS
3092
3093\membersection{::wxLogMessage}\label{wxlogmessage}
3094
7ac13b21 3095\func{void}{wxLogMessage}{\param{const char *}{formatString}, \param{...}{}}
6fb26ea3 3096
1d63fd6b
GD
3097\func{void}{wxVLogMessage}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
3098
ea44a631 3099For all normal, informational messages. They also appear in a message box by
f68586e5
VZ
3100default (but it can be changed). Notice that the standard behaviour is to not
3101show informational messages if there are any errors later - the logic being
3102that the later error messages make the informational messages preceding them
3103meaningless.
6fb26ea3
JS
3104
3105\membersection{::wxLogVerbose}\label{wxlogverbose}
3106
7ac13b21
GT
3107\func{void}{wxLogVerbose}{\param{const char *}{formatString}, \param{...}{}}
3108
1d63fd6b 3109\func{void}{wxVLogVerbose}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
6fb26ea3 3110
f6bcfd97 3111For verbose output. Normally, it is suppressed, but
6fb26ea3
JS
3112might be activated if the user wishes to know more details about the program
3113progress (another, but possibly confusing name for the same function is {\bf wxLogInfo}).
3114
3115\membersection{::wxLogStatus}\label{wxlogstatus}
3116
7ac13b21 3117\func{void}{wxLogStatus}{\param{wxFrame *}{frame}, \param{const char *}{formatString}, \param{...}{}}
f68586e5 3118
1d63fd6b 3119\func{void}{wxVLogStatus}{\param{wxFrame *}{frame}, \param{const char *}{formatString}, \param{va\_list }{argPtr}}
7ac13b21
GT
3120
3121\func{void}{wxLogStatus}{\param{const char *}{formatString}, \param{...}{}}
6fb26ea3 3122
1d63fd6b
GD
3123\func{void}{wxVLogStatus}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
3124
ea44a631 3125Messages logged by these functions will appear in the statusbar of the {\it
f68586e5 3126frame} or of the top level application window by default (i.e. when using
ea44a631 3127the second version of the functions).
f68586e5
VZ
3128
3129If the target frame doesn't have a statusbar, the message will be lost.
6fb26ea3
JS
3130
3131\membersection{::wxLogSysError}\label{wxlogsyserror}
3132
7ac13b21
GT
3133\func{void}{wxLogSysError}{\param{const char *}{formatString}, \param{...}{}}
3134
1d63fd6b 3135\func{void}{wxVLogSysError}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
6fb26ea3 3136
f68586e5
VZ
3137Mostly used by wxWindows itself, but might be handy for logging errors after
3138system call (API function) failure. It logs the specified message text as well
3139as the last system error code ({\it errno} or {\it ::GetLastError()} depending
3140on the platform) and the corresponding error message. The second form
f6bcfd97 3141of this function takes the error code explicitly as the first argument.
6fb26ea3 3142
6d516e09
VZ
3143\wxheading{See also}
3144
3145\helpref{wxSysErrorCode}{wxsyserrorcode},
3146\helpref{wxSysErrorMsg}{wxsyserrormsg}
3147
6fb26ea3
JS
3148\membersection{::wxLogDebug}\label{wxlogdebug}
3149
7ac13b21
GT
3150\func{void}{wxLogDebug}{\param{const char *}{formatString}, \param{...}{}}
3151
1d63fd6b 3152\func{void}{wxVLogDebug}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
6fb26ea3 3153
ea44a631
GD
3154The right functions for debug output. They only do something in debug
3155mode (when the preprocessor symbol \_\_WXDEBUG\_\_ is defined) and expand to
f68586e5 3156nothing in release mode (otherwise).
6fb26ea3
JS
3157
3158\membersection{::wxLogTrace}\label{wxlogtrace}
3159
7ac13b21 3160\func{void}{wxLogTrace}{\param{const char *}{formatString}, \param{...}{}}
1d63fd6b
GD
3161
3162\func{void}{wxVLogTrace}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
6fb26ea3 3163
f68586e5 3164\func{void}{wxLogTrace}{\param{const char *}{mask}, \param{const char *}{formatString}, \param{...}{}}
7ac13b21 3165
1d63fd6b 3166\func{void}{wxVLogTrace}{\param{const char *}{mask}, \param{const char *}{formatString}, \param{va\_list }{argPtr}}
f68586e5
VZ
3167
3168\func{void}{wxLogTrace}{\param{wxTraceMask}{ mask}, \param{const char *}{formatString}, \param{...}{}}
7ac13b21 3169
1d63fd6b 3170\func{void}{wxVLogTrace}{\param{wxTraceMask}{ mask}, \param{const char *}{formatString}, \param{va\_list }{argPtr}}
f68586e5
VZ
3171
3172As {\bf wxLogDebug}, trace functions only do something in debug build and
3173expand to nothing in the release one. The reason for making
3174it a separate function from it is that usually there are a lot of trace
3175messages, so it might make sense to separate them from other debug messages.
3176
3177The trace messages also usually can be separated into different categories and
ec5d7799 3178the second and third versions of this function only log the message if the
f68586e5
VZ
3179{\it mask} which it has is currently enabled in \helpref{wxLog}{wxlog}. This
3180allows to selectively trace only some operations and not others by changing
3181the value of the trace mask (possible during the run-time).
3182
3183For the second function (taking a string mask), the message is logged only if
ec5d7799 3184the mask has been previously enabled by the call to
f68586e5
VZ
3185\helpref{AddTraceMask}{wxlogaddtracemask}. The predefined string trace masks
3186used by wxWindows are:
3187
3188\begin{itemize}\itemsep=0pt
3189\item wxTRACE\_MemAlloc: trace memory allocation (new/delete)
3190\item wxTRACE\_Messages: trace window messages/X callbacks
3191\item wxTRACE\_ResAlloc: trace GDI resource allocation
3192\item wxTRACE\_RefCount: trace various ref counting operations
3193\item wxTRACE\_OleCalls: trace OLE method calls (Win32 only)
3194\end{itemize}
6fb26ea3 3195
f68586e5
VZ
3196The third version of the function only logs the message if all the bit
3197corresponding to the {\it mask} are set in the wxLog trace mask which can be
3198set by \helpref{SetTraceMask}{wxlogsettracemask}. This version is less
3199flexible than the previous one because it doesn't allow defining the user
3200trace masks easily - this is why it is deprecated in favour of using string
3201trace masks.
6fb26ea3
JS
3202
3203\begin{itemize}\itemsep=0pt
3204\item wxTraceMemAlloc: trace memory allocation (new/delete)
3205\item wxTraceMessages: trace window messages/X callbacks
3206\item wxTraceResAlloc: trace GDI resource allocation
3207\item wxTraceRefCount: trace various ref counting operations
f68586e5 3208\item wxTraceOleCalls: trace OLE method calls (Win32 only)
6fb26ea3
JS
3209\end{itemize}
3210
c11d62a6
VZ
3211\membersection{::wxSafeShowMessage}\label{wxsafeshowmessage}
3212
3213\func{void}{wxSafeShowMessage}{\param{const wxString\& }{title}, \param{const wxString\& }{text}}
3214
3215This function shows a message to the user in a safe way and should be safe to
3216call even before the application has been initialized or if it is currently in
3217some other strange state (for example, about to crash). Under Windows this
b829bf55 3218function shows a message box using a native dialog instead of
c11d62a6
VZ
3219\helpref{wxMessageBox}{wxmessagebox} (which might be unsafe to call), elsewhere
3220it simply prints the message to the standard output using the title as prefix.
3221
3222\wxheading{Parameters}
3223
3224\docparam{title}{The title of the message box shown to the user or the prefix
3225of the message string}
3226
3227\docparam{text}{The text to show to the user}
3228
3229\wxheading{See also}
3230
3231\helpref{wxLogFatalError}{wxlogfatalerror}
3232
3233\wxheading{Include files}
3234
3235<wx/log.h>
3236
6d516e09
VZ
3237\membersection{::wxSysErrorCode}\label{wxsyserrorcode}
3238
3239\func{unsigned long}{wxSysErrorCode}{\void}
3240
3241Returns the error code from the last system call. This function uses
3242{\tt errno} on Unix platforms and {\tt GetLastError} under Win32.
3243
3244\wxheading{See also}
3245
3246\helpref{wxSysErrorMsg}{wxsyserrormsg},
3247\helpref{wxLogSysError}{wxlogsyserror}
3248
3249\membersection{::wxSysErrorMsg}\label{wxsyserrormsg}
3250
3251\func{const wxChar *}{wxSysErrorMsg}{\param{unsigned long }{errCode = 0}}
3252
ec5d7799
RD
3253Returns the error message corresponding to the given system error code. If
3254{\it errCode} is $0$ (default), the last error code (as returned by
6d516e09
VZ
3255\helpref{wxSysErrorCode}{wxsyserrorcode}) is used.
3256
3257\wxheading{See also}
3258
3259\helpref{wxSysErrorCode}{wxsyserrorcode},
3260\helpref{wxLogSysError}{wxlogsyserror}
3261
b0fc8832
VZ
3262\membersection{WXTRACE}\label{trace}
3263
3264\wxheading{Include files}
3265
3266<wx/object.h>
3267
3268\func{}{WXTRACE}{formatString, ...}
3269
2bd25c5a
VZ
3270{\bf NB:} This macro is now obsolete, replaced by \helpref{Log functions}{logfunctions}.
3271
b0fc8832
VZ
3272Calls wxTrace with printf-style variable argument syntax. Output
3273is directed to the current output stream (see \helpref{wxDebugContext}{wxdebugcontextoverview}).
3274
b0fc8832
VZ
3275\wxheading{Include files}
3276
3277<wx/memory.h>
3278
3279\membersection{WXTRACELEVEL}\label{tracelevel}
3280
3281\func{}{WXTRACELEVEL}{level, formatString, ...}
3282
2bd25c5a
VZ
3283{\bf NB:} This function is now obsolete, replaced by \helpref{Log functions}{logfunctions}.
3284
b0fc8832
VZ
3285Calls wxTraceLevel with printf-style variable argument syntax. Output
3286is directed to the current output stream (see \helpref{wxDebugContext}{wxdebugcontextoverview}).
3287The first argument should be the level at which this information is appropriate.
3288It will only be output if the level returned by wxDebugContext::GetLevel is equal to or greater than
3289this value.
3290
b0fc8832
VZ
3291\wxheading{Include files}
3292
3293<wx/memory.h>
3294
3295\membersection{::wxTrace}\label{wxtrace}
3296
3297\func{void}{wxTrace}{\param{const wxString\& }{fmt}, \param{...}{}}
3298
2bd25c5a
VZ
3299{\bf NB:} This function is now obsolete, replaced by \helpref{Log functions}{logfunctions}.
3300
b0fc8832
VZ
3301Takes printf-style variable argument syntax. Output
3302is directed to the current output stream (see \helpref{wxDebugContext}{wxdebugcontextoverview}).
3303
b0fc8832
VZ
3304\wxheading{Include files}
3305
3306<wx/memory.h>
3307
3308\membersection{::wxTraceLevel}\label{wxtracelevel}
3309
3310\func{void}{wxTraceLevel}{\param{int}{ level}, \param{const wxString\& }{fmt}, \param{...}{}}
3311
2bd25c5a
VZ
3312{\bf NB:} This function is now obsolete, replaced by \helpref{Log functions}{logfunctions}.
3313
b0fc8832
VZ
3314Takes printf-style variable argument syntax. Output
3315is directed to the current output stream (see \helpref{wxDebugContext}{wxdebugcontextoverview}).
3316The first argument should be the level at which this information is appropriate.
3317It will only be output if the level returned by wxDebugContext::GetLevel is equal to or greater than
3318this value.
3319
b0fc8832
VZ
3320\wxheading{Include files}
3321
3322<wx/memory.h>
3323
f6bcfd97
BP
3324\section{Time functions}\label{timefunctions}
3325
3326The functions in this section deal with getting the current time and
3327starting/stopping the global timers. Please note that the timer functions are
ec5d7799 3328deprecated because they work with one global timer only and
f6bcfd97 3329\helpref{wxTimer}{wxtimer} and/or \helpref{wxStopWatch}{wxstopwatch} classes
ec5d7799
RD
3330should be used instead. For retrieving the current time, you may also use
3331\helpref{wxDateTime::Now}{wxdatetimenow} or
f6bcfd97
BP
3332\helpref{wxDateTime::UNow}{wxdatetimeunow} methods.
3333
3334\membersection{::wxGetElapsedTime}\label{wxgetelapsedtime}
3335
cc81d32f 3336\func{long}{wxGetElapsedTime}{\param{bool}{ resetTimer = true}}
f6bcfd97
BP
3337
3338Gets the time in milliseconds since the last \helpref{::wxStartTimer}{wxstarttimer}.
3339
cc81d32f 3340If {\it resetTimer} is true (the default), the timer is reset to zero
f6bcfd97
BP
3341by this call.
3342
3343See also \helpref{wxTimer}{wxtimer}.
3344
3345\wxheading{Include files}
3346
3347<wx/timer.h>
3348
3349\membersection{::wxGetLocalTime}\label{wxgetlocaltime}
3350
3351\func{long}{wxGetLocalTime}{\void}
3352
3353Returns the number of seconds since local time 00:00:00 Jan 1st 1970.
3354
3355\wxheading{See also}
3356
3357\helpref{wxDateTime::Now}{wxdatetimenow}
3358
3359\wxheading{Include files}
3360
3361<wx/timer.h>
3362
3363\membersection{::wxGetLocalTimeMillis}\label{wxgetlocaltimemillis}
3364
a9d171bd 3365\func{wxLongLong}{wxGetLocalTimeMillis}{\void}
f6bcfd97
BP
3366
3367Returns the number of milliseconds since local time 00:00:00 Jan 1st 1970.
3368
3369\wxheading{See also}
3370
3371\helpref{wxDateTime::Now}{wxdatetimenow},\\
a9d171bd 3372\helpref{wxLongLong}{wxlonglong}
f6bcfd97
BP
3373
3374\wxheading{Include files}
3375
3376<wx/timer.h>
3377
3378\membersection{::wxGetUTCTime}\label{wxgetutctime}
3379
3380\func{long}{wxGetUTCTime}{\void}
3381
3382Returns the number of seconds since GMT 00:00:00 Jan 1st 1970.
3383
3384\wxheading{See also}
3385
3386\helpref{wxDateTime::Now}{wxdatetimenow}
3387
3388\wxheading{Include files}
3389
3390<wx/timer.h>
3391
b0fc8832
VZ
3392\membersection{::wxNow}\label{wxnow}
3393
3394\func{wxString}{wxNow}{\void}
3395
3396Returns a string representing the current date and time.
3397
3398\wxheading{Include files}
3399
3400<wx/utils.h>
3401
3402\membersection{::wxSleep}\label{wxsleep}
3403
3404\func{void}{wxSleep}{\param{int}{ secs}}
3405
3406Sleeps for the specified number of seconds.
3407
3408\wxheading{Include files}
3409
3410<wx/utils.h>
3411
f6bcfd97
BP
3412\membersection{::wxStartTimer}\label{wxstarttimer}
3413
3414\func{void}{wxStartTimer}{\void}
3415
3416Starts a stopwatch; use \helpref{::wxGetElapsedTime}{wxgetelapsedtime} to get the elapsed time.
3417
3418See also \helpref{wxTimer}{wxtimer}.
3419
3420\wxheading{Include files}
3421
3422<wx/timer.h>
3423
b0fc8832
VZ
3424\membersection{::wxUsleep}\label{wxusleep}
3425
3426\func{void}{wxUsleep}{\param{unsigned long}{ milliseconds}}
3427
3428Sleeps for the specified number of milliseconds. Notice that usage of this
3429function is encouraged instead of calling usleep(3) directly because the
3430standard usleep() function is not MT safe.
3431
3432\wxheading{Include files}
3433
3434<wx/utils.h>
3435
6fb26ea3
JS
3436\section{Debugging macros and functions}\label{debugmacros}
3437
8f5d9104
VZ
3438Useful macros and functions for error checking and defensive programming.
3439wxWindows defines three families of the assert-like macros:
3440the wxASSERT and wxFAIL macros only do anything if \_\_WXDEBUG\_\_ is defined
3441(in other words, in the debug build) but disappear completely in the release
3442build. On the other hand, the wxCHECK macros stay event in release builds but a
3443check failure doesn't generate any user-visible effects then. Finally, the
3444compile time assertions don't happen during the run-time but result in the
3445compilation error messages if the condition they check fail.
6fb26ea3 3446
954b8ae6
JS
3447\wxheading{Include files}
3448
3449<wx/debug.h>
3450
6fb26ea3
JS
3451\membersection{::wxOnAssert}\label{wxonassert}
3452
aad65f13 3453\func{void}{wxOnAssert}{\param{const char *}{fileName}, \param{int}{ lineNumber}, \param{const char *}{cond}, \param{const char *}{msg = NULL}}
6fb26ea3 3454
8f5d9104
VZ
3455This function is called whenever one of debugging macros fails (i.e. condition
3456is false in an assertion). It is only defined in the debug mode, in release
3457builds the \helpref{wxCHECK}{wxcheck} failures don't result in anything.
3458
3459To override the default behaviour in the debug builds which is to show the user
3460a dialog asking whether he wants to abort the program, continue or continue
b829bf55 3461ignoring any subsequent assert failures, you may override
8f5d9104
VZ
3462\helpref{wxApp::OnAssert}{wxapponassert} which is called by this function if
3463the global application object exists.
6fb26ea3
JS
3464
3465\membersection{wxASSERT}\label{wxassert}
3466
3467\func{}{wxASSERT}{\param{}{condition}}
3468
cc81d32f 3469Assert macro. An error message will be generated if the condition is false in
b207457c
VZ
3470debug mode, but nothing will be done in the release build.
3471
3472Please note that the condition in wxASSERT() should have no side effects
3473because it will not be executed in release mode at all.
3474
8f5d9104
VZ
3475\wxheading{See also}
3476
3477\helpref{wxASSERT\_MSG}{wxassertmsg},\\
3478\helpref{wxCOMPILE\_TIME\_ASSERT}{wxcompiletimeassert}
3479
3480\membersection{wxASSERT\_MIN\_BITSIZE}\label{wxassertminbitsize}
3481
3482\func{}{wxASSERT\_MIN\_BITSIZE}{\param{}{type}, \param{}{size}}
3483
b829bf55 3484This macro results in a
9722642d 3485\helpref{compile time assertion failure}{wxcompiletimeassert} if the size
8f5d9104
VZ
3486of the given type {\it type} is less than {\it size} bits.
3487
3488You may use it like this, for example:
3489
3490\begin{verbatim}
3491 // we rely on the int being able to hold values up to 2^32
3492 wxASSERT_MIN_BITSIZE(int, 32);
3493
3494 // can't work with the platforms using UTF-8 for wchar_t
3495 wxASSERT_MIN_BITSIZE(wchar_t, 16);
3496\end{verbatim}
6fb26ea3
JS
3497
3498\membersection{wxASSERT\_MSG}\label{wxassertmsg}
3499
3500\func{}{wxASSERT\_MSG}{\param{}{condition}, \param{}{msg}}
3501
cc81d32f 3502Assert macro with message. An error message will be generated if the condition is false.
6fb26ea3 3503
8f5d9104
VZ
3504\wxheading{See also}
3505
3506\helpref{wxASSERT}{wxassert},\\
3507\helpref{wxCOMPILE\_TIME\_ASSERT}{wxcompiletimeassert}
3508
3509\membersection{wxCOMPILE\_TIME\_ASSERT}\label{wxcompiletimeassert}
3510
3511\func{}{wxCOMPILE\_TIME\_ASSERT}{\param{}{condition}, \param{}{msg}}
3512
3513Using {\tt wxCOMPILE\_TIME\_ASSERT} results in a compilation error if the
9722642d 3514specified {\it condition} is false. The compiler error message should include
8f5d9104
VZ
3515the {\it msg} identifier - please note that it must be a valid C++ identifier
3516and not a string unlike in the other cases.
3517
b829bf55 3518This macro is mostly useful for testing the expressions involving the
8f5d9104
VZ
3519{\tt sizeof} operator as they can't be tested by the preprocessor but it is
3520sometimes desirable to test them at the compile time.
3521
5b8643ea
VZ
3522Note that this macro internally declares a struct whose name it tries to make
3523unique by using the {\tt \_\_LINE\_\_} in it but it may still not work if you
3524use it on the same line in two different source files. In this case you may
b829bf55 3525either change the line in which either of them appears on or use the
5b8643ea
VZ
3526\helpref{wxCOMPILE\_TIME\_ASSERT2}{wxcompiletimeassert2} macro.
3527
8f5d9104
VZ
3528\wxheading{See also}
3529
3530\helpref{wxASSERT\_MSG}{wxassertmsg},\\
3531\helpref{wxASSERT\_MIN\_BITSIZE}{wxassertminbitsize}
b207457c 3532
5b8643ea
VZ
3533\membersection{wxCOMPILE\_TIME\_ASSERT2}\label{wxcompiletimeassert2}
3534
3535\func{}{wxCOMPILE\_TIME\_ASSERT}{\param{}{condition}, \param{}{msg}, \param{}{name}}
3536
b829bf55 3537This macro is identical to \helpref{wxCOMPILE\_TIME\_ASSERT2}{wxcompiletimeassert2}
5b8643ea
VZ
3538except that it allows you to specify a unique {\it name} for the struct
3539internally defined by this macro to avoid getting the compilation errors
3540described \helpref{above}{wxcompiletimeassert}.
3541
6fb26ea3
JS
3542\membersection{wxFAIL}\label{wxfail}
3543
b207457c 3544\func{}{wxFAIL}{\void}
6fb26ea3
JS
3545
3546Will always generate an assert error if this code is reached (in debug mode).
3547
b207457c
VZ
3548See also: \helpref{wxFAIL\_MSG}{wxfailmsg}
3549
6fb26ea3
JS
3550\membersection{wxFAIL\_MSG}\label{wxfailmsg}
3551
b207457c 3552\func{}{wxFAIL\_MSG}{\param{}{msg}}
6fb26ea3
JS
3553
3554Will always generate an assert error with specified message if this code is reached (in debug mode).
3555
b207457c
VZ
3556This macro is useful for marking unreachable" code areas, for example
3557it may be used in the "default:" branch of a switch statement if all possible
3558cases are processed above.
3559
8f5d9104
VZ
3560\wxheading{See also}
3561
3562\helpref{wxFAIL}{wxfail}
b207457c 3563
6fb26ea3
JS
3564\membersection{wxCHECK}\label{wxcheck}
3565
3566\func{}{wxCHECK}{\param{}{condition}, \param{}{retValue}}
3567
3568Checks that the condition is true, returns with the given return value if not (FAILs in debug mode).
3569This check is done even in release mode.
3570
3571\membersection{wxCHECK\_MSG}\label{wxcheckmsg}
3572
3573\func{}{wxCHECK\_MSG}{\param{}{condition}, \param{}{retValue}, \param{}{msg}}
3574
3575Checks that the condition is true, returns with the given return value if not (FAILs in debug mode).
3576This check is done even in release mode.
3577
ec5d7799 3578This macro may be only used in non void functions, see also
b207457c
VZ
3579\helpref{wxCHECK\_RET}{wxcheckret}.
3580
3581\membersection{wxCHECK\_RET}\label{wxcheckret}
3582
3583\func{}{wxCHECK\_RET}{\param{}{condition}, \param{}{msg}}
3584
3585Checks that the condition is true, and returns if not (FAILs with given error
3586message in debug mode). This check is done even in release mode.
3587
ec5d7799 3588This macro should be used in void functions instead of
b207457c
VZ
3589\helpref{wxCHECK\_MSG}{wxcheckmsg}.
3590
3591\membersection{wxCHECK2}\label{wxcheck2}
3592
3593\func{}{wxCHECK2}{\param{}{condition}, \param{}{operation}}
3594
ec5d7799
RD
3595Checks that the condition is true and \helpref{wxFAIL}{wxfail} and execute
3596{\it operation} if it is not. This is a generalisation of
b207457c
VZ
3597\helpref{wxCHECK}{wxcheck} and may be used when something else than just
3598returning from the function must be done when the {\it condition} is false.
3599
3600This check is done even in release mode.
3601
3602\membersection{wxCHECK2\_MSG}\label{wxcheck2msg}
3603
3604\func{}{wxCHECK2}{\param{}{condition}, \param{}{operation}, \param{}{msg}}
3605
ec5d7799 3606This is the same as \helpref{wxCHECK2}{wxcheck2}, but
b207457c
VZ
3607\helpref{wxFAIL\_MSG}{wxfailmsg} with the specified {\it msg} is called
3608instead of wxFAIL() if the {\it condition} is false.
3609
b0fc8832
VZ
3610\membersection{::wxTrap}\label{wxtrap}
3611
3612\func{void}{wxTrap}{\void}
3613
3614In debug mode (when {\tt \_\_WXDEBUG\_\_} is defined) this function generates a
3615debugger exception meaning that the control is passed to the debugger if one is
3616attached to the process. Otherwise the program just terminates abnormally.
3617
3618In release mode this function does nothing.
3619
3620\wxheading{Include files}
3621
3622<wx/debug.h>
3623
5807634c
VZ
3624\section{Environment access functions}\label{environfunctions}
3625
3626The functions in this section allow to access (get) or change value of
3627environment variables in a portable way. They are currently implemented under
3628Win32 and POSIX-like systems (Unix).
3629
3630% TODO add some stuff about env var inheriting but not propagating upwards (VZ)
3631
3632\wxheading{Include files}
3633
3634<wx/utils.h>
3635
308978f6 3636\membersection{wxGetenv}\label{wxgetenvmacro}
5807634c
VZ
3637
3638\func{wxChar *}{wxGetEnv}{\param{const wxString\&}{ var}}
3639
308978f6
VZ
3640This is a macro defined as {\tt getenv()} or its wide char version in Unicode
3641mode.
3642
3643Note that under Win32 it may not return correct value for the variables set
3644with \helpref{wxSetEnv}{wxsetenv}, use \helpref{wxGetEnv}{wxgetenv} function
3645instead.
3646
3647\membersection{wxGetEnv}\label{wxgetenv}
3648
3649\func{bool}{wxGetEnv}{\param{const wxString\&}{ var}, \param{wxString *}{value}}
3650
3651Returns the current value of the environment variable {\it var} in {\it value}.
3652{\it value} may be {\tt NULL} if you just want to know if the variable exists
3653and are not interested in its value.
3654
cc81d32f 3655Returns {\tt true} if the variable exists, {\tt false} otherwise.
5807634c
VZ
3656
3657\membersection{wxSetEnv}\label{wxsetenv}
3658
3659\func{bool}{wxSetEnv}{\param{const wxString\&}{ var}, \param{const wxChar *}{value}}
3660
3661Sets the value of the environment variable {\it var} (adding it if necessary)
3662to {\it value}.
3663
cc81d32f 3664Returns {\tt true} on success.
5807634c
VZ
3665
3666\membersection{wxUnsetEnv}\label{wxunsetenv}
3667
3668\func{bool}{wxUnsetEnv}{\param{const wxString\&}{ var}}
3669
ec5d7799 3670Removes the variable {\it var} from the environment.
5df6ed1c 3671\helpref{wxGetEnv}{wxgetenv} will return {\tt NULL} after the call to this
5807634c
VZ
3672function.
3673
cc81d32f 3674Returns {\tt true} on success.
5807634c 3675