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