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