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