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