]> git.saurik.com Git - wxWidgets.git/blame - docs/latex/wx/function.tex
added wxLocale::GetLanguageName
[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
dc0cecbc 1827\func{int}{wxMessageBox}{\param{const wxString\& }{message}, \param{const wxString\& }{caption = ``Message"}, \param{int}{ style = wxOK},\\
b0fc8832 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.}
b0fc8832
VZ
1839\twocolitem{wxICON\_EXCLAMATION}{Displays an exclamation mark symbol.}
1840\twocolitem{wxICON\_HAND}{Displays an error symbol.}
1841\twocolitem{wxICON\_ERROR}{Displays an error symbol - the same as wxICON\_HAND.}
1842\twocolitem{wxICON\_QUESTION}{Displays a question mark symbol.}
1843\twocolitem{wxICON\_INFORMATION}{Displays an information symbol.}
1844\end{twocollist}
a660d684 1845
b0fc8832 1846The return value is one of: wxYES, wxNO, wxCANCEL, wxOK.
a660d684 1847
b0fc8832 1848For example:
a660d684 1849
b0fc8832
VZ
1850\begin{verbatim}
1851 ...
1852 int answer = wxMessageBox("Quit program?", "Confirm",
1853 wxYES_NO | wxCANCEL, main_frame);
1854 if (answer == wxYES)
1855 delete main_frame;
1856 ...
1857\end{verbatim}
a660d684 1858
b0fc8832
VZ
1859{\it message} may contain newline characters, in which case the
1860message will be split into separate lines, to cater for large messages.
a660d684 1861
b0fc8832 1862\wxheading{Include files}
a660d684 1863
b0fc8832 1864<wx/msgdlg.h>
a660d684 1865
b0fc8832 1866\membersection{::wxShowTip}\label{wxshowtip}
a660d684 1867
b0fc8832
VZ
1868\func{bool}{wxShowTip}{\param{wxWindow *}{parent},
1869 \param{wxTipProvider *}{tipProvider},
cc81d32f 1870 \param{bool }{showAtStartup = true}}
a660d684 1871
7975104d
MB
1872This function shows a "startup tip" to the user. The return value is the
1873state of the ``Show tips at startup'' checkbox.
a660d684 1874
b0fc8832 1875\docparam{parent}{The parent window for the modal dialog}
a660d684 1876
b0fc8832
VZ
1877\docparam{tipProvider}{An object which is used to get the text of the tips.
1878It may be created with the \helpref{wxCreateFileTipProvider}{wxcreatefiletipprovider} function.}
a660d684 1879
cc81d32f 1880\docparam{showAtStartup}{Should be true if startup tips are shown, false
b0fc8832
VZ
1881otherwise. This is used as the initial value for "Show tips at startup"
1882checkbox which is shown in the tips dialog.}
a660d684 1883
b0fc8832 1884\wxheading{See also}
a660d684 1885
b0fc8832 1886\helpref{Tips overview}{tipsoverview}
a660d684 1887
b0fc8832 1888\wxheading{Include files}
f6bcfd97 1889
b0fc8832 1890<wx/tipdlg.h>
f6bcfd97 1891
a02afd14
VZ
1892
1893\section{Math functions}
1894
1895\wxheading{Include files}
1896
1897<wx/math.h>
1898
1899\membersection{wxFinite}\label{wxfinite}
1900
1901\func{int}{wxFinite}{\param{double }{x}}
1902
1903Returns a non-zero value if {\it x} is neither infinite or NaN (not a number),
1904returns 0 otherwise.
1905
1906\membersection{wxIsNaN}\label{wxisnan}
1907
1908\func{bool}{wxIsNaN}{\param{double }{x}}
1909
1910Returns a non-zero value if {\it x} is NaN (not a number), returns 0
1911otherwise.
1912
1913
b0fc8832 1914\section{GDI functions}\label{gdifunctions}
f6bcfd97 1915
b0fc8832 1916The following are relevant to the GDI (Graphics Device Interface).
f6bcfd97
BP
1917
1918\wxheading{Include files}
1919
b0fc8832 1920<wx/gdicmn.h>
f6bcfd97 1921
b0fc8832 1922\membersection{wxBITMAP}\label{wxbitmapmacro}
a660d684 1923
b0fc8832 1924\func{}{wxBITMAP}{bitmapName}
a660d684 1925
b0fc8832
VZ
1926This macro loads a bitmap from either application resources (on the platforms
1927for which they exist, i.e. Windows and OS2) or from an XPM file. It allows to
1928avoid using {\tt \#ifdef}s when creating bitmaps.
a660d684 1929
b0fc8832 1930\wxheading{See also}
954b8ae6 1931
b0fc8832
VZ
1932\helpref{Bitmaps and icons overview}{wxbitmapoverview},
1933\helpref{wxICON}{wxiconmacro}
a660d684 1934
b0fc8832 1935\wxheading{Include files}
954b8ae6 1936
b0fc8832 1937<wx/gdicmn.h>
a660d684 1938
b0fc8832 1939\membersection{::wxClientDisplayRect}\label{wxclientdisplayrect}
a660d684 1940
b0fc8832
VZ
1941\func{void}{wxClientDisplayRect}{\param{int *}{x}, \param{int *}{y},
1942\param{int *}{width}, \param{int *}{height}}
954b8ae6 1943
b0fc8832 1944\func{wxRect}{wxGetClientDisplayRect}{\void}
954b8ae6 1945
b0fc8832
VZ
1946Returns the dimensions of the work area on the display. On Windows
1947this means the area not covered by the taskbar, etc. Other platforms
1948are currently defaulting to the whole display until a way is found to
1949provide this info for all window managers, etc.
a660d684 1950
b0fc8832 1951\membersection{::wxColourDisplay}\label{wxcolourdisplay}
a660d684 1952
b0fc8832 1953\func{bool}{wxColourDisplay}{\void}
a660d684 1954
cc81d32f 1955Returns true if the display is colour, false otherwise.
a660d684 1956
b0fc8832 1957\membersection{::wxDisplayDepth}\label{wxdisplaydepth}
954b8ae6 1958
b0fc8832 1959\func{int}{wxDisplayDepth}{\void}
954b8ae6 1960
b0fc8832 1961Returns the depth of the display (a value of 1 denotes a monochrome display).
a660d684 1962
b0fc8832 1963\membersection{::wxDisplaySize}\label{wxdisplaysize}
a660d684 1964
b0fc8832 1965\func{void}{wxDisplaySize}{\param{int *}{width}, \param{int *}{height}}
a660d684 1966
b0fc8832 1967\func{wxSize}{wxGetDisplaySize}{\void}
a660d684 1968
b0fc8832 1969Returns the display size in pixels.
a660d684 1970
b0fc8832 1971\membersection{::wxDisplaySizeMM}\label{wxdisplaysizemm}
a660d684 1972
b0fc8832 1973\func{void}{wxDisplaySizeMM}{\param{int *}{width}, \param{int *}{height}}
a660d684 1974
b0fc8832 1975\func{wxSize}{wxGetDisplaySizeMM}{\void}
a660d684 1976
b0fc8832 1977Returns the display size in millimeters.
e2a6f233 1978
b0fc8832 1979\membersection{::wxDROP\_ICON}\label{wxdropicon}
e2a6f233 1980
b0fc8832 1981\func{wxIconOrCursor}{wxDROP\_ICON}{\param{const char *}{name}}
e2a6f233 1982
b0fc8832
VZ
1983This macro creates either a cursor (MSW) or an icon (elsewhere) with the given
1984name. Under MSW, the cursor is loaded from the resource file and the icon is
1985loaded from XPM file under other platforms.
1986
1987This macro should be used with
1988\helpref{wxDropSource constructor}{wxdropsourcewxdropsource}.
e2a6f233 1989
954b8ae6
JS
1990\wxheading{Include files}
1991
b0fc8832 1992<wx/dnd.h>
954b8ae6 1993
b0fc8832 1994\membersection{wxICON}\label{wxiconmacro}
e2a6f233 1995
b0fc8832 1996\func{}{wxICON}{iconName}
e2a6f233 1997
b0fc8832
VZ
1998This macro loads an icon from either application resources (on the platforms
1999for which they exist, i.e. Windows and OS2) or from an XPM file. It allows to
2000avoid using {\tt \#ifdef}s when creating icons.
e2a6f233 2001
b0fc8832 2002\wxheading{See also}
e2a6f233 2003
b0fc8832
VZ
2004\helpref{Bitmaps and icons overview}{wxbitmapoverview},
2005\helpref{wxBITMAP}{wxbitmapmacro}
e2a6f233 2006
954b8ae6
JS
2007\wxheading{Include files}
2008
b0fc8832 2009<wx/gdicmn.h>
a660d684 2010
b0fc8832 2011\membersection{::wxMakeMetafilePlaceable}\label{wxmakemetafileplaceable}
de6019fb 2012
b0fc8832
VZ
2013\func{bool}{wxMakeMetafilePlaceable}{\param{const wxString\& }{filename}, \param{int }{minX}, \param{int }{minY},
2014 \param{int }{maxX}, \param{int }{maxY}, \param{float }{scale=1.0}}
a660d684 2015
b0fc8832
VZ
2016Given a filename for an existing, valid metafile (as constructed using \helpref{wxMetafileDC}{wxmetafiledc})
2017makes it into a placeable metafile by prepending a header containing the given
2018bounding box. The bounding box may be obtained from a device context after drawing
2019into it, using the functions wxDC::MinX, wxDC::MinY, wxDC::MaxX and wxDC::MaxY.
a660d684 2020
b0fc8832
VZ
2021In addition to adding the placeable metafile header, this function adds
2022the equivalent of the following code to the start of the metafile data:
a660d684 2023
b0fc8832
VZ
2024\begin{verbatim}
2025 SetMapMode(dc, MM_ANISOTROPIC);
2026 SetWindowOrg(dc, minX, minY);
2027 SetWindowExt(dc, maxX - minX, maxY - minY);
2028\end{verbatim}
6fb26ea3 2029
b0fc8832 2030This simulates the wxMM\_TEXT mapping mode, which wxWindows assumes.
954b8ae6 2031
b0fc8832
VZ
2032Placeable metafiles may be imported by many Windows applications, and can be
2033used in RTF (Rich Text Format) files.
954b8ae6 2034
b0fc8832 2035{\it scale} allows the specification of scale for the metafile.
a660d684 2036
b0fc8832 2037This function is only available under Windows.
a660d684 2038
b0fc8832 2039\membersection{::wxSetCursor}\label{wxsetcursor}
a660d684 2040
b0fc8832 2041\func{void}{wxSetCursor}{\param{wxCursor *}{cursor}}
954b8ae6 2042
b0fc8832
VZ
2043Globally sets the cursor; only has an effect in Windows and GTK.
2044See also \helpref{wxCursor}{wxcursor}, \helpref{wxWindow::SetCursor}{wxwindowsetcursor}.
954b8ae6 2045
b0fc8832 2046\section{Printer settings}\label{printersettings}
8e193f38 2047
2bd25c5a 2048{\bf NB:} These routines are obsolete and should no longer be used!
8e193f38 2049
b0fc8832
VZ
2050The following functions are used to control PostScript printing. Under
2051Windows, PostScript output can only be sent to a file.
8e193f38
VZ
2052
2053\wxheading{Include files}
2054
b0fc8832 2055<wx/dcps.h>
a660d684 2056
b0fc8832 2057\membersection{::wxGetPrinterCommand}\label{wxgetprintercommand}
a660d684 2058
b0fc8832 2059\func{wxString}{wxGetPrinterCommand}{\void}
a660d684 2060
b0fc8832 2061Gets the printer command used to print a file. The default is {\tt lpr}.
a660d684 2062
b0fc8832 2063\membersection{::wxGetPrinterFile}\label{wxgetprinterfile}
a660d684 2064
b0fc8832 2065\func{wxString}{wxGetPrinterFile}{\void}
a660d684 2066
b0fc8832 2067Gets the PostScript output filename.
a660d684 2068
b0fc8832 2069\membersection{::wxGetPrinterMode}\label{wxgetprintermode}
a660d684 2070
b0fc8832 2071\func{int}{wxGetPrinterMode}{\void}
954b8ae6 2072
b0fc8832
VZ
2073Gets the printing mode controlling where output is sent (PS\_PREVIEW, PS\_FILE or PS\_PRINTER).
2074The default is PS\_PREVIEW.
954b8ae6 2075
b0fc8832 2076\membersection{::wxGetPrinterOptions}\label{wxgetprinteroptions}
954b8ae6 2077
b0fc8832 2078\func{wxString}{wxGetPrinterOptions}{\void}
954b8ae6 2079
b0fc8832 2080Gets the additional options for the print command (e.g. specific printer). The default is nothing.
954b8ae6 2081
b0fc8832 2082\membersection{::wxGetPrinterOrientation}\label{wxgetprinterorientation}
954b8ae6 2083
b0fc8832 2084\func{int}{wxGetPrinterOrientation}{\void}
a660d684 2085
b0fc8832 2086Gets the orientation (PS\_PORTRAIT or PS\_LANDSCAPE). The default is PS\_PORTRAIT.
a660d684 2087
b0fc8832 2088\membersection{::wxGetPrinterPreviewCommand}\label{wxgetprinterpreviewcommand}
8e193f38 2089
b0fc8832 2090\func{wxString}{wxGetPrinterPreviewCommand}{\void}
a660d684 2091
b0fc8832 2092Gets the command used to view a PostScript file. The default depends on the platform.
954b8ae6 2093
b0fc8832 2094\membersection{::wxGetPrinterScaling}\label{wxgetprinterscaling}
954b8ae6 2095
b0fc8832 2096\func{void}{wxGetPrinterScaling}{\param{float *}{x}, \param{float *}{y}}
a660d684 2097
b0fc8832 2098Gets the scaling factor for PostScript output. The default is 1.0, 1.0.
a660d684 2099
b0fc8832 2100\membersection{::wxGetPrinterTranslation}\label{wxgetprintertranslation}
a660d684 2101
b0fc8832 2102\func{void}{wxGetPrinterTranslation}{\param{float *}{x}, \param{float *}{y}}
954b8ae6 2103
b0fc8832 2104Gets the translation (from the top left corner) for PostScript output. The default is 0.0, 0.0.
954b8ae6 2105
b0fc8832 2106\membersection{::wxSetPrinterCommand}\label{wxsetprintercommand}
a660d684 2107
b0fc8832 2108\func{void}{wxSetPrinterCommand}{\param{const wxString\& }{command}}
a660d684 2109
b0fc8832 2110Sets the printer command used to print a file. The default is {\tt lpr}.
a660d684 2111
b0fc8832 2112\membersection{::wxSetPrinterFile}\label{wxsetprinterfile}
cd6ce4a9 2113
b0fc8832 2114\func{void}{wxSetPrinterFile}{\param{const wxString\& }{filename}}
f6bcfd97 2115
b0fc8832 2116Sets the PostScript output filename.
a660d684 2117
b0fc8832 2118\membersection{::wxSetPrinterMode}\label{wxsetprintermode}
a660d684 2119
b0fc8832 2120\func{void}{wxSetPrinterMode}{\param{int }{mode}}
a660d684 2121
b0fc8832
VZ
2122Sets the printing mode controlling where output is sent (PS\_PREVIEW, PS\_FILE or PS\_PRINTER).
2123The default is PS\_PREVIEW.
cd6ce4a9 2124
b0fc8832 2125\membersection{::wxSetPrinterOptions}\label{wxsetprinteroptions}
a660d684 2126
b0fc8832 2127\func{void}{wxSetPrinterOptions}{\param{const wxString\& }{options}}
e6045e08 2128
b0fc8832 2129Sets the additional options for the print command (e.g. specific printer). The default is nothing.
a660d684 2130
b0fc8832 2131\membersection{::wxSetPrinterOrientation}\label{wxsetprinterorientation}
eafc087e 2132
b0fc8832 2133\func{void}{wxSetPrinterOrientation}{\param{int}{ orientation}}
cd6ce4a9 2134
b0fc8832 2135Sets the orientation (PS\_PORTRAIT or PS\_LANDSCAPE). The default is PS\_PORTRAIT.
a660d684 2136
b0fc8832 2137\membersection{::wxSetPrinterPreviewCommand}\label{wxsetprinterpreviewcommand}
954b8ae6 2138
b0fc8832 2139\func{void}{wxSetPrinterPreviewCommand}{\param{const wxString\& }{command}}
954b8ae6 2140
b0fc8832 2141Sets the command used to view a PostScript file. The default depends on the platform.
a660d684 2142
b0fc8832 2143\membersection{::wxSetPrinterScaling}\label{wxsetprinterscaling}
a660d684 2144
b0fc8832 2145\func{void}{wxSetPrinterScaling}{\param{float }{x}, \param{float }{y}}
a660d684 2146
b0fc8832 2147Sets the scaling factor for PostScript output. The default is 1.0, 1.0.
954b8ae6 2148
b0fc8832 2149\membersection{::wxSetPrinterTranslation}\label{wxsetprintertranslation}
954b8ae6 2150
b0fc8832 2151\func{void}{wxSetPrinterTranslation}{\param{float }{x}, \param{float }{y}}
a660d684 2152
b0fc8832 2153Sets the translation (from the top left corner) for PostScript output. The default is 0.0, 0.0.
a660d684 2154
b0fc8832
VZ
2155\section{Clipboard functions}\label{clipsboard}
2156
2157These clipboard functions are implemented for Windows only. The use of these functions
2158is deprecated and the code is no longer maintained. Use the \helpref{wxClipboard}{wxclipboard}
2159class instead.
a660d684 2160
954b8ae6
JS
2161\wxheading{Include files}
2162
b0fc8832 2163<wx/clipbrd.h>
954b8ae6 2164
f4fcc291 2165\membersection{::wxClipboardOpen}\label{functionwxclipboardopen}
a660d684 2166
b0fc8832 2167\func{bool}{wxClipboardOpen}{\void}
a660d684 2168
cc81d32f 2169Returns true if this application has already opened the clipboard.
a660d684 2170
b0fc8832 2171\membersection{::wxCloseClipboard}\label{wxcloseclipboard}
954b8ae6 2172
b0fc8832 2173\func{bool}{wxCloseClipboard}{\void}
954b8ae6 2174
b0fc8832 2175Closes the clipboard to allow other applications to use it.
a660d684 2176
b0fc8832 2177\membersection{::wxEmptyClipboard}\label{wxemptyclipboard}
a660d684 2178
b0fc8832 2179\func{bool}{wxEmptyClipboard}{\void}
a660d684 2180
b0fc8832 2181Empties the clipboard.
954b8ae6 2182
b0fc8832 2183\membersection{::wxEnumClipboardFormats}\label{wxenumclipboardformats}
954b8ae6 2184
b0fc8832 2185\func{int}{wxEnumClipboardFormats}{\param{int}{dataFormat}}
a660d684 2186
b0fc8832
VZ
2187Enumerates the formats found in a list of available formats that belong
2188to the clipboard. Each call to this function specifies a known
2189available format; the function returns the format that appears next in
2190the list.
a660d684 2191
b0fc8832
VZ
2192{\it dataFormat} specifies a known format. If this parameter is zero,
2193the function returns the first format in the list.
a660d684 2194
b0fc8832
VZ
2195The return value specifies the next known clipboard data format if the
2196function is successful. It is zero if the {\it dataFormat} parameter specifies
2197the last format in the list of available formats, or if the clipboard
2198is not open.
a660d684 2199
b0fc8832
VZ
2200Before it enumerates the formats function, an application must open the clipboard by using the
2201wxOpenClipboard function.
954b8ae6 2202
b0fc8832 2203\membersection{::wxGetClipboardData}\label{wxgetclipboarddata}
954b8ae6 2204
b0fc8832 2205\func{wxObject *}{wxGetClipboardData}{\param{int}{dataFormat}}
26a80c22 2206
b0fc8832 2207Gets data from the clipboard.
26a80c22 2208
b0fc8832 2209{\it dataFormat} may be one of:
26a80c22 2210
b0fc8832
VZ
2211\begin{itemize}\itemsep=0pt
2212\item wxCF\_TEXT or wxCF\_OEMTEXT: returns a pointer to new memory containing a null-terminated text string.
2213\item wxCF\_BITMAP: returns a new wxBitmap.
2214\end{itemize}
26a80c22 2215
b0fc8832 2216The clipboard must have previously been opened for this call to succeed.
26a80c22 2217
b0fc8832 2218\membersection{::wxGetClipboardFormatName}\label{wxgetclipboardformatname}
26a80c22 2219
b0fc8832 2220\func{bool}{wxGetClipboardFormatName}{\param{int}{dataFormat}, \param{const wxString\& }{formatName}, \param{int}{maxCount}}
a660d684 2221
b0fc8832
VZ
2222Gets the name of a registered clipboard format, and puts it into the buffer {\it formatName} which is of maximum
2223length {\it maxCount}. {\it dataFormat} must not specify a predefined clipboard format.
a660d684 2224
b0fc8832 2225\membersection{::wxIsClipboardFormatAvailable}\label{wxisclipboardformatavailable}
a660d684 2226
b0fc8832 2227\func{bool}{wxIsClipboardFormatAvailable}{\param{int}{dataFormat}}
954b8ae6 2228
cc81d32f 2229Returns true if the given data format is available on the clipboard.
954b8ae6 2230
b0fc8832 2231\membersection{::wxOpenClipboard}\label{wxopenclipboard}
a660d684 2232
b0fc8832 2233\func{bool}{wxOpenClipboard}{\void}
a660d684 2234
b0fc8832 2235Opens the clipboard for passing data to it or getting data from it.
a660d684 2236
b0fc8832 2237\membersection{::wxRegisterClipboardFormat}\label{wxregisterclipboardformat}
954b8ae6 2238
b0fc8832 2239\func{int}{wxRegisterClipboardFormat}{\param{const wxString\& }{formatName}}
954b8ae6 2240
b0fc8832 2241Registers the clipboard data format name and returns an identifier.
a660d684 2242
b0fc8832 2243\membersection{::wxSetClipboardData}\label{wxsetclipboarddata}
a660d684 2244
b0fc8832 2245\func{bool}{wxSetClipboardData}{\param{int}{dataFormat}, \param{wxObject *}{data}, \param{int}{width}, \param{int}{height}}
c51deffc 2246
b0fc8832 2247Passes data to the clipboard.
c51deffc 2248
b0fc8832 2249{\it dataFormat} may be one of:
a660d684 2250
b0fc8832
VZ
2251\begin{itemize}\itemsep=0pt
2252\item wxCF\_TEXT or wxCF\_OEMTEXT: {\it data} is a null-terminated text string.
2253\item wxCF\_BITMAP: {\it data} is a wxBitmap.
2254\item wxCF\_DIB: {\it data} is a wxBitmap. The bitmap is converted to a DIB (device independent bitmap).
2255\item wxCF\_METAFILE: {\it data} is a wxMetafile. {\it width} and {\it height} are used to give recommended dimensions.
2256\end{itemize}
954b8ae6 2257
b0fc8832 2258The clipboard must have previously been opened for this call to succeed.
954b8ae6 2259
b0fc8832 2260\section{Miscellaneous functions}\label{miscellany}
a660d684 2261
986ecc86
VZ
2262\membersection{wxEXPLICIT}\label{wxexplicit}
2263
2264{\tt wxEXPLICIT} is a macro which expands to the C++ {\tt explicit} keyword if
2265the compiler supports it or nothing otherwise. Thus, it can be used even in the
2266code which might have to be compiled with an old compiler without support for
2267this language feature but still take advantage of it when it is available.
2268
2b5f62a0
VZ
2269\membersection{wxLL}\label{wxll}
2270
2271\func{wxLongLong\_t}{wxLL}{\param{}{number}}
2272
2273This macro is defined for the platforms with a native 64 bit integer type and
2274allows to define 64 bit compile time constants:
2275
2276\begin{verbatim}
2277 #ifdef wxLongLong_t
2278 wxLongLong_t ll = wxLL(0x1234567890abcdef);
2279 #endif
2280\end{verbatim}
2281
2282\wxheading{Include files}
2283
2284<wx/longlong.h>
2285
2286\membersection{wxLongLongFmtSpec}\label{wxlonglongfmtspec}
2287
2288This macro is defined to contain the {\tt printf()} format specifier using
2289which 64 bit integer numbers (i.e. those of type {\tt wxLongLong\_t}) can be
2290printed. Example of using it:
2291
2292\begin{verbatim}
2293 #ifdef wxLongLong_t
2294 wxLongLong_t ll = wxLL(0x1234567890abcdef);
2295 printf("Long long = %" wxLongLongFmtSpec "x\n", ll);
2296 #endif
2297\end{verbatim}
2298
2299\wxheading{See also}
2300
2301\helpref{wxLL}{wxll}
2302
2303\wxheading{Include files}
2304
2305<wx/longlong.h>
2306
b0fc8832 2307\membersection{::wxNewId}\label{wxnewid}
a660d684 2308
b0fc8832
VZ
2309\func{long}{wxNewId}{\void}
2310
2311Generates an integer identifier unique to this run of the program.
a660d684 2312
954b8ae6
JS
2313\wxheading{Include files}
2314
2315<wx/utils.h>
2316
b0fc8832 2317\membersection{::wxRegisterId}\label{wxregisterid}
a660d684 2318
b0fc8832 2319\func{void}{wxRegisterId}{\param{long}{ id}}
a660d684 2320
b0fc8832
VZ
2321Ensures that ids subsequently generated by {\bf NewId} do not clash with
2322the given {\bf id}.
a660d684 2323
954b8ae6
JS
2324\wxheading{Include files}
2325
2326<wx/utils.h>
2327
b0fc8832 2328\membersection{::wxDDECleanUp}\label{wxddecleanup}
bdc72a22 2329
b0fc8832 2330\func{void}{wxDDECleanUp}{\void}
bdc72a22 2331
b0fc8832
VZ
2332Called when wxWindows exits, to clean up the DDE system. This no longer needs to be
2333called by the application.
bdc72a22 2334
b0fc8832 2335See also \helpref{wxDDEInitialize}{wxddeinitialize}.
bdc72a22
VZ
2336
2337\wxheading{Include files}
2338
b0fc8832 2339<wx/dde.h>
a660d684 2340
b0fc8832 2341\membersection{::wxDDEInitialize}\label{wxddeinitialize}
a660d684 2342
b0fc8832 2343\func{void}{wxDDEInitialize}{\void}
a660d684 2344
b0fc8832 2345Initializes the DDE system. May be called multiple times without harm.
a660d684 2346
b0fc8832
VZ
2347This no longer needs to be called by the application: it will be called
2348by wxWindows if necessary.
bdc72a22 2349
b0fc8832
VZ
2350See also \helpref{wxDDEServer}{wxddeserver}, \helpref{wxDDEClient}{wxddeclient}, \helpref{wxDDEConnection}{wxddeconnection},
2351\helpref{wxDDECleanUp}{wxddecleanup}.
bdc72a22 2352
954b8ae6
JS
2353\wxheading{Include files}
2354
b0fc8832 2355<wx/dde.h>
a660d684 2356
b0fc8832 2357\membersection{::wxEnableTopLevelWindows}\label{wxenabletoplevelwindows}
a660d684 2358
cc81d32f 2359\func{void}{wxEnableTopLevelWindow}{\param{bool}{ enable = true}}
a660d684 2360
b0fc8832
VZ
2361This function enables or disables all top level windows. It is used by
2362\helpref{::wxSafeYield}{wxsafeyield}.
a660d684 2363
954b8ae6
JS
2364\wxheading{Include files}
2365
2366<wx/utils.h>
2367
b0fc8832 2368\membersection{::wxFindMenuItemId}\label{wxfindmenuitemid}
a660d684 2369
b0fc8832 2370\func{int}{wxFindMenuItemId}{\param{wxFrame *}{frame}, \param{const wxString\& }{menuString}, \param{const wxString\& }{itemString}}
a660d684 2371
b0fc8832 2372Find a menu item identifier associated with the given frame's menu bar.
a660d684 2373
954b8ae6
JS
2374\wxheading{Include files}
2375
2376<wx/utils.h>
2377
b0fc8832 2378\membersection{::wxFindWindowByLabel}\label{wxfindwindowbylabel}
c51deffc 2379
b0fc8832 2380\func{wxWindow *}{wxFindWindowByLabel}{\param{const wxString\& }{label}, \param{wxWindow *}{parent=NULL}}
c51deffc 2381
b829bf55 2382{\bf NB:} This function is obsolete, please use
146ba0fe
VZ
2383\helpref{wxWindow::FindWindowByLabel}{wxwindowfindwindowbylabel} instead.
2384
b0fc8832
VZ
2385Find a window by its label. Depending on the type of window, the label may be a window title
2386or panel item label. If {\it parent} is NULL, the search will start from all top-level
2387frames and dialog boxes; if non-NULL, the search will be limited to the given window hierarchy.
2388The search is recursive in both cases.
c51deffc
VZ
2389
2390\wxheading{Include files}
2391
2392<wx/utils.h>
2393
b0fc8832
VZ
2394\membersection{::wxFindWindowByName}\label{wxfindwindowbyname}
2395
2396\func{wxWindow *}{wxFindWindowByName}{\param{const wxString\& }{name}, \param{wxWindow *}{parent=NULL}}
a660d684 2397
b829bf55 2398{\bf NB:} This function is obsolete, please use
146ba0fe
VZ
2399\helpref{wxWindow::FindWindowByName}{wxwindowfindwindowbyname} instead.
2400
b0fc8832
VZ
2401Find a window by its name (as given in a window constructor or {\bf Create} function call).
2402If {\it parent} is NULL, the search will start from all top-level
2403frames and dialog boxes; if non-NULL, the search will be limited to the given window hierarchy.
2404The search is recursive in both cases.
a660d684 2405
b0fc8832 2406If no such named window is found, {\bf wxFindWindowByLabel} is called.
a660d684 2407
954b8ae6
JS
2408\wxheading{Include files}
2409
2410<wx/utils.h>
2411
b0fc8832 2412\membersection{::wxFindWindowAtPoint}\label{wxfindwindowatpoint}
6787e41e 2413
b0fc8832 2414\func{wxWindow *}{wxFindWindowAtPoint}{\param{const wxPoint\& }{pt}}
6787e41e 2415
b0fc8832
VZ
2416Find the deepest window at the given mouse position in screen coordinates,
2417returning the window if found, or NULL if not.
4d01e583 2418
b0fc8832 2419\membersection{::wxFindWindowAtPointer}\label{wxfindwindowatpointer}
4d01e583 2420
b0fc8832 2421\func{wxWindow *}{wxFindWindowAtPointer}{\param{wxPoint\& }{pt}}
4d01e583 2422
b0fc8832
VZ
2423Find the deepest window at the mouse pointer position, returning the window
2424and current pointer position in screen coordinates.
4d01e583 2425
b0fc8832 2426\membersection{::wxGetActiveWindow}\label{wxgetactivewindow}
4d01e583 2427
b0fc8832 2428\func{wxWindow *}{wxGetActiveWindow}{\void}
4d01e583 2429
b0fc8832 2430Gets the currently active window (Windows only).
4d01e583 2431
b0fc8832 2432\wxheading{Include files}
4d01e583 2433
b0fc8832 2434<wx/windows.h>
4d01e583 2435
b0fc8832 2436\membersection{::wxGetDisplayName}\label{wxgetdisplayname}
4d01e583 2437
b0fc8832 2438\func{wxString}{wxGetDisplayName}{\void}
4d01e583 2439
b0fc8832 2440Under X only, returns the current display name. See also \helpref{wxSetDisplayName}{wxsetdisplayname}.
4d01e583
VZ
2441
2442\wxheading{Include files}
2443
b0fc8832 2444<wx/utils.h>
4d01e583 2445
b0fc8832 2446\membersection{::wxGetMousePosition}\label{wxgetmouseposition}
4d01e583 2447
b0fc8832 2448\func{wxPoint}{wxGetMousePosition}{\void}
4d01e583 2449
b0fc8832 2450Returns the mouse position in screen coordinates.
4d01e583
VZ
2451
2452\wxheading{Include files}
2453
2454<wx/utils.h>
2455
b0fc8832 2456\membersection{::wxGetResource}\label{wxgetresource}
a660d684 2457
b0fc8832
VZ
2458\func{bool}{wxGetResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry},
2459 \param{const wxString\& *}{value}, \param{const wxString\& }{file = NULL}}
a660d684 2460
b0fc8832
VZ
2461\func{bool}{wxGetResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry},
2462 \param{float *}{value}, \param{const wxString\& }{file = NULL}}
a660d684 2463
b0fc8832
VZ
2464\func{bool}{wxGetResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry},
2465 \param{long *}{value}, \param{const wxString\& }{file = NULL}}
50567b69 2466
b0fc8832
VZ
2467\func{bool}{wxGetResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry},
2468 \param{int *}{value}, \param{const wxString\& }{file = NULL}}
50567b69 2469
b0fc8832
VZ
2470Gets a resource value from the resource database (for example, WIN.INI, or
2471.Xdefaults). If {\it file} is NULL, WIN.INI or .Xdefaults is used,
2472otherwise the specified file is used.
50567b69 2473
b0fc8832
VZ
2474Under X, if an application class (wxApp::GetClassName) has been defined,
2475it is appended to the string /usr/lib/X11/app-defaults/ to try to find
2476an applications default file when merging all resource databases.
50567b69 2477
b0fc8832
VZ
2478The reason for passing the result in an argument is that it
2479can be convenient to define a default value, which gets overridden
2480if the value exists in the resource file. It saves a separate
2481test for that resource's existence, and it also allows
2482the overloading of the function for different types.
50567b69 2483
b0fc8832 2484See also \helpref{wxWriteResource}{wxwriteresource}, \helpref{wxConfigBase}{wxconfigbase}.
a660d684 2485
954b8ae6 2486\wxheading{Include files}
a660d684 2487
954b8ae6 2488<wx/utils.h>
a660d684 2489
33b494d6
VZ
2490\membersection{::wxGetTopLevelParent}\label{wxgettoplevelparent}
2491
2492\func{wxWindow *}{wxGetTopLevelParent}{\param{wxWindow }{*win}}
2493
2494Returns the first top level parent of the given window, or in other words, the
2495frame or dialog containing it, or {\tt NULL}.
2496
2497\wxheading{Include files}
2498
2499<wx/window.h>
2500
a660d684
KB
2501\membersection{::wxLoadUserResource}\label{wxloaduserresource}
2502
2503\func{wxString}{wxLoadUserResource}{\param{const wxString\& }{resourceName}, \param{const wxString\& }{resourceType=``TEXT"}}
2504
2505Loads a user-defined Windows resource as a string. If the resource is found, the function creates
2506a new character array and copies the data into it. A pointer to this data is returned. If unsuccessful, NULL is returned.
2507
2508The resource must be defined in the {\tt .rc} file using the following syntax:
2509
2510\begin{verbatim}
2511myResource TEXT file.ext
2512\end{verbatim}
2513
2514where {\tt file.ext} is a file that the resource compiler can find.
2515
a660d684
KB
2516This function is available under Windows only.
2517
954b8ae6
JS
2518\wxheading{Include files}
2519
2520<wx/utils.h>
2521
a660d684
KB
2522\membersection{::wxPostDelete}\label{wxpostdelete}
2523
2524\func{void}{wxPostDelete}{\param{wxObject *}{object}}
2525
954b8ae6 2526Tells the system to delete the specified object when
a660d684
KB
2527all other events have been processed. In some environments, it is
2528necessary to use this instead of deleting a frame directly with the
954b8ae6 2529delete operator, because some GUIs will still send events to a deleted window.
a660d684
KB
2530
2531Now obsolete: use \helpref{wxWindow::Close}{wxwindowclose} instead.
2532
954b8ae6
JS
2533\wxheading{Include files}
2534
2535<wx/utils.h>
2536
8e193f38
VZ
2537\membersection{::wxPostEvent}\label{wxpostevent}
2538
2539\func{void}{wxPostEvent}{\param{wxEvtHandler *}{dest}, \param{wxEvent\& }{event}}
2540
9a9e73f6
RR
2541In a GUI application, this function posts {\it event} to the specified {\it dest}
2542object using \helpref{wxEvtHandler::AddPendingEvent}{wxevthandleraddpendingevent}.
2543Otherwise, it dispatches {\it event} immediately using
2544\helpref{wxEvtHandler::ProcessEvent}{wxevthandlerprocessevent}.
2545See the respective documentation for details (and caveats).
8e193f38
VZ
2546
2547\wxheading{Include files}
2548
2549<wx/app.h>
2550
a660d684
KB
2551\membersection{::wxSetDisplayName}\label{wxsetdisplayname}
2552
2553\func{void}{wxSetDisplayName}{\param{const wxString\& }{displayName}}
2554
2555Under X only, sets the current display name. This is the X host and display name such
2556as ``colonsay:0.0", and the function indicates which display should be used for creating
2557windows from this point on. Setting the display within an application allows multiple
2558displays to be used.
2559
2560See also \helpref{wxGetDisplayName}{wxgetdisplayname}.
2561
954b8ae6
JS
2562\wxheading{Include files}
2563
2564<wx/utils.h>
2565
b0fc8832 2566\membersection{::wxStripMenuCodes}\label{wxstripmenucodes}
a660d684 2567
8a2c6ef8
JS
2568\func{wxString}{wxStripMenuCodes}{\param{const wxString\& }{in}}
2569
7ac13b21 2570\func{void}{wxStripMenuCodes}{\param{char *}{in}, \param{char *}{out}}
a660d684 2571
b829bf55 2572{\bf NB:} This function is obsolete, please use
b0fc8832
VZ
2573\helpref{wxMenuItem::GetLabelFromText}{wxmenuitemgetlabelfromtext} instead.
2574
a660d684 2575Strips any menu codes from {\it in} and places the result
8a2c6ef8
JS
2576in {\it out} (or returns the new string, in the first form).
2577
2578Menu codes include \& (mark the next character with an underline
a660d684
KB
2579as a keyboard shortkey in Windows and Motif) and $\backslash$t (tab in Windows).
2580
954b8ae6
JS
2581\wxheading{Include files}
2582
2583<wx/utils.h>
2584
a660d684
KB
2585\membersection{::wxWriteResource}\label{wxwriteresource}
2586
2587\func{bool}{wxWriteResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry},
2588 \param{const wxString\& }{value}, \param{const wxString\& }{file = NULL}}
2589
2590\func{bool}{wxWriteResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry},
2591 \param{float }{value}, \param{const wxString\& }{file = NULL}}
2592
2593\func{bool}{wxWriteResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry},
2594 \param{long }{value}, \param{const wxString\& }{file = NULL}}
2595
2596\func{bool}{wxWriteResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry},
2597 \param{int }{value}, \param{const wxString\& }{file = NULL}}
2598
2599Writes a resource value into the resource database (for example, WIN.INI, or
2600.Xdefaults). If {\it file} is NULL, WIN.INI or .Xdefaults is used,
2601otherwise the specified file is used.
2602
2603Under X, the resource databases are cached until the internal function
b0fc8832
VZ
2604\rtfsp{\bf wxFlushResources} is called automatically on exit, when
2605all updated resource databases are written to their files.
8a293590 2606
b0fc8832
VZ
2607Note that it is considered bad manners to write to the .Xdefaults
2608file under Unix, although the WIN.INI file is fair game under Windows.
8a293590 2609
b0fc8832 2610See also \helpref{wxGetResource}{wxgetresource}, \helpref{wxConfigBase}{wxconfigbase}.
8a293590
RR
2611
2612\wxheading{Include files}
2613
b0fc8832 2614<wx/utils.h>
8a293590 2615
81c9effa 2616\section{Byte order macros}\label{byteordermacros}
a660d684 2617
b0fc8832
VZ
2618The endian-ness issues (that is the difference between big-endian and
2619little-endian architectures) are important for the portable programs working
2620with the external binary data (for example, data files or data coming from
2621network) which is usually in some fixed, platform-independent format. The
2622macros are helpful for transforming the data to the correct format.
a660d684 2623
0180dad6
RR
2624\membersection{wxINTXX\_SWAP\_ALWAYS}\label{intswapalways}
2625
2626\func{wxInt32}{wxINT32\_SWAP\_ALWAYS}{\param{wxInt32 }{value}}
2627
2628\func{wxUint32}{wxUINT32\_SWAP\_ALWAYS}{\param{wxUint32 }{value}}
2629
2630\func{wxInt16}{wxINT16\_SWAP\_ALWAYS}{\param{wxInt16 }{value}}
2631
2632\func{wxUint16}{wxUINT16\_SWAP\_ALWAYS}{\param{wxUint16 }{value}}
2633
b0fc8832
VZ
2634These macros will swap the bytes of the {\it value} variable from little
2635endian to big endian or vice versa unconditionally, i.e. independently of the
2636current platform.
0180dad6
RR
2637
2638\membersection{wxINTXX\_SWAP\_ON\_BE}\label{intswaponbe}
2639
2640\func{wxInt32}{wxINT32\_SWAP\_ON\_BE}{\param{wxInt32 }{value}}
2641
2642\func{wxUint32}{wxUINT32\_SWAP\_ON\_BE}{\param{wxUint32 }{value}}
2643
2644\func{wxInt16}{wxINT16\_SWAP\_ON\_BE}{\param{wxInt16 }{value}}
2645
2646\func{wxUint16}{wxUINT16\_SWAP\_ON\_BE}{\param{wxUint16 }{value}}
2647
2648This macro will swap the bytes of the {\it value} variable from little
2649endian to big endian or vice versa if the program is compiled on a
ec5d7799 2650big-endian architecture (such as Sun work stations). If the program has
0180dad6
RR
2651been compiled on a little-endian architecture, the value will be unchanged.
2652
ec5d7799 2653Use these macros to read data from and write data to a file that stores
b0fc8832 2654data in little-endian (for example Intel i386) format.
0180dad6
RR
2655
2656\membersection{wxINTXX\_SWAP\_ON\_LE}\label{intswaponle}
2657
2658\func{wxInt32}{wxINT32\_SWAP\_ON\_LE}{\param{wxInt32 }{value}}
2659
2660\func{wxUint32}{wxUINT32\_SWAP\_ON\_LE}{\param{wxUint32 }{value}}
2661
2662\func{wxInt16}{wxINT16\_SWAP\_ON\_LE}{\param{wxInt16 }{value}}
2663
2664\func{wxUint16}{wxUINT16\_SWAP\_ON\_LE}{\param{wxUint16 }{value}}
2665
2666This macro will swap the bytes of the {\it value} variable from little
2667endian to big endian or vice versa if the program is compiled on a
ec5d7799 2668little-endian architecture (such as Intel PCs). If the program has
0180dad6
RR
2669been compiled on a big-endian architecture, the value will be unchanged.
2670
ec5d7799 2671Use these macros to read data from and write data to a file that stores
b0fc8832
VZ
2672data in big-endian format.
2673
f4fcc291 2674\section{RTTI functions}\label{rttimacros}
b0fc8832
VZ
2675
2676wxWindows uses its own RTTI ("run-time type identification") system which
2677predates the current standard C++ RTTI and so is kept for backwards
2edb0bde 2678compatibility reasons but also because it allows some things which the
b0fc8832
VZ
2679standard RTTI doesn't directly support (such as creating a class from its
2680name).
2681
2682The standard C++ RTTI can be used in the user code without any problems and in
2683general you shouldn't need to use the functions and the macros in this section
2684unless you are thinking of modifying or adding any wxWindows classes.
2685
2686\wxheading{See also}
2687
2688\helpref{RTTI overview}{runtimeclassoverview}
0180dad6 2689
a660d684
KB
2690\membersection{CLASSINFO}\label{classinfo}
2691
2692\func{wxClassInfo *}{CLASSINFO}{className}
2693
2694Returns a pointer to the wxClassInfo object associated with this class.
2695
954b8ae6
JS
2696\wxheading{Include files}
2697
2698<wx/object.h>
2699
b0fc8832 2700\membersection{DECLARE\_ABSTRACT\_CLASS}\label{declareabstractclass}
a660d684
KB
2701
2702\func{}{DECLARE\_ABSTRACT\_CLASS}{className}
2703
2704Used inside a class declaration to declare that the class should be
2705made known to the class hierarchy, but objects of this class cannot be created
2706dynamically. The same as DECLARE\_CLASS.
2707
2708Example:
2709
2710\begin{verbatim}
2711class wxCommand: public wxObject
2712{
2713 DECLARE_ABSTRACT_CLASS(wxCommand)
2714
2715 private:
2716 ...
2717 public:
2718 ...
2719};
2720\end{verbatim}
2721
954b8ae6
JS
2722\wxheading{Include files}
2723
2724<wx/object.h>
2725
a660d684
KB
2726\membersection{DECLARE\_APP}\label{declareapp}
2727
2728\func{}{DECLARE\_APP}{className}
2729
749caeeb
VZ
2730This is used in headers to create a forward declaration of the
2731\helpref{wxGetApp}{wxgetapp} function implemented by
2732\helpref{IMPLEMENT\_APP}{implementapp}. It creates the declaration
2733{\tt className\& wxGetApp(void)}.
a660d684
KB
2734
2735Example:
2736
2737\begin{verbatim}
2738 DECLARE_APP(MyApp)
2739\end{verbatim}
2740
954b8ae6
JS
2741\wxheading{Include files}
2742
2743<wx/app.h>
2744
b0fc8832 2745\membersection{DECLARE\_CLASS}\label{declareclass}
a660d684
KB
2746
2747\func{}{DECLARE\_CLASS}{className}
2748
2749Used inside a class declaration to declare that the class should be
2750made known to the class hierarchy, but objects of this class cannot be created
2751dynamically. The same as DECLARE\_ABSTRACT\_CLASS.
2752
954b8ae6
JS
2753\wxheading{Include files}
2754
2755<wx/object.h>
2756
b0fc8832 2757\membersection{DECLARE\_DYNAMIC\_CLASS}\label{declaredynamicclass}
a660d684
KB
2758
2759\func{}{DECLARE\_DYNAMIC\_CLASS}{className}
2760
2761Used inside a class declaration to declare that the objects of this class should be dynamically
f6bcfd97 2762creatable from run-time type information.
a660d684
KB
2763
2764Example:
2765
2766\begin{verbatim}
2767class wxFrame: public wxWindow
2768{
2769 DECLARE_DYNAMIC_CLASS(wxFrame)
2770
2771 private:
2b5f62a0 2772 const wxString& frameTitle;
a660d684
KB
2773 public:
2774 ...
2775};
2776\end{verbatim}
2777
954b8ae6
JS
2778\wxheading{Include files}
2779
2780<wx/object.h>
2781
b0fc8832 2782\membersection{IMPLEMENT\_ABSTRACT\_CLASS}\label{implementabstractclass}
a660d684
KB
2783
2784\func{}{IMPLEMENT\_ABSTRACT\_CLASS}{className, baseClassName}
2785
2786Used in a C++ implementation file to complete the declaration of
2787a class that has run-time type information. The same as IMPLEMENT\_CLASS.
2788
2789Example:
2790
2791\begin{verbatim}
2792IMPLEMENT_ABSTRACT_CLASS(wxCommand, wxObject)
2793
2794wxCommand::wxCommand(void)
2795{
2796...
2797}
2798\end{verbatim}
2799
954b8ae6
JS
2800\wxheading{Include files}
2801
2802<wx/object.h>
2803
b0fc8832 2804\membersection{IMPLEMENT\_ABSTRACT\_CLASS2}\label{implementabstractclass2}
a660d684
KB
2805
2806\func{}{IMPLEMENT\_ABSTRACT\_CLASS2}{className, baseClassName1, baseClassName2}
2807
2808Used in a C++ implementation file to complete the declaration of
2809a class that has run-time type information and two base classes. The same as IMPLEMENT\_CLASS2.
2810
954b8ae6
JS
2811\wxheading{Include files}
2812
2813<wx/object.h>
2814
a660d684
KB
2815\membersection{IMPLEMENT\_APP}\label{implementapp}
2816
2817\func{}{IMPLEMENT\_APP}{className}
2818
2819This is used in the application class implementation file to make the application class known to
2820wxWindows for dynamic construction. You use this instead of
2821
2822Old form:
2823
2824\begin{verbatim}
2825 MyApp myApp;
2826\end{verbatim}
2827
2828New form:
2829
2830\begin{verbatim}
2831 IMPLEMENT_APP(MyApp)
2832\end{verbatim}
2833
2834See also \helpref{DECLARE\_APP}{declareapp}.
2835
954b8ae6
JS
2836\wxheading{Include files}
2837
2838<wx/app.h>
2839
b0fc8832 2840\membersection{IMPLEMENT\_CLASS}\label{implementclass}
a660d684
KB
2841
2842\func{}{IMPLEMENT\_CLASS}{className, baseClassName}
2843
2844Used in a C++ implementation file to complete the declaration of
2845a class that has run-time type information. The same as IMPLEMENT\_ABSTRACT\_CLASS.
2846
954b8ae6
JS
2847\wxheading{Include files}
2848
2849<wx/object.h>
2850
b0fc8832 2851\membersection{IMPLEMENT\_CLASS2}\label{implementclass2}
a660d684
KB
2852
2853\func{}{IMPLEMENT\_CLASS2}{className, baseClassName1, baseClassName2}
2854
2855Used in a C++ implementation file to complete the declaration of a
2856class that has run-time type information and two base classes. The
2857same as IMPLEMENT\_ABSTRACT\_CLASS2.
2858
954b8ae6
JS
2859\wxheading{Include files}
2860
2861<wx/object.h>
2862
b0fc8832 2863\membersection{IMPLEMENT\_DYNAMIC\_CLASS}\label{implementdynamicclass}
a660d684
KB
2864
2865\func{}{IMPLEMENT\_DYNAMIC\_CLASS}{className, baseClassName}
2866
2867Used in a C++ implementation file to complete the declaration of
2868a class that has run-time type information, and whose instances
2869can be created dynamically.
2870
2871Example:
2872
2873\begin{verbatim}
2874IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxWindow)
2875
2876wxFrame::wxFrame(void)
2877{
2878...
2879}
2880\end{verbatim}
2881
954b8ae6
JS
2882\wxheading{Include files}
2883
2884<wx/object.h>
2885
b0fc8832 2886\membersection{IMPLEMENT\_DYNAMIC\_CLASS2}\label{implementdynamicclass2}
a660d684
KB
2887
2888\func{}{IMPLEMENT\_DYNAMIC\_CLASS2}{className, baseClassName1, baseClassName2}
2889
2890Used in a C++ implementation file to complete the declaration of
2891a class that has run-time type information, and whose instances
2892can be created dynamically. Use this for classes derived from two
2893base classes.
2894
954b8ae6
JS
2895\wxheading{Include files}
2896
2897<wx/object.h>
2898
f6bcfd97
BP
2899\membersection{wxConstCast}\label{wxconstcast}
2900
f7637829 2901\func{classname *}{wxConstCast}{ptr, classname}
f6bcfd97
BP
2902
2903This macro expands into {\tt const\_cast<classname *>(ptr)} if the compiler
2904supports {\it const\_cast} or into an old, C-style cast, otherwise.
2905
2906\wxheading{See also}
2907
2908\helpref{wxDynamicCast}{wxdynamiccast}\\
2909\helpref{wxStaticCast}{wxstaticcast}
2910
b0fc8832
VZ
2911\membersection{::wxCreateDynamicObject}\label{wxcreatedynamicobject}
2912
2913\func{wxObject *}{wxCreateDynamicObject}{\param{const wxString\& }{className}}
2914
2915Creates and returns an object of the given class, if the class has been
2916registered with the dynamic class system using DECLARE... and IMPLEMENT... macros.
2917
34636400
VZ
2918\membersection{WXDEBUG\_NEW}\label{debugnew}
2919
2920\func{}{WXDEBUG\_NEW}{arg}
2921
2922This is defined in debug mode to be call the redefined new operator
2923with filename and line number arguments. The definition is:
2924
2925\begin{verbatim}
2926#define WXDEBUG_NEW new(__FILE__,__LINE__)
2927\end{verbatim}
2928
2929In non-debug mode, this is defined as the normal new operator.
2930
2931\wxheading{Include files}
2932
2933<wx/object.h>
2934
2935\membersection{wxDynamicCast}\label{wxdynamiccast}
2936
f7637829 2937\func{classname *}{wxDynamicCast}{ptr, classname}
34636400
VZ
2938
2939This macro returns the pointer {\it ptr} cast to the type {\it classname *} if
8a7f3379 2940the pointer is of this type (the check is done during the run-time) or
f7637829
VZ
2941{\tt NULL} otherwise. Usage of this macro is preferred over obsoleted
2942wxObject::IsKindOf() function.
34636400 2943
f7637829
VZ
2944The {\it ptr} argument may be {\tt NULL}, in which case {\tt NULL} will be
2945returned.
34636400
VZ
2946
2947Example:
2948
2949\begin{verbatim}
2950 wxWindow *win = wxWindow::FindFocus();
2951 wxTextCtrl *text = wxDynamicCast(win, wxTextCtrl);
2952 if ( text )
2953 {
2954 // a text control has the focus...
2955 }
2956 else
2957 {
f6bcfd97 2958 // no window has the focus or it is not a text control
34636400
VZ
2959 }
2960\end{verbatim}
2961
2962\wxheading{See also}
2963
f6bcfd97 2964\helpref{RTTI overview}{runtimeclassoverview}\\
f7637829 2965\helpref{wxDynamicCastThis}{wxdynamiccastthis}\\
f6bcfd97
BP
2966\helpref{wxConstCast}{wxconstcast}\\
2967\helpref{wxStatiicCast}{wxstaticcast}
34636400 2968
f7637829
VZ
2969\membersection{wxDynamicCastThis}\label{wxdynamiccastthis}
2970
2971\func{classname *}{wxDynamicCastThis}{classname}
2972
2973This macro is equivalent to {\tt wxDynamicCast(this, classname)} but the
2974latter provokes spurious compilation warnings from some compilers (because it
2975tests whether {\tt this} pointer is non {\tt NULL} which is always true), so
2976this macro should be used to avoid them.
2977
2978\wxheading{See also}
2979
2980\helpref{wxDynamicCast}{wxdynamiccast}
2981
f6bcfd97
BP
2982\membersection{wxStaticCast}\label{wxstaticcast}
2983
f7637829 2984\func{classname *}{wxStaticCast}{ptr, classname}
f6bcfd97
BP
2985
2986This macro checks that the cast is valid in debug mode (an assert failure will
2987result if {\tt wxDynamicCast(ptr, classname) == NULL}) and then returns the
2988result of executing an equivalent of {\tt static\_cast<classname *>(ptr)}.
2989
2990\helpref{wxDynamicCast}{wxdynamiccast}\\
2991\helpref{wxConstCast}{wxconstcast}
2992
6fb26ea3
JS
2993\section{Log functions}\label{logfunctions}
2994
2995These functions provide a variety of logging functions: see \helpref{Log classes overview}{wxlogoverview} for
f68586e5
VZ
2996further information. The functions use (implicitly) the currently active log
2997target, so their descriptions here may not apply if the log target is not the
2998standard one (installed by wxWindows in the beginning of the program).
6fb26ea3 2999
954b8ae6
JS
3000\wxheading{Include files}
3001
3002<wx/log.h>
3003
b0fc8832
VZ
3004\membersection{::wxDebugMsg}\label{wxdebugmsg}
3005
3006\func{void}{wxDebugMsg}{\param{const wxString\& }{fmt}, \param{...}{}}
3007
2bd25c5a
VZ
3008{\bf NB:} This function is now obsolete, replaced by \helpref{Log
3009functions}{logfunctions} and \helpref{wxLogDebug}{wxlogdebug} in particular.
b0fc8832
VZ
3010
3011Display a debugging message; under Windows, this will appear on the
3012debugger command window, and under Unix, it will be written to standard
3013error.
3014
3015The syntax is identical to {\bf printf}: pass a format string and a
3016variable list of arguments.
3017
3018{\bf Tip:} under Windows, if your application crashes before the
3019message appears in the debugging window, put a wxYield call after
3020each wxDebugMsg call. wxDebugMsg seems to be broken under WIN32s
3021(at least for Watcom C++): preformat your messages and use OutputDebugString
3022instead.
3023
b0fc8832
VZ
3024\wxheading{Include files}
3025
3026<wx/utils.h>
3027
3028\membersection{::wxError}\label{wxerror}
3029
3030\func{void}{wxError}{\param{const wxString\& }{msg}, \param{const wxString\& }{title = "wxWindows Internal Error"}}
3031
b829bf55 3032{\bf NB:} This function is now obsolete, please use \helpref{wxLogError}{wxlogerror}
b0fc8832
VZ
3033instead.
3034
3035Displays {\it msg} and continues. This writes to standard error under
3036Unix, and pops up a message box under Windows. Used for internal
3037wxWindows errors. See also \helpref{wxFatalError}{wxfatalerror}.
3038
3039\wxheading{Include files}
3040
3041<wx/utils.h>
3042
3043\membersection{::wxFatalError}\label{wxfatalerror}
3044
3045\func{void}{wxFatalError}{\param{const wxString\& }{msg}, \param{const wxString\& }{title = "wxWindows Fatal Error"}}
3046
b829bf55 3047{\bf NB:} This function is now obsolete, please use
b0fc8832
VZ
3048\helpref{wxLogFatalError}{wxlogfatalerror} instead.
3049
3050Displays {\it msg} and exits. This writes to standard error under Unix,
3051and pops up a message box under Windows. Used for fatal internal
3052wxWindows errors. See also \helpref{wxError}{wxerror}.
3053
3054\wxheading{Include files}
3055
3056<wx/utils.h>
3057
6fb26ea3
JS
3058\membersection{::wxLogError}\label{wxlogerror}
3059
7ac13b21 3060\func{void}{wxLogError}{\param{const char *}{formatString}, \param{...}{}}
6fb26ea3 3061
1d63fd6b
GD
3062\func{void}{wxVLogError}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
3063
ea44a631 3064The functions to use for error messages, i.e. the messages that must be shown
f68586e5
VZ
3065to the user. The default processing is to pop up a message box to inform the
3066user about it.
6fb26ea3
JS
3067
3068\membersection{::wxLogFatalError}\label{wxlogfatalerror}
3069
7ac13b21 3070\func{void}{wxLogFatalError}{\param{const char *}{formatString}, \param{...}{}}
6fb26ea3 3071
1d63fd6b
GD
3072\func{void}{wxVLogFatalError}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
3073
6fb26ea3
JS
3074Like \helpref{wxLogError}{wxlogerror}, but also
3075terminates the program with the exit code 3. Using {\it abort()} standard
3076function also terminates the program with this exit code.
3077
3078\membersection{::wxLogWarning}\label{wxlogwarning}
3079
7ac13b21 3080\func{void}{wxLogWarning}{\param{const char *}{formatString}, \param{...}{}}
6fb26ea3 3081
1d63fd6b
GD
3082\func{void}{wxVLogWarning}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
3083
f68586e5
VZ
3084For warnings - they are also normally shown to the user, but don't interrupt
3085the program work.
6fb26ea3
JS
3086
3087\membersection{::wxLogMessage}\label{wxlogmessage}
3088
7ac13b21 3089\func{void}{wxLogMessage}{\param{const char *}{formatString}, \param{...}{}}
6fb26ea3 3090
1d63fd6b
GD
3091\func{void}{wxVLogMessage}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
3092
ea44a631 3093For all normal, informational messages. They also appear in a message box by
f68586e5
VZ
3094default (but it can be changed). Notice that the standard behaviour is to not
3095show informational messages if there are any errors later - the logic being
3096that the later error messages make the informational messages preceding them
3097meaningless.
6fb26ea3
JS
3098
3099\membersection{::wxLogVerbose}\label{wxlogverbose}
3100
7ac13b21
GT
3101\func{void}{wxLogVerbose}{\param{const char *}{formatString}, \param{...}{}}
3102
1d63fd6b 3103\func{void}{wxVLogVerbose}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
6fb26ea3 3104
f6bcfd97 3105For verbose output. Normally, it is suppressed, but
6fb26ea3
JS
3106might be activated if the user wishes to know more details about the program
3107progress (another, but possibly confusing name for the same function is {\bf wxLogInfo}).
3108
3109\membersection{::wxLogStatus}\label{wxlogstatus}
3110
7ac13b21 3111\func{void}{wxLogStatus}{\param{wxFrame *}{frame}, \param{const char *}{formatString}, \param{...}{}}
f68586e5 3112
1d63fd6b 3113\func{void}{wxVLogStatus}{\param{wxFrame *}{frame}, \param{const char *}{formatString}, \param{va\_list }{argPtr}}
7ac13b21
GT
3114
3115\func{void}{wxLogStatus}{\param{const char *}{formatString}, \param{...}{}}
6fb26ea3 3116
1d63fd6b
GD
3117\func{void}{wxVLogStatus}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
3118
ea44a631 3119Messages logged by these functions will appear in the statusbar of the {\it
f68586e5 3120frame} or of the top level application window by default (i.e. when using
ea44a631 3121the second version of the functions).
f68586e5
VZ
3122
3123If the target frame doesn't have a statusbar, the message will be lost.
6fb26ea3
JS
3124
3125\membersection{::wxLogSysError}\label{wxlogsyserror}
3126
7ac13b21
GT
3127\func{void}{wxLogSysError}{\param{const char *}{formatString}, \param{...}{}}
3128
1d63fd6b 3129\func{void}{wxVLogSysError}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
6fb26ea3 3130
f68586e5
VZ
3131Mostly used by wxWindows itself, but might be handy for logging errors after
3132system call (API function) failure. It logs the specified message text as well
3133as the last system error code ({\it errno} or {\it ::GetLastError()} depending
3134on the platform) and the corresponding error message. The second form
f6bcfd97 3135of this function takes the error code explicitly as the first argument.
6fb26ea3 3136
6d516e09
VZ
3137\wxheading{See also}
3138
3139\helpref{wxSysErrorCode}{wxsyserrorcode},
3140\helpref{wxSysErrorMsg}{wxsyserrormsg}
3141
6fb26ea3
JS
3142\membersection{::wxLogDebug}\label{wxlogdebug}
3143
7ac13b21
GT
3144\func{void}{wxLogDebug}{\param{const char *}{formatString}, \param{...}{}}
3145
1d63fd6b 3146\func{void}{wxVLogDebug}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
6fb26ea3 3147
ea44a631
GD
3148The right functions for debug output. They only do something in debug
3149mode (when the preprocessor symbol \_\_WXDEBUG\_\_ is defined) and expand to
f68586e5 3150nothing in release mode (otherwise).
6fb26ea3
JS
3151
3152\membersection{::wxLogTrace}\label{wxlogtrace}
3153
7ac13b21 3154\func{void}{wxLogTrace}{\param{const char *}{formatString}, \param{...}{}}
1d63fd6b
GD
3155
3156\func{void}{wxVLogTrace}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
6fb26ea3 3157
f68586e5 3158\func{void}{wxLogTrace}{\param{const char *}{mask}, \param{const char *}{formatString}, \param{...}{}}
7ac13b21 3159
1d63fd6b 3160\func{void}{wxVLogTrace}{\param{const char *}{mask}, \param{const char *}{formatString}, \param{va\_list }{argPtr}}
f68586e5
VZ
3161
3162\func{void}{wxLogTrace}{\param{wxTraceMask}{ mask}, \param{const char *}{formatString}, \param{...}{}}
7ac13b21 3163
1d63fd6b 3164\func{void}{wxVLogTrace}{\param{wxTraceMask}{ mask}, \param{const char *}{formatString}, \param{va\_list }{argPtr}}
f68586e5
VZ
3165
3166As {\bf wxLogDebug}, trace functions only do something in debug build and
3167expand to nothing in the release one. The reason for making
3168it a separate function from it is that usually there are a lot of trace
3169messages, so it might make sense to separate them from other debug messages.
3170
3171The trace messages also usually can be separated into different categories and
ec5d7799 3172the second and third versions of this function only log the message if the
f68586e5
VZ
3173{\it mask} which it has is currently enabled in \helpref{wxLog}{wxlog}. This
3174allows to selectively trace only some operations and not others by changing
3175the value of the trace mask (possible during the run-time).
3176
3177For the second function (taking a string mask), the message is logged only if
ec5d7799 3178the mask has been previously enabled by the call to
f68586e5
VZ
3179\helpref{AddTraceMask}{wxlogaddtracemask}. The predefined string trace masks
3180used by wxWindows are:
3181
3182\begin{itemize}\itemsep=0pt
3183\item wxTRACE\_MemAlloc: trace memory allocation (new/delete)
3184\item wxTRACE\_Messages: trace window messages/X callbacks
3185\item wxTRACE\_ResAlloc: trace GDI resource allocation
3186\item wxTRACE\_RefCount: trace various ref counting operations
3187\item wxTRACE\_OleCalls: trace OLE method calls (Win32 only)
3188\end{itemize}
6fb26ea3 3189
f68586e5
VZ
3190The third version of the function only logs the message if all the bit
3191corresponding to the {\it mask} are set in the wxLog trace mask which can be
3192set by \helpref{SetTraceMask}{wxlogsettracemask}. This version is less
3193flexible than the previous one because it doesn't allow defining the user
3194trace masks easily - this is why it is deprecated in favour of using string
3195trace masks.
6fb26ea3
JS
3196
3197\begin{itemize}\itemsep=0pt
3198\item wxTraceMemAlloc: trace memory allocation (new/delete)
3199\item wxTraceMessages: trace window messages/X callbacks
3200\item wxTraceResAlloc: trace GDI resource allocation
3201\item wxTraceRefCount: trace various ref counting operations
f68586e5 3202\item wxTraceOleCalls: trace OLE method calls (Win32 only)
6fb26ea3
JS
3203\end{itemize}
3204
c11d62a6
VZ
3205\membersection{::wxSafeShowMessage}\label{wxsafeshowmessage}
3206
3207\func{void}{wxSafeShowMessage}{\param{const wxString\& }{title}, \param{const wxString\& }{text}}
3208
3209This function shows a message to the user in a safe way and should be safe to
3210call even before the application has been initialized or if it is currently in
3211some other strange state (for example, about to crash). Under Windows this
b829bf55 3212function shows a message box using a native dialog instead of
c11d62a6
VZ
3213\helpref{wxMessageBox}{wxmessagebox} (which might be unsafe to call), elsewhere
3214it simply prints the message to the standard output using the title as prefix.
3215
3216\wxheading{Parameters}
3217
3218\docparam{title}{The title of the message box shown to the user or the prefix
3219of the message string}
3220
3221\docparam{text}{The text to show to the user}
3222
3223\wxheading{See also}
3224
3225\helpref{wxLogFatalError}{wxlogfatalerror}
3226
3227\wxheading{Include files}
3228
3229<wx/log.h>
3230
6d516e09
VZ
3231\membersection{::wxSysErrorCode}\label{wxsyserrorcode}
3232
3233\func{unsigned long}{wxSysErrorCode}{\void}
3234
3235Returns the error code from the last system call. This function uses
3236{\tt errno} on Unix platforms and {\tt GetLastError} under Win32.
3237
3238\wxheading{See also}
3239
3240\helpref{wxSysErrorMsg}{wxsyserrormsg},
3241\helpref{wxLogSysError}{wxlogsyserror}
3242
3243\membersection{::wxSysErrorMsg}\label{wxsyserrormsg}
3244
3245\func{const wxChar *}{wxSysErrorMsg}{\param{unsigned long }{errCode = 0}}
3246
ec5d7799
RD
3247Returns the error message corresponding to the given system error code. If
3248{\it errCode} is $0$ (default), the last error code (as returned by
6d516e09
VZ
3249\helpref{wxSysErrorCode}{wxsyserrorcode}) is used.
3250
3251\wxheading{See also}
3252
3253\helpref{wxSysErrorCode}{wxsyserrorcode},
3254\helpref{wxLogSysError}{wxlogsyserror}
3255
b0fc8832
VZ
3256\membersection{WXTRACE}\label{trace}
3257
3258\wxheading{Include files}
3259
3260<wx/object.h>
3261
3262\func{}{WXTRACE}{formatString, ...}
3263
2bd25c5a
VZ
3264{\bf NB:} This macro is now obsolete, replaced by \helpref{Log functions}{logfunctions}.
3265
b0fc8832
VZ
3266Calls wxTrace with printf-style variable argument syntax. Output
3267is directed to the current output stream (see \helpref{wxDebugContext}{wxdebugcontextoverview}).
3268
b0fc8832
VZ
3269\wxheading{Include files}
3270
3271<wx/memory.h>
3272
3273\membersection{WXTRACELEVEL}\label{tracelevel}
3274
3275\func{}{WXTRACELEVEL}{level, formatString, ...}
3276
2bd25c5a
VZ
3277{\bf NB:} This function is now obsolete, replaced by \helpref{Log functions}{logfunctions}.
3278
b0fc8832
VZ
3279Calls wxTraceLevel with printf-style variable argument syntax. Output
3280is directed to the current output stream (see \helpref{wxDebugContext}{wxdebugcontextoverview}).
3281The first argument should be the level at which this information is appropriate.
3282It will only be output if the level returned by wxDebugContext::GetLevel is equal to or greater than
3283this value.
3284
b0fc8832
VZ
3285\wxheading{Include files}
3286
3287<wx/memory.h>
3288
3289\membersection{::wxTrace}\label{wxtrace}
3290
3291\func{void}{wxTrace}{\param{const wxString\& }{fmt}, \param{...}{}}
3292
2bd25c5a
VZ
3293{\bf NB:} This function is now obsolete, replaced by \helpref{Log functions}{logfunctions}.
3294
b0fc8832
VZ
3295Takes printf-style variable argument syntax. Output
3296is directed to the current output stream (see \helpref{wxDebugContext}{wxdebugcontextoverview}).
3297
b0fc8832
VZ
3298\wxheading{Include files}
3299
3300<wx/memory.h>
3301
3302\membersection{::wxTraceLevel}\label{wxtracelevel}
3303
3304\func{void}{wxTraceLevel}{\param{int}{ level}, \param{const wxString\& }{fmt}, \param{...}{}}
3305
2bd25c5a
VZ
3306{\bf NB:} This function is now obsolete, replaced by \helpref{Log functions}{logfunctions}.
3307
b0fc8832
VZ
3308Takes printf-style variable argument syntax. Output
3309is directed to the current output stream (see \helpref{wxDebugContext}{wxdebugcontextoverview}).
3310The first argument should be the level at which this information is appropriate.
3311It will only be output if the level returned by wxDebugContext::GetLevel is equal to or greater than
3312this value.
3313
b0fc8832
VZ
3314\wxheading{Include files}
3315
3316<wx/memory.h>
3317
f6bcfd97
BP
3318\section{Time functions}\label{timefunctions}
3319
3320The functions in this section deal with getting the current time and
3321starting/stopping the global timers. Please note that the timer functions are
ec5d7799 3322deprecated because they work with one global timer only and
f6bcfd97 3323\helpref{wxTimer}{wxtimer} and/or \helpref{wxStopWatch}{wxstopwatch} classes
ec5d7799
RD
3324should be used instead. For retrieving the current time, you may also use
3325\helpref{wxDateTime::Now}{wxdatetimenow} or
f6bcfd97
BP
3326\helpref{wxDateTime::UNow}{wxdatetimeunow} methods.
3327
3328\membersection{::wxGetElapsedTime}\label{wxgetelapsedtime}
3329
cc81d32f 3330\func{long}{wxGetElapsedTime}{\param{bool}{ resetTimer = true}}
f6bcfd97
BP
3331
3332Gets the time in milliseconds since the last \helpref{::wxStartTimer}{wxstarttimer}.
3333
cc81d32f 3334If {\it resetTimer} is true (the default), the timer is reset to zero
f6bcfd97
BP
3335by this call.
3336
3337See also \helpref{wxTimer}{wxtimer}.
3338
3339\wxheading{Include files}
3340
3341<wx/timer.h>
3342
3343\membersection{::wxGetLocalTime}\label{wxgetlocaltime}
3344
3345\func{long}{wxGetLocalTime}{\void}
3346
3347Returns the number of seconds since local time 00:00:00 Jan 1st 1970.
3348
3349\wxheading{See also}
3350
3351\helpref{wxDateTime::Now}{wxdatetimenow}
3352
3353\wxheading{Include files}
3354
3355<wx/timer.h>
3356
3357\membersection{::wxGetLocalTimeMillis}\label{wxgetlocaltimemillis}
3358
a9d171bd 3359\func{wxLongLong}{wxGetLocalTimeMillis}{\void}
f6bcfd97
BP
3360
3361Returns the number of milliseconds since local time 00:00:00 Jan 1st 1970.
3362
3363\wxheading{See also}
3364
3365\helpref{wxDateTime::Now}{wxdatetimenow},\\
a9d171bd 3366\helpref{wxLongLong}{wxlonglong}
f6bcfd97
BP
3367
3368\wxheading{Include files}
3369
3370<wx/timer.h>
3371
3372\membersection{::wxGetUTCTime}\label{wxgetutctime}
3373
3374\func{long}{wxGetUTCTime}{\void}
3375
3376Returns the number of seconds since GMT 00:00:00 Jan 1st 1970.
3377
3378\wxheading{See also}
3379
3380\helpref{wxDateTime::Now}{wxdatetimenow}
3381
3382\wxheading{Include files}
3383
3384<wx/timer.h>
3385
b0fc8832
VZ
3386\membersection{::wxNow}\label{wxnow}
3387
3388\func{wxString}{wxNow}{\void}
3389
3390Returns a string representing the current date and time.
3391
3392\wxheading{Include files}
3393
3394<wx/utils.h>
3395
3396\membersection{::wxSleep}\label{wxsleep}
3397
3398\func{void}{wxSleep}{\param{int}{ secs}}
3399
3400Sleeps for the specified number of seconds.
3401
3402\wxheading{Include files}
3403
3404<wx/utils.h>
3405
f6bcfd97
BP
3406\membersection{::wxStartTimer}\label{wxstarttimer}
3407
3408\func{void}{wxStartTimer}{\void}
3409
3410Starts a stopwatch; use \helpref{::wxGetElapsedTime}{wxgetelapsedtime} to get the elapsed time.
3411
3412See also \helpref{wxTimer}{wxtimer}.
3413
3414\wxheading{Include files}
3415
3416<wx/timer.h>
3417
b0fc8832
VZ
3418\membersection{::wxUsleep}\label{wxusleep}
3419
3420\func{void}{wxUsleep}{\param{unsigned long}{ milliseconds}}
3421
3422Sleeps for the specified number of milliseconds. Notice that usage of this
3423function is encouraged instead of calling usleep(3) directly because the
3424standard usleep() function is not MT safe.
3425
3426\wxheading{Include files}
3427
3428<wx/utils.h>
3429
6fb26ea3
JS
3430\section{Debugging macros and functions}\label{debugmacros}
3431
8f5d9104
VZ
3432Useful macros and functions for error checking and defensive programming.
3433wxWindows defines three families of the assert-like macros:
3434the wxASSERT and wxFAIL macros only do anything if \_\_WXDEBUG\_\_ is defined
3435(in other words, in the debug build) but disappear completely in the release
3436build. On the other hand, the wxCHECK macros stay event in release builds but a
3437check failure doesn't generate any user-visible effects then. Finally, the
3438compile time assertions don't happen during the run-time but result in the
3439compilation error messages if the condition they check fail.
6fb26ea3 3440
954b8ae6
JS
3441\wxheading{Include files}
3442
3443<wx/debug.h>
3444
6fb26ea3
JS
3445\membersection{::wxOnAssert}\label{wxonassert}
3446
aad65f13 3447\func{void}{wxOnAssert}{\param{const char *}{fileName}, \param{int}{ lineNumber}, \param{const char *}{cond}, \param{const char *}{msg = NULL}}
6fb26ea3 3448
8f5d9104
VZ
3449This function is called whenever one of debugging macros fails (i.e. condition
3450is false in an assertion). It is only defined in the debug mode, in release
3451builds the \helpref{wxCHECK}{wxcheck} failures don't result in anything.
3452
3453To override the default behaviour in the debug builds which is to show the user
3454a dialog asking whether he wants to abort the program, continue or continue
b829bf55 3455ignoring any subsequent assert failures, you may override
8f5d9104
VZ
3456\helpref{wxApp::OnAssert}{wxapponassert} which is called by this function if
3457the global application object exists.
6fb26ea3
JS
3458
3459\membersection{wxASSERT}\label{wxassert}
3460
3461\func{}{wxASSERT}{\param{}{condition}}
3462
cc81d32f 3463Assert macro. An error message will be generated if the condition is false in
b207457c
VZ
3464debug mode, but nothing will be done in the release build.
3465
3466Please note that the condition in wxASSERT() should have no side effects
3467because it will not be executed in release mode at all.
3468
8f5d9104
VZ
3469\wxheading{See also}
3470
3471\helpref{wxASSERT\_MSG}{wxassertmsg},\\
3472\helpref{wxCOMPILE\_TIME\_ASSERT}{wxcompiletimeassert}
3473
3474\membersection{wxASSERT\_MIN\_BITSIZE}\label{wxassertminbitsize}
3475
3476\func{}{wxASSERT\_MIN\_BITSIZE}{\param{}{type}, \param{}{size}}
3477
b829bf55 3478This macro results in a
9722642d 3479\helpref{compile time assertion failure}{wxcompiletimeassert} if the size
8f5d9104
VZ
3480of the given type {\it type} is less than {\it size} bits.
3481
3482You may use it like this, for example:
3483
3484\begin{verbatim}
3485 // we rely on the int being able to hold values up to 2^32
3486 wxASSERT_MIN_BITSIZE(int, 32);
3487
3488 // can't work with the platforms using UTF-8 for wchar_t
3489 wxASSERT_MIN_BITSIZE(wchar_t, 16);
3490\end{verbatim}
6fb26ea3
JS
3491
3492\membersection{wxASSERT\_MSG}\label{wxassertmsg}
3493
3494\func{}{wxASSERT\_MSG}{\param{}{condition}, \param{}{msg}}
3495
cc81d32f 3496Assert macro with message. An error message will be generated if the condition is false.
6fb26ea3 3497
8f5d9104
VZ
3498\wxheading{See also}
3499
3500\helpref{wxASSERT}{wxassert},\\
3501\helpref{wxCOMPILE\_TIME\_ASSERT}{wxcompiletimeassert}
3502
3503\membersection{wxCOMPILE\_TIME\_ASSERT}\label{wxcompiletimeassert}
3504
3505\func{}{wxCOMPILE\_TIME\_ASSERT}{\param{}{condition}, \param{}{msg}}
3506
3507Using {\tt wxCOMPILE\_TIME\_ASSERT} results in a compilation error if the
9722642d 3508specified {\it condition} is false. The compiler error message should include
8f5d9104
VZ
3509the {\it msg} identifier - please note that it must be a valid C++ identifier
3510and not a string unlike in the other cases.
3511
b829bf55 3512This macro is mostly useful for testing the expressions involving the
8f5d9104
VZ
3513{\tt sizeof} operator as they can't be tested by the preprocessor but it is
3514sometimes desirable to test them at the compile time.
3515
5b8643ea
VZ
3516Note that this macro internally declares a struct whose name it tries to make
3517unique by using the {\tt \_\_LINE\_\_} in it but it may still not work if you
3518use it on the same line in two different source files. In this case you may
b829bf55 3519either change the line in which either of them appears on or use the
5b8643ea
VZ
3520\helpref{wxCOMPILE\_TIME\_ASSERT2}{wxcompiletimeassert2} macro.
3521
8f5d9104
VZ
3522\wxheading{See also}
3523
3524\helpref{wxASSERT\_MSG}{wxassertmsg},\\
3525\helpref{wxASSERT\_MIN\_BITSIZE}{wxassertminbitsize}
b207457c 3526
5b8643ea
VZ
3527\membersection{wxCOMPILE\_TIME\_ASSERT2}\label{wxcompiletimeassert2}
3528
3529\func{}{wxCOMPILE\_TIME\_ASSERT}{\param{}{condition}, \param{}{msg}, \param{}{name}}
3530
b829bf55 3531This macro is identical to \helpref{wxCOMPILE\_TIME\_ASSERT2}{wxcompiletimeassert2}
5b8643ea
VZ
3532except that it allows you to specify a unique {\it name} for the struct
3533internally defined by this macro to avoid getting the compilation errors
3534described \helpref{above}{wxcompiletimeassert}.
3535
6fb26ea3
JS
3536\membersection{wxFAIL}\label{wxfail}
3537
b207457c 3538\func{}{wxFAIL}{\void}
6fb26ea3
JS
3539
3540Will always generate an assert error if this code is reached (in debug mode).
3541
b207457c
VZ
3542See also: \helpref{wxFAIL\_MSG}{wxfailmsg}
3543
6fb26ea3
JS
3544\membersection{wxFAIL\_MSG}\label{wxfailmsg}
3545
b207457c 3546\func{}{wxFAIL\_MSG}{\param{}{msg}}
6fb26ea3
JS
3547
3548Will always generate an assert error with specified message if this code is reached (in debug mode).
3549
b207457c
VZ
3550This macro is useful for marking unreachable" code areas, for example
3551it may be used in the "default:" branch of a switch statement if all possible
3552cases are processed above.
3553
8f5d9104
VZ
3554\wxheading{See also}
3555
3556\helpref{wxFAIL}{wxfail}
b207457c 3557
6fb26ea3
JS
3558\membersection{wxCHECK}\label{wxcheck}
3559
3560\func{}{wxCHECK}{\param{}{condition}, \param{}{retValue}}
3561
3562Checks that the condition is true, returns with the given return value if not (FAILs in debug mode).
3563This check is done even in release mode.
3564
3565\membersection{wxCHECK\_MSG}\label{wxcheckmsg}
3566
3567\func{}{wxCHECK\_MSG}{\param{}{condition}, \param{}{retValue}, \param{}{msg}}
3568
3569Checks that the condition is true, returns with the given return value if not (FAILs in debug mode).
3570This check is done even in release mode.
3571
ec5d7799 3572This macro may be only used in non void functions, see also
b207457c
VZ
3573\helpref{wxCHECK\_RET}{wxcheckret}.
3574
3575\membersection{wxCHECK\_RET}\label{wxcheckret}
3576
3577\func{}{wxCHECK\_RET}{\param{}{condition}, \param{}{msg}}
3578
3579Checks that the condition is true, and returns if not (FAILs with given error
3580message in debug mode). This check is done even in release mode.
3581
ec5d7799 3582This macro should be used in void functions instead of
b207457c
VZ
3583\helpref{wxCHECK\_MSG}{wxcheckmsg}.
3584
3585\membersection{wxCHECK2}\label{wxcheck2}
3586
3587\func{}{wxCHECK2}{\param{}{condition}, \param{}{operation}}
3588
ec5d7799
RD
3589Checks that the condition is true and \helpref{wxFAIL}{wxfail} and execute
3590{\it operation} if it is not. This is a generalisation of
b207457c
VZ
3591\helpref{wxCHECK}{wxcheck} and may be used when something else than just
3592returning from the function must be done when the {\it condition} is false.
3593
3594This check is done even in release mode.
3595
3596\membersection{wxCHECK2\_MSG}\label{wxcheck2msg}
3597
3598\func{}{wxCHECK2}{\param{}{condition}, \param{}{operation}, \param{}{msg}}
3599
ec5d7799 3600This is the same as \helpref{wxCHECK2}{wxcheck2}, but
b207457c
VZ
3601\helpref{wxFAIL\_MSG}{wxfailmsg} with the specified {\it msg} is called
3602instead of wxFAIL() if the {\it condition} is false.
3603
b0fc8832
VZ
3604\membersection{::wxTrap}\label{wxtrap}
3605
3606\func{void}{wxTrap}{\void}
3607
3608In debug mode (when {\tt \_\_WXDEBUG\_\_} is defined) this function generates a
3609debugger exception meaning that the control is passed to the debugger if one is
3610attached to the process. Otherwise the program just terminates abnormally.
3611
3612In release mode this function does nothing.
3613
3614\wxheading{Include files}
3615
3616<wx/debug.h>
3617
5807634c
VZ
3618\section{Environment access functions}\label{environfunctions}
3619
3620The functions in this section allow to access (get) or change value of
3621environment variables in a portable way. They are currently implemented under
3622Win32 and POSIX-like systems (Unix).
3623
3624% TODO add some stuff about env var inheriting but not propagating upwards (VZ)
3625
3626\wxheading{Include files}
3627
3628<wx/utils.h>
3629
308978f6 3630\membersection{wxGetenv}\label{wxgetenvmacro}
5807634c
VZ
3631
3632\func{wxChar *}{wxGetEnv}{\param{const wxString\&}{ var}}
3633
308978f6
VZ
3634This is a macro defined as {\tt getenv()} or its wide char version in Unicode
3635mode.
3636
3637Note that under Win32 it may not return correct value for the variables set
3638with \helpref{wxSetEnv}{wxsetenv}, use \helpref{wxGetEnv}{wxgetenv} function
3639instead.
3640
3641\membersection{wxGetEnv}\label{wxgetenv}
3642
3643\func{bool}{wxGetEnv}{\param{const wxString\&}{ var}, \param{wxString *}{value}}
3644
3645Returns the current value of the environment variable {\it var} in {\it value}.
3646{\it value} may be {\tt NULL} if you just want to know if the variable exists
3647and are not interested in its value.
3648
cc81d32f 3649Returns {\tt true} if the variable exists, {\tt false} otherwise.
5807634c
VZ
3650
3651\membersection{wxSetEnv}\label{wxsetenv}
3652
3653\func{bool}{wxSetEnv}{\param{const wxString\&}{ var}, \param{const wxChar *}{value}}
3654
3655Sets the value of the environment variable {\it var} (adding it if necessary)
3656to {\it value}.
3657
cc81d32f 3658Returns {\tt true} on success.
5807634c
VZ
3659
3660\membersection{wxUnsetEnv}\label{wxunsetenv}
3661
3662\func{bool}{wxUnsetEnv}{\param{const wxString\&}{ var}}
3663
ec5d7799 3664Removes the variable {\it var} from the environment.
5df6ed1c 3665\helpref{wxGetEnv}{wxgetenv} will return {\tt NULL} after the call to this
5807634c
VZ
3666function.
3667
cc81d32f 3668Returns {\tt true} on success.
5807634c 3669