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