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