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