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