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