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