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