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