X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7af3ca164537ce06c7df5f9923a53a0d82e21cd0..21f60945831a6edad0f2101b6053a2c8213d5296:/docs/latex/wx/body.tex diff --git a/docs/latex/wx/body.tex b/docs/latex/wx/body.tex index 5002bcdeca..17111a9446 100644 --- a/docs/latex/wx/body.tex +++ b/docs/latex/wx/body.tex @@ -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 @@ -537,14 +522,14 @@ 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}. @@ -574,10 +559,6 @@ Animate allows you to load animated GIFs and play them on a window. The library 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}. - \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}. @@ -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. -