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