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