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