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