]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/latex/wx/body.tex
Applied patch [ 827011 ] Event-based processing of item tooltips in wxTreeCtrl
[wxWidgets.git] / docs / latex / wx / body.tex
index 64cc7b1230d8b105752ad409006ac7d31911c2b7..17111a9446b0565c9b0ddfff1ba263410a65b9db 100644 (file)
@@ -145,7 +145,7 @@ To make use of wxWindows, you currently need one of the following setups.
 \item A 486 or higher PC running MS Windows.
 \item A Windows compiler: most are supported, but please see {\tt install.txt} for
 details. Supported compilers include Microsoft Visual C++ 4.0 or higher, Borland C++, Cygwin,
-Metrowerks CodeWarrior.
+MinGW, Metrowerks CodeWarrior.
 \item At least 60 MB of disk space.
 \end{enumerate}
 
@@ -153,7 +153,8 @@ Metrowerks CodeWarrior.
 
 \begin{enumerate}\itemsep=0pt
 \item Almost any C++ compiler, including GNU C++ (EGCS 1.1.1 or above).
-\item Almost any Unix workstation, and one of: GTK+ 1.2, Motif 1.2 or higher, Lesstif.
+\item Almost any Unix workstation, and one of: GTK+ 1.2, GTK+ 2.0, Motif 1.2 or higher, Lesstif.
+If using the wxX11 port, no such widget set is required.
 \item At least 60 MB of disk space.
 \end{enumerate}
 
@@ -169,14 +170,14 @@ Metrowerks CodeWarrior.
 \section{Availability and location of wxWindows}
 
 \winhelponly{wxWindows is available by anonymous FTP and World Wide Web
-from ftp://www.remstar.com/pub/wxwin and/or http://www.wxwindows.org.}
+from ftp://biolpc22.york.ac.uk/pub and/or http://www.wxwindows.org.}
 \winhelpignore{wxWindows is available by anonymous FTP and World Wide Web
-from \urlref{ftp://www.remstar.com/pub/wxwin}{ftp://www.remstar.com/pub/wxwin
+from \urlref{ftp://biolpc22.york.ac.uk/pub}{ftp://biolpc22.york.ac.uk/pub
 and/or \urlref{http://www.wxwindows.org}{http://www.wxwindows.org}.}
 
 You can also buy a CD-ROM using the form on the Web site.
 
-\section{Acknowledgments}
+\section{Acknowledgements}
 
 Thanks are due to AIAI for being willing to release the original version of
 wxWindows into the public domain, and to our patient partners.
@@ -260,54 +261,56 @@ multi-megabyte .pch files.
 
 \section{Libraries}
 
-The GTK and Motif ports of wxWindow can create either a static library or a shared
-library on most Unix or Unix-like systems. The static library is called libwx\_gtk.a
-and libwx\_motif.a whereas the name of the shared library is dependent on the
-system it is created on and the version you are using. The library name for the
-GTK version of wxWindows 2.2 on Linux and Solaris will be libwx\_gtk-2.2.so.0.0.0,
-on HP-UX, it will be libwx\_gtk-2.2.sl, on AIX just libwx\_gtk.a etc.
-
-Under Windows, use the library wx.lib (release) or wxd.lib (debug) for stand-alone Windows
-applications, or wxdll.lib (wxdlld.lib) for creating DLLs.
+Most ports of wxWindows can create either a static library or a shared
+library. wxWindows can also be built in multilib and monolithic variants.
+See the \helpref{libraries list}{librarieslist} for more
+information on these.
 
 \section{Configuration}
 
-Options are configurable in the file
+When using project files and makefiles directly to build wxWindows,
+options are configurable in the file
 \rtfsp{\tt "wx/XXX/setup.h"} where XXX is the required platform (such as msw, motif, gtk, mac). Some 
 settings are a matter of taste, some help with platform-specific problems, and
 others can be set to minimize the size of the library. Please see the setup.h file
 and {\tt install.txt} files for details on configuration.
 
-Under Unix (GTK and Motif) the corresponding setup.h files are generated automatically
-when configuring the wxWindows using the "configure" script. When using the RPM packages
+When using the 'configure' script to configure wxWindows (on Unix and other platforms where
+configure is available), the corresponding setup.h files are generated automatically
+along with suitable makefiles. When using the RPM packages
 for installing wxWindows on Linux, a correct setup.h is shipped in the package and
 this must not be changed.
 
 \section{Makefiles}
 
-At the moment there is no attempt to make Unix makefiles and
-PC makefiles compatible, i.e. one makefile is required for
-each environment. The Unix ports use a sophisticated system based
-on the GNU autoconf tool and this system will create the
-makefiles as required on the respective platform. Although the
-makefiles are not identical in Windows, Mac and Unix, care has
-been taken to make them relatively similar so that moving from
-one platform to another will be painless.
-
-Sample makefiles for Unix (suffix .unx), MS C++ (suffix .DOS and .NT), Borland
-C++ (.BCC and .B32) and Symantec C++ (.SC) are included for the library, demos
-and utilities.
-
-The controlling makefile for wxWindows is in the MS-Windows
-directory {\tt src/msw} for the different Windows compiler and
-in the build directory when using the Unix ports. The build
-directory can be chosen by the user. It is the directory in
-which the "configure" script is run. This can be the normal
-base directory (by running {\tt ./configure} there) or any other
-directory (e.g. {\tt ../configure} after creating a build-directory
-in the directory level above the base directory).
-
-Please see the platform-specific {\tt install.txt} file for further details.
+On Microsoft Windows, wxWindows has a different set of makefiles for each
+compiler, because each compiler's 'make' tool is slightly different.
+Popular Windows compilers that we cater for, and the corresponding makefile
+extensions, include: Microsoft Visual C++ (.vc), Borland C++ (.bcc),
+OpenWatcom C++ (.wat) and MinGW/Cygwin (.gcc). Makefiles are provided
+for the wxWindows library itself, samples, demos, and utilities.
+
+On Linux, Mac and OS/2, you use the 'configure' command to
+generate the necessary makefiles. You should also use this method when
+building with MinGW/Cygwin on Windows.
+
+We also provide project files for some compilers, such as
+Microsoft VC++. However, we recommend using makefiles
+to build the wxWindows library itself, because makefiles
+can be more powerful and less manual intervention is required.
+
+On Windows using a compiler other than MinGW/Cygwin, you would
+build the wxWindows library from the build/msw directory
+which contains the relevant makefiles.
+
+On Windows using MinGW/Cygwin, and on Unix, MacOS X and OS/2, you invoke
+'configure' (found in the top-level of the wxWindows source hierarchy),
+from within a suitable empty directory for containing makefiles, object files and
+libraries.
+
+For details on using makefiles, configure, and project files,
+please see docs/xxx/install.txt in your distribution, where
+xxx is the platform of interest, such as msw, gtk, x11, mac.
 
 \section{Windows-specific files}
 
@@ -320,7 +323,7 @@ The least that must be defined in the Windows resource file (extension RC)
 is the following statement:
 
 \begin{verbatim}
-rcinclude "wx/msw/wx.rc"
+#include "wx/msw/wx.rc"
 \end{verbatim}
 
 which includes essential internal wxWindows definitions.  The resource script
@@ -337,25 +340,6 @@ the MS Windows SDK documentation.
 so programs that search your executable for icons (such
 as the Program Manager) find your application icon first.}
 
-\subsection{Module definition file}
-
-A module definition file (extension DEF) is required for 16-bit applications, and
-looks like the following:
-
-\begin{verbatim}
-NAME         Hello
-DESCRIPTION  'Hello'
-EXETYPE      WINDOWS
-STUB         'WINSTUB.EXE'
-CODE         PRELOAD MOVEABLE DISCARDABLE
-DATA         PRELOAD MOVEABLE MULTIPLE
-HEAPSIZE     1024
-STACKSIZE    8192
-\end{verbatim}
-
-The only lines which will usually have to be changed per application are
-NAME and DESCRIPTION.
-
 \section{Allocating and deleting wxWindows objects}
 
 In general, classes derived from wxWindow must dynamically allocated
@@ -421,18 +405,19 @@ The following documents some miscellaneous C++ issues.
 
 \subsection{Templates}
 
-wxWindows does not use templates since it is a notoriously unportable feature.
+wxWindows does not use templates (except for some advanced features that
+are switched off by default) since it is a notoriously unportable feature.
 
 \subsection{RTTI}
 
-wxWindows does not use run-time type information since wxWindows provides
+wxWindows does not use C++ run-time type information since wxWindows provides
 its own run-time type information system, implemented using macros.
 
 \subsection{Type of NULL}
 
 Some compilers (e.g. the native IRIX cc) define NULL to be 0L so that
 no conversion to pointers is allowed. Because of that, all these
-occurrences of NULL in the GTK port use an explicit conversion such 
+occurrences of NULL in the GTK+ port use an explicit conversion such 
 as
 
 {\small
@@ -511,7 +496,7 @@ Some are under the 'contrib' hierarchy which mirrors the
 structure of the main wxWindows hierarchy. See also the 'utils'
 hierarchy. The first place to look for documentation about
 these tools and libraries is under the wxWindows 'docs' hierarchy,
-for example \tt{docs/htmlhelp/fl.chm}.
+for example {\tt docs/htmlhelp/fl.chm}.
 
 For other user-contributed packages, please see the Contributions page
 on the \urlref{wxWindows Web site}{http://www.wxwindows.org}.
@@ -522,7 +507,7 @@ Helpview is a program for displaying wxWindows HTML
 Help files. In many cases, you may wish to use the wxWindows HTML
 Help classes from within your application, but this provides a
 handy stand-alone viewer. See \helpref{wxHTML Notes}{wxhtml} for more details.
-You can find it in \tt{samples/html/helpview}.
+You can find it in {\tt samples/html/helpview}.
 
 \item[{\bf Tex2RTF}]
 Supplied with wxWindows is a utility called Tex2RTF for converting\rtfsp
@@ -530,65 +515,61 @@ Supplied with wxWindows is a utility called Tex2RTF for converting\rtfsp
 Help RTF formats. Tex2RTF is used for the wxWindows manuals and can be used independently
 by authors wishing to create on-line and printed manuals from the same\rtfsp
 \LaTeX\ source. Please see the separate documentation for Tex2RTF.
-You can find it under \tt{utils/tex2rtf}.
+You can find it under {\tt utils/tex2rtf}.
 
 \item[{\bf Helpgen}]
 Helpgen takes C++ header files and generates a Tex2RTF-compatible
 documentation file for each class it finds, using comments as appropriate.
 This is a good way to start a reference for a set of classes.
 
-\item[{\bf Dialog Editor}]
-Dialog Editor allows interactive construction of dialogs using
-absolute positioning, producing WXR output files. This tool is generally deprecated
-in favour of sizer-based tools. You can find Dialog Editor
-in \tt{utils/dialoged}.
-
+%\item[{\bf Dialog Editor}]
+%Dialog Editor allows interactive construction of dialogs using
+%absolute positioning, producing WXR output files. This tool is generally deprecated
+%in favour of sizer-based tools. You can find Dialog Editor
+%in {\tt utils/dialoged}.
+%
 \item[{\bf XRC resource system}]
-This is the sizer-aware replacement for the WXR resource system, and uses
+This is the sizer-aware resource system, and uses
 XML-based resource specifications that can be generated by tools
 such as \urlref{wxDesigner}{http://www.roebling.de} and XRC's own wxrcedit.
-You can find this in \tt{contrib/src/xrc}, \tt{contrib/include/wx/xrc}, \tt{contrib/samples/xrc}, and \tt{contrib/utils/wxrcedit}.
+You can find this in {\tt contrib/src/xrc}, {\tt contrib/include/wx/xrc}, {\tt contrib/samples/xrc}, and {\tt contrib/utils/wxrcedit}.
 For more information, see the \helpref{XML-based resource system overview}{xrcoverview}.
 
 \item[{\bf Object Graphics Library}]
 OGL defines an API for applications that need to display objects connected by lines.
 The objects can be moved around and interacted with.
-You can find this in \tt{contrib/src/ogl}, \tt{contrib/include/wx/ogl}, and \tt{contrib/samples/ogl}.
+You can find this in {\tt contrib/src/ogl}, {\tt contrib/include/wx/ogl}, and {\tt contrib/samples/ogl}.
 
 \item[{\bf Frame Layout library}]
 FL provides sophisticated pane dragging and docking facilities.
-You can find this in \tt{contrib/src/fl}, \tt{contrib/include/wx/fl}, and \tt{contrib/samples/fl}.
+You can find this in {\tt contrib/src/fl}, {\tt contrib/include/wx/fl}, and {\tt contrib/samples/fl}.
 
 \item[{\bf Gizmos library}]
 Gizmos is a collection of useful widgets and other classes. Classes include wxLEDNumberCtrl,
 wxEditableListBox, wxMultiCellCanvas.
-You can find this in \tt{contrib/src/fl}, \tt{contrib/include/wx/fl}, and \tt{contrib/samples/fl}.
+You can find this in {\tt contrib/src/fl}, {\tt contrib/include/wx/fl}, and {\tt contrib/samples/fl}.
 
 \item[{\bf Net library}]
 Net is a collection of very simple mail and web related classes. Currently
 there is only wxEmail, which makes it easy to send email messages via MAPI on Windows or sendmail on Unix.
-You can find this in \tt{contrib/src/net} and \tt{contrib/include/wx/net}.
+You can find this in {\tt contrib/src/net} and {\tt contrib/include/wx/net}.
 
 \item[{\bf Animate library}]
 Animate allows you to load animated GIFs and play them on a window. The library can be extended
 to use other animation formats.
-You can find this in \tt{contrib/src/animate}, \tt{contrib/include/wx/animate}, and \tt{contrib/samples/animate}.
-
-\item[{\bf Canvas library}]
-Canvas supports high-level, double-buffered drawing operations with transformations.
-You can find this in \tt{contrib/src/canvas}, \tt{contrib/include/wx/canvas}, and \tt{contrib/samples/canvas}.
+You can find this in {\tt contrib/src/animate}, {\tt contrib/include/wx/animate}, and {\tt contrib/samples/animate}.
 
 \item[{\bf MMedia library}]
 Mmedia supports a variety of multimedia functionality. The status of this library is currently unclear.
-You can find this in \tt{contrib/src/mmedia}, \tt{contrib/include/wx/mmedia}, and \tt{contrib/samples/mmedia}.
+You can find this in {\tt contrib/src/mmedia}, {\tt contrib/include/wx/mmedia}, and {\tt contrib/samples/mmedia}.
 
 \item[{\bf Styled Text Control library}]
 STC is a wrapper around Scintilla, a syntax-highlighting text editor.
-You can find this in \tt{contrib/src/stc}, \tt{contrib/include/wx/stc}, and \tt{contrib/samples/stc}.
+You can find this in {\tt contrib/src/stc}, {\tt contrib/include/wx/stc}, and {\tt contrib/samples/stc}.
 
 \item[{\bf Plot}]
 Plot is a simple curve plotting library.
-You can find this in \tt{contrib/src/plot}, \tt{contrib/include/wx/plot}, and \tt{contrib/samples/plot}.
+You can find this in {\tt contrib/src/plot}, {\tt contrib/include/wx/plot}, and {\tt contrib/samples/plot}.
 \end{description}
 
 \chapter{Programming strategies}\label{strategies}
@@ -636,9 +617,8 @@ to avoid problems.
 
 \subsection{Use wxWindows resource files}
 
-Use .wrc (wxWindows resource files) where possible, because they can be easily changed
-independently of source code. Bitmap resources can be set up to load different
-kinds of bitmap depending on platform (see the section on resource files).
+Use .xrc (wxWindows resource files) where possible, because they can be easily changed
+independently of source code.
 
 \section{Strategies for debugging}\label{debugstrategies}
 
@@ -699,25 +679,3 @@ will save a surprising amount of time in the long run.
 
 See the \helpref{debugging overview}{debuggingoverview} for further information.
 
-\subsection{Check Windows debug messages}
-
-Under Windows, it is worth running your program with 
-\urlref{DbgView}{http://www.sysinternals.com} running or
-some other program that shows Windows-generated debug messages. It is
-possible it will show invalid handles being used. You may have fun seeing
-what commercial programs cause these normally hidden errors! Microsoft
-recommend using the debugging version of Windows, which shows up even
-more problems. However, I doubt it is worth the hassle for most
-applications. wxWindows is designed to minimize the possibility of such
-errors, but they can still happen occasionally, slipping through unnoticed
-because they are not severe enough to cause a crash.
-
-\subsection{Genetic mutation}
-
-If we had sophisticated genetic algorithm tools that could be applied
-to programming, we could use them. Until then, a common -- if rather irrational --
-technique is to just make arbitrary changes to the code until something
-different happens. You may have an intuition why a change will make a difference;
-otherwise, just try altering the order of code, comment lines out, anything
-to get over an impasse. Obviously, this is usually a last resort.
-