\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
\setfooter{\thepage}{}{}{}{}{\thepage}
-The functions and macros defined in wxWindows are described here: you can
+The functions and macros defined in wxWidgets are described here: you can
either look up a function using the alphabetical listing of them or find it in
the corresponding topic.
-
-
\section{Alphabetical functions and macros list}
\helpref{CLASSINFO}{classinfo}\\
\helpref{wxNow}{wxnow}\\
\helpref{wxOnAssert}{wxonassert}\\
\helpref{wxOpenClipboard}{wxopenclipboard}\\
+\helpref{wxParseWildcard}{wxparsewildcard}\\
\helpref{wxPathOnly}{wxpathonly}\\
\helpref{wxPostDelete}{wxpostdelete}\\
\helpref{wxPostEvent}{wxpostevent}\\
\helpref{wxSysErrorCode}{wxsyserrorcode}\\
\helpref{wxSysErrorMsg}{wxsyserrormsg}\\
\helpref{wxT}{wxt}\\
-\helpref{wxToLower}{wxtolower}\\
-\helpref{wxToUpper}{wxtoupper}\\
\helpref{wxTraceLevel}{wxtracelevel}\\
\helpref{wxTrace}{wxtrace}\\
\helpref{wxTransferFileToStream}{wxtransferfiletostream}\\
\helpref{wxWakeUpIdle}{wxwakeupidle}\\
\helpref{wxWriteResource}{wxwriteresource}\\
\helpref{wxYield}{wxyield}\\
+\helpref{wx\_const\_cast}{wxconstcastraw}\\
+\helpref{wx\_static\_cast}{wxstaticcastraw}\\
\helpref{\_}{underscore}\\
\helpref{\_T}{underscoret}
\section{Version macros}\label{versionfunctions}
-The following constants are defined in wxWindows:
+The following constants are defined in wxWidgets:
\begin{itemize}\itemsep=0pt
-\item {\tt wxMAJOR\_VERSION} is the major version of wxWindows
-\item {\tt wxMINOR\_VERSION} is the minor version of wxWindows
+\item {\tt wxMAJOR\_VERSION} is the major version of wxWidgets
+\item {\tt wxMINOR\_VERSION} is the minor version of wxWidgets
\item {\tt wxRELEASE\_NUMBER} is the release number
\end{itemize}
-For example, the values or these constants for wxWindows 2.1.15 are 2, 1 and
+For example, the values or these constants for wxWidgets 2.1.15 are 2, 1 and
15.
Additionally, {\tt wxVERSION\_STRING} is a user-readable string containing
-the full wxWindows version and {\tt wxVERSION\_NUMBER} is a combination of the
+the full wxWidgets version and {\tt wxVERSION\_NUMBER} is a combination of the
three version numbers above: for 2.1.15, it is 2115 and it is 2200 for
-wxWindows 2.2.
+wxWidgets 2.2.
\wxheading{Include files}
\func{bool}{wxCHECK\_VERSION}{\param{}{major, minor, release}}
-This is a macro which evaluates to true if the current wxWindows version is at
+This is a macro which evaluates to true if the current wxWidgets version is at
least major.minor.release.
-For example, to test if the program is compiled with wxWindows 2.2 or higher,
+For example, to test if the program is compiled with wxWidgets 2.2 or higher,
the following can be done:
\begin{verbatim}
\membersection{::wxEntry}\label{wxentry}
-This initializes wxWindows in a platform-dependent way. Use this if you
-are not using the default wxWindows entry code (e.g. main or WinMain). For example,
-you can initialize wxWindows from an Microsoft Foundation Classes application using
+This initializes wxWidgets in a platform-dependent way. Use this if you
+are not using the default wxWidgets entry code (e.g. main or WinMain). For example,
+you can initialize wxWidgets from an Microsoft Foundation Classes application using
this function.
\func{void}{wxEntry}{\param{HANDLE}{ hInstance}, \param{HANDLE}{ hPrevInstance},
\param{const wxString\& }{commandLine}, \param{int}{ cmdShow}, \param{bool}{ enterLoop = true}}
-wxWindows initialization under Windows (non-DLL). If {\it enterLoop} is false, the
-function will return immediately after calling wxApp::OnInit. Otherwise, the wxWindows
+wxWidgets initialization under Windows (non-DLL). If {\it enterLoop} is false, the
+function will return immediately after calling wxApp::OnInit. Otherwise, the wxWidgets
message loop will be entered.
\func{void}{wxEntry}{\param{HANDLE}{ hInstance}, \param{HANDLE}{ hPrevInstance},
\param{WORD}{ wDataSegment}, \param{WORD}{ wHeapSize}, \param{const wxString\& }{ commandLine}}
-wxWindows initialization under Windows (for applications constructed as a DLL).
+wxWidgets initialization under Windows (for applications constructed as a DLL).
\func{int}{wxEntry}{\param{int}{ argc}, \param{const wxString\& *}{argv}}
-wxWindows initialization under Unix.
+wxWidgets initialization under Unix.
\wxheading{Remarks}
-To clean up wxWindows, call wxApp::OnExit followed by the static function
-wxApp::CleanUp. For example, if exiting from an MFC application that also uses wxWindows:
+To clean up wxWidgets, call wxApp::OnExit followed by the static function
+wxApp::CleanUp. For example, if exiting from an MFC application that also uses wxWidgets:
\begin{verbatim}
int CTheApp::ExitInstance()
\func{wxAppDerivedClass\&}{wxGetApp}{\void}
-This function doesn't exist in wxWindows but it is created by using
+This function doesn't exist in wxWidgets but it is created by using
the \helpref{IMPLEMENT\_APP}{implementapp} macro. Thus, before using it
anywhere but in the same module where this macro is used, you must make it
available using \helpref{DECLARE\_APP}{declareapp}.
This function is used in wxBase only and only if you don't create
\helpref{wxApp}{wxapp} object at all. In this case you must call it from your
-{\tt main()} function before calling any other wxWindows functions.
+{\tt main()} function before calling any other wxWidgets functions.
If the function returns {\tt false} the initialization could not be performed,
in this case the library cannot be used and
array, any additional ones are the command parameters and the array must be
terminated with a NULL pointer.}
-\docparam{flags}{Combination of bit masks {\tt wxEXEC\_ASYNC},
+\docparam{flags}{Combination of bit masks {\tt wxEXEC\_ASYNC},\rtfsp
{\tt wxEXEC\_SYNC} and {\tt wxEXEC\_NOHIDE}}
\docparam{callback}{An optional pointer to \helpref{wxProcess}{wxprocess}}
\end{verbatim}
{\tt wxSIGNONE}, {\tt wxSIGKILL} and {\tt wxSIGTERM} have the same meaning
-under both Unix and Windows but all the other signals are equivalent to
+under both Unix and Windows but all the other signals are equivalent to
{\tt wxSIGTERM} under Windows.
Returns 0 on success, -1 on failure. If {\it rc} parameter is not NULL, it will
\func{}{wxENTER\_CRIT\_SECT}{\param{wxCriticalSection\& }{cs}}
-This macro is equivalent to \helpref{cs.Enter()}{wxcriticalsectionenter} if
+This macro is equivalent to \helpref{cs.Enter()}{wxcriticalsectionenter} if
{\tt wxUSE\_THREADS} is $1$ and does nothing if it is $0$.
\func{}{wxLEAVE\_CRIT\_SECT}{\param{wxCriticalSection\& }{cs}}
-This macro is equivalent to \helpref{cs.Leave()}{wxcriticalsectionleave} if
+This macro is equivalent to \helpref{cs.Leave()}{wxcriticalsectionleave} if
{\tt wxUSE\_THREADS} is $1$ and does nothing if it is $0$.
\func{bool}{wxFileExists}{\param{const wxString\& }{filename}}
-Returns true if the file exists. It also returns true if the file is
-a directory.
+Returns true if the file exists and is a plain file.
\membersection{::wxFileModificationTime}\label{wxfilemodificationtime}
\wxheading{Portability}
-This function is implemented for Win16 (only for drives less than 2Gb), Win32,
+This function is implemented for Win32,
Mac OS and generic Unix provided the system has {\tt statfs()} function.
-This function first appeared in wxWindows 2.3.2.
+This function first appeared in wxWidgets 2.3.2.
\membersection{::wxGetOSDirectory}\label{wxgetosdirectory}
supported (Unix) and doesn't have effect for the other ones.
+\membersection{::wxParseWildcard}\label{wxparsewildcard}
+
+\func{int}{wxParseWildcard}{\param{const wxString\& }{wildCard}, \param{wxArrayString\& }{descriptions}, \param{wxArrayString\& }{filters}}
+
+Parses the wildCard, returning the number of filters.
+Returns 0 if none or if there's a problem,
+The arrays will contain an equal number of items found before the error.
+{\it wildCard} is in the form:
+\begin{verbatim}
+ "All files (*)|*|Image Files (*.jpeg *.png)|*.jpg;*.png"
+\end{verbatim}
+
\membersection{::wxRemoveFile}\label{wxremovefile}
\func{bool}{wxRemoveFile}{\param{const wxString\& }{file}}
Under Windows or NT, this function first looks in the environment
variable SYSTEM\_NAME; if this is not found, the entry {\bf HostName}\rtfsp
-in the {\bf wxWindows} section of the WIN.INI file is tried.
+in the {\bf wxWidgets} section of the WIN.INI file is tried.
The first variant of this function returns the hostname if successful or an
empty string otherwise. The second (deprecated) function returns true
Under Windows or NT, this function first looks in the environment
variables USER and LOGNAME; if neither of these is found, the entry {\bf UserId}\rtfsp
-in the {\bf wxWindows} section of the WIN.INI file is tried.
+in the {\bf wxWidgets} section of the WIN.INI file is tried.
The first variant of this function returns the login name if successful or an
empty string otherwise. The second (deprecated) function returns true
This function returns the full user name (something like "Mr. John Smith").
Under Windows or NT, this function looks for the entry {\bf UserName}\rtfsp
-in the {\bf wxWindows} section of the WIN.INI file. If PenWindows
+in the {\bf wxWidgets} section of the WIN.INI file. If PenWindows
is running, the entry {\bf Current} in the section {\bf User} of
the PENWIN.INI file is used.
This macro expands into a call to plural form version of
\helpref{wxGetTranslation}{wxgettranslation}
-function, so it marks the message for the extraction by {\tt xgettext} just as
+function, so it marks the message for the extraction by {\tt xgettext} just as
\helpref{wxTRANSLATE}{wxtranslate} does, but also returns the translation of
the string for the current locale during execution, either singular or plural
form depending on the value of \arg{n}.
\func{const wxChar *}{wxTRANSLATE}{\param{const char *}{s}}
This macro doesn't do anything in the program code -- it simply expands to the
-value of its argument (expand in Unicode build where it is equivalent to
+value of its argument (except in Unicode build where it is equivalent to
\helpref{wxT}{wxt} which makes it unnecessary to use both wxTRANSLATE and wxT
with the same string which would be really unreadable).
However it does have a purpose and it is to mark the literal strings for the
extraction into the message catalog created by {\tt xgettext} program. Usually
this is achieved using \helpref{\_()}{underscore} but that macro not only marks
-the string for extraction but also expands into
+the string for extraction but also expands into a
\helpref{wxGetTranslation}{wxgettranslation} function call which means that it
-cannot be used in some situations, notably for the static arrays
+cannot be used in some situations, notably for static array
initialization.
Here is an example which should make it more clear: suppose that you have a
static array of strings containing the weekday names and which have to be
-translated (note that it is a bad example, really, as
+translated (note that it is a bad example, really, as
\helpref{wxDateTime}{wxdatetime} already can be used to get the localized week
day names already). If you write
+
\begin{verbatim}
static const wxChar * const weekdays[] = { _("Mon"), ..., _("Sun") };
...
// use weekdays[n] as usual
\end{verbatim}
+
the code wouldn't compile because the function calls are forbidden in the array
initializer. So instead you should do
+
\begin{verbatim}
static const wxChar * const weekdays[] = { wxTRANSLATE("Mon"), ..., wxTRANSLATE("Sun") };
...
// use wxGetTranslation(weekdays[n])
\end{verbatim}
+
here.
Note that although the code {\bf would} compile if you simply omit
no translations for the weekday names in the program message catalog and
wxGetTranslation wouldn't find them.
-
-
-\membersection{::wxToLower}\label{wxtolower}
-
-\func{char}{wxToLower}{\param{char }{ch}}
-
-Converts the character to lower case. This is implemented as a macro for efficiency.
-
-\wxheading{Include files}
-
-<wx/utils.h>
-
-
-\membersection{::wxToUpper}\label{wxtoupper}
-
-\func{char}{wxToUpper}{\param{char }{ch}}
-
-Converts the character to upper case. This is implemented as a macro for efficiency.
-
-\wxheading{Include files}
-
-<wx/utils.h>
-
-
\membersection{::wxVsnprintf}\label{wxvsnprintf}
\func{int}{wxVsnprintf}{\param{wxChar *}{buf}, \param{size\_t }{len}, \param{const wxChar *}{format}, \param{va\_list }{argPtr}}
\func{const wxChar *}{\_T}{\param{const wxChar }{ch}}
This macro is exactly the same as \helpref{wxT}{wxt} and is defined in
-wxWindows simply because it may be more intuitive for Windows programmers as
+wxWidgets simply because it may be more intuitive for Windows programmers as
the standard Win32 headers also define it (as well as yet another name for the
same macro which is {\tt \_TEXT()}).
no default filename will be supplied. The wildcard determines what files
are displayed in the file selector, and file extension supplies a type
extension for the required filename. Flags may be a combination of wxOPEN,
-wxSAVE, wxOVERWRITE\_PROMPT, wxHIDE\_READONLY, wxFILE\_MUST\_EXIST, wxMULTIPLE or 0.
+wxSAVE, wxOVERWRITE\_PROMPT, wxFILE\_MUST\_EXIST, wxMULTIPLE or 0.
Both the Unix and Windows versions implement a wildcard filter. Typing a
filename containing wildcards (*, ?) in the filename text item, and
\wxheading{Include files}
-<wx/textdlg.h>
+<wx/numdlg.h>
\membersection{::wxGetPasswordFromUser}\label{wxgetpasswordfromuser}
SetWindowExt(dc, maxX - minX, maxY - minY);
\end{verbatim}
-This simulates the wxMM\_TEXT mapping mode, which wxWindows assumes.
+This simulates the wxMM\_TEXT mapping mode, which wxWidgets assumes.
Placeable metafiles may be imported by many Windows applications, and can be
used in RTF (Rich Text Format) files.
\func{void}{wxDDECleanUp}{\void}
-Called when wxWindows exits, to clean up the DDE system. This no longer needs to be
+Called when wxWidgets exits, to clean up the DDE system. This no longer needs to be
called by the application.
See also \helpref{wxDDEInitialize}{wxddeinitialize}.
Initializes the DDE system. May be called multiple times without harm.
This no longer needs to be called by the application: it will be called
-by wxWindows if necessary.
+by wxWidgets if necessary.
-See also \helpref{wxDDEServer}{wxddeserver}, \helpref{wxDDEClient}{wxddeclient}, \helpref{wxDDEConnection}{wxddeconnection},
+See also \helpref{wxDDEServer}{wxddeserver}, \helpref{wxDDEClient}{wxddeclient}, \helpref{wxDDEConnection}{wxddeconnection},\rtfsp
\helpref{wxDDECleanUp}{wxddecleanup}.
\wxheading{Include files}
\section{RTTI functions}\label{rttimacros}
-wxWindows uses its own RTTI ("run-time type identification") system which
+wxWidgets uses its own RTTI ("run-time type identification") system which
predates the current standard C++ RTTI and so is kept for backwards
compatibility reasons but also because it allows some things which the
standard RTTI doesn't directly support (such as creating a class from its
The standard C++ RTTI can be used in the user code without any problems and in
general you shouldn't need to use the functions and the macros in this section
-unless you are thinking of modifying or adding any wxWindows classes.
+unless you are thinking of modifying or adding any wxWidgets classes.
\wxheading{See also}
\func{}{IMPLEMENT\_APP}{className}
This is used in the application class implementation file to make the application class known to
-wxWindows for dynamic construction. You use this instead of
+wxWidgets for dynamic construction. You use this instead of
Old form:
\wxheading{See also}
+\helpref{wx\_const\_cast}{wxconstcastraw}\\
\helpref{wxDynamicCast}{wxdynamiccast}\\
\helpref{wxStaticCast}{wxstaticcast}
result if {\tt wxDynamicCast(ptr, classname) == NULL}) and then returns the
result of executing an equivalent of {\tt static\_cast<classname *>(ptr)}.
+\wxheading{See also}
+
+\helpref{wx\_static\_cast}{wxstaticcastraw}\\
\helpref{wxDynamicCast}{wxdynamiccast}\\
\helpref{wxConstCast}{wxconstcast}
+\membersection{wx\_const\_cast}\label{wxconstcastraw}
+
+\func{T}{wx\_const\_cast}{T, x}
+
+Same as \texttt{const\_cast<T>(x)} if the compiler supports const cast or
+\texttt{(T)x} for old compilers. Unlike \helpref{wxConstCast}{wxconstcast},
+the cast it to the type \arg{T} and not to \texttt{T *} and also the order of
+arguments is the same as for the standard cast.
+
+\wxheading{See also}
+
+\helpref{wx\_static\_cast}{wxstaticcastraw}\\
+
+
+\membersection{wx\_static\_cast}\label{wxstaticcastraw}
+
+\func{T}{wx\_static\_cast}{T, x}
+
+Same as \texttt{static\_cast<T>(x)} if the compiler supports static cast or
+\texttt{(T)x} for old compilers. Unlike \helpref{wxStaticCast}{wxstaticcast},
+there are no checks being done and the meaning of the macro arguments is exactly
+the same as for the standard static cast, i.e. \arg{T} is the full type name and
+star is not appended to it.
+
+\wxheading{See also}
+
+\helpref{wx\_const\_cast}{wxconstcastraw}\\
+
+
\section{Log functions}\label{logfunctions}
These functions provide a variety of logging functions: see \helpref{Log classes overview}{wxlogoverview} for
further information. The functions use (implicitly) the currently active log
target, so their descriptions here may not apply if the log target is not the
-standard one (installed by wxWindows in the beginning of the program).
+standard one (installed by wxWidgets in the beginning of the program).
\wxheading{Include files}
\membersection{::wxError}\label{wxerror}
-\func{void}{wxError}{\param{const wxString\& }{msg}, \param{const wxString\& }{title = "wxWindows Internal Error"}}
+\func{void}{wxError}{\param{const wxString\& }{msg}, \param{const wxString\& }{title = "wxWidgets Internal Error"}}
{\bf NB:} This function is now obsolete, please use \helpref{wxLogError}{wxlogerror}
instead.
Displays {\it msg} and continues. This writes to standard error under
Unix, and pops up a message box under Windows. Used for internal
-wxWindows errors. See also \helpref{wxFatalError}{wxfatalerror}.
+wxWidgets errors. See also \helpref{wxFatalError}{wxfatalerror}.
\wxheading{Include files}
\membersection{::wxFatalError}\label{wxfatalerror}
-\func{void}{wxFatalError}{\param{const wxString\& }{msg}, \param{const wxString\& }{title = "wxWindows Fatal Error"}}
+\func{void}{wxFatalError}{\param{const wxString\& }{msg}, \param{const wxString\& }{title = "wxWidgets Fatal Error"}}
{\bf NB:} This function is now obsolete, please use
\helpref{wxLogFatalError}{wxlogfatalerror} instead.
Displays {\it msg} and exits. This writes to standard error under Unix,
and pops up a message box under Windows. Used for fatal internal
-wxWindows errors. See also \helpref{wxError}{wxerror}.
+wxWidgets errors. See also \helpref{wxError}{wxerror}.
\wxheading{Include files}
\func{void}{wxVLogSysError}{\param{const char *}{formatString}, \param{va\_list }{argPtr}}
-Mostly used by wxWindows itself, but might be handy for logging errors after
+Mostly used by wxWidgets itself, but might be handy for logging errors after
system call (API function) failure. It logs the specified message text as well
as the last system error code ({\it errno} or {\it ::GetLastError()} depending
on the platform) and the corresponding error message. The second form
For the second function (taking a string mask), the message is logged only if
the mask has been previously enabled by the call to
-\helpref{AddTraceMask}{wxlogaddtracemask}. The predefined string trace masks
-used by wxWindows are:
+\helpref{AddTraceMask}{wxlogaddtracemask} or by setting
+\helpref{{\tt WXTRACE} environment variable}{envvars}.
+The predefined string trace masks
+used by wxWidgets are:
\begin{itemize}\itemsep=0pt
\item wxTRACE\_MemAlloc: trace memory allocation (new/delete)
\section{Debugging macros and functions}\label{debugmacros}
Useful macros and functions for error checking and defensive programming.
-wxWindows defines three families of the assert-like macros:
+wxWidgets defines three families of the assert-like macros:
the wxASSERT and wxFAIL macros only do anything if \_\_WXDEBUG\_\_ is defined
(in other words, in the debug build) but disappear completely in the release
build. On the other hand, the wxCHECK macros stay event in release builds but a
either change the line in which either of them appears on or use the
\helpref{wxCOMPILE\_TIME\_ASSERT2}{wxcompiletimeassert2} macro.
+Also note that Microsoft Visual C++ has a bug which results in compiler errors
+if you use this macro with ``Program Database For Edit And Continue''
+(\texttt{/ZI}) option, so you shouldn't use it (``Program Database''
+(\texttt{/Zi}) is ok though) for the code making use of this macro.
+
\wxheading{See also}
\helpref{wxASSERT\_MSG}{wxassertmsg},\\