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