From 2a47d3c193a8358f9be6a9249af28b6cb10eacff Mon Sep 17 00:00:00 2001
From: Julian Smart <julian@anthemion.co.uk>
Date: Sun, 28 Feb 1999 20:59:08 +0000
Subject: [PATCH] Doc mods; fixed return non-processing problem; fixed toolbar
 sizing problems (incl. MDI area clipping); put wxPrintPaperDatabase,
 wxPrintPaperType into prntbase.cpp since it's needed in non-PostScript WIN16
 for the generic page setup dialog; corrected some 16-bit makefiles

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1831 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 docs/latex/wx/app.tex         |  40 ++++--------
 docs/latex/wx/arrstrng.tex    |  22 +++----
 docs/latex/wx/tex2rtf.ini     |  11 ++--
 docs/latex/wx/ti18n.tex       |  19 +++---
 docs/latex/wx/tprint.tex      |   1 -
 docs/latex/wx/ttreectl.tex    |   7 +-
 docs/latex/wx/wx.hpj          |  17 +++--
 docs/latex/wx/wxPython.tex    |  82 ++++++++---------------
 include/wx/generic/dcpsg.h    |  40 ------------
 include/wx/prntbase.h         |  42 ++++++++++++
 samples/controls/controls.cpp |  10 +++
 samples/printing/makefile.dos |  83 ++---------------------
 samples/resource/makefile.dos |  81 ++---------------------
 samples/toolbar/test.cpp      |   2 +-
 samples/validate/validate.def |   1 -
 src/common/event.cpp          |   1 -
 src/common/prntbase.cpp       | 120 ++++++++++++++++++++++++++++++++++
 src/common/tbarsmpl.cpp       |   1 +
 src/common/valtext.cpp        |  14 ++--
 src/generic/choicdgg.cpp      |   2 +-
 src/generic/dcpsg.cpp         |  93 +++-----------------------
 src/generic/prntdlgg.cpp      |  44 +++++--------
 src/generic/textdlgg.cpp      |   2 +-
 src/gtk/data.cpp              |   4 +-
 src/gtk1/data.cpp             |   4 +-
 src/mac/carbon/data.cpp       |   4 --
 src/mac/data.cpp              |   4 --
 src/motif/data.cpp            |   4 --
 src/msw/app.cpp               |   2 +
 src/msw/button.cpp            |   5 --
 src/msw/control.cpp           |   1 +
 src/msw/data.cpp              |  10 ++-
 src/msw/dialog.cpp            |  14 ++--
 src/msw/makefile.dos          |   2 +-
 src/msw/mdi.cpp               |  47 -------------
 src/msw/radiobox.cpp          |   8 +++
 src/msw/tbar95.cpp            |  13 +++-
 src/msw/tbarmsw.cpp           |   8 +++
 src/msw/textctrl.cpp          |   7 +-
 src/msw/window.cpp            |  27 +++++---
 src/stubs/data.cpp            |   4 --
 41 files changed, 370 insertions(+), 533 deletions(-)

diff --git a/docs/latex/wx/app.tex b/docs/latex/wx/app.tex
index a9044b7132..b8833be0e6 100644
--- a/docs/latex/wx/app.tex
+++ b/docs/latex/wx/app.tex
@@ -131,18 +131,17 @@ otherwise.
 
 \helpref{wxApp::SetExitOnDelete}{wxappsetexitondelete}
 
-\membersection{wxApp::GetPrintMode}\label{wxappgetprintmode}
-
-\constfunc{bool}{GetPrintMode}{\void}
-
-Returns the print mode: see \helpref{wxApp::SetPrintMode}{wxappsetprintmode}.
-
 \membersection{wxApp::GetTopWindow}\label{wxappgettopwindow}
 
 \constfunc{wxWindow *}{GetTopWindow}{\void}
 
 Returns a pointer to the top window.
 
+\wxheading{Remarks}
+
+If the top window hasn't been set using \helpref{wxApp::SetTopWindow}{wxappsettopwindow}, this
+function will find the first top-level window (frame or dialog) and return that.
+
 \wxheading{See also}
 
 \helpref{wxApp::SetTopWindow}{wxappsettopwindow}
@@ -271,7 +270,7 @@ Under Windows, OnEndSession is called in response to the WM\_ENDSESSION message.
 \func{bool}{OnInit}{\void}
 
 This must be provided by the application, and will usually create the
-application's main window, calling \helpref{wxApp::SetTopWindow}{wxappsettopwindow}.
+application's main window, optionally calling \helpref{wxApp::SetTopWindow}{wxappsettopwindow}.
 
 Return TRUE to continue processing, FALSE to exit the application.
 
@@ -423,31 +422,16 @@ deleted. If FALSE, the application will continue to run.}
 
 Currently, setting this to FALSE only has an effect under Windows.
 
-\membersection{wxApp::SetPrintMode}\label{wxappsetprintmode}
-
-\func{void}{SetPrintMode}{\param{int}{ mode}}
-
-Sets the print mode determining what printing facilities will be
-used by the printing framework.
-
-\wxheading{Parameters}
-
-\docparam{mode}{This can be one of:
-
-\begin{twocollist}\itemsep=0pt
-\twocolitem{{\bf wxPRINT\_WINDOWS}}{Under Windows, use Windows printing (wxPrinterDC). This is the
-default under Windows.}
-\twocolitem{{\bf wxPRINT\_POSTSCRIPT}}{Use PostScript printing (wxPostScriptDC). This is the
-default for non-Windows platforms.}
-\end{twocollist}
-}%
-
 \membersection{wxApp::SetTopWindow}\label{wxappsettopwindow}
 
 \func{void}{SetTopWindow}{\param{wxWindow* }{window}}
 
-Sets the `top' window. You should normally call this from within \helpref{wxApp::OnInit}{wxapponinit} to
-let wxWindows know which is the main window.
+Sets the `top' window. You can call this from within \helpref{wxApp::OnInit}{wxapponinit} to
+let wxWindows know which is the main window. You don't have to set the top window;
+it's only a convenience so that (for example) certain dialogs without parents can use a
+specific window as the top window. If no top window is specified by the application,
+wxWindows just uses the first frame or dialog in its top-level window list, when it
+needs to use the top window.
 
 \wxheading{Parameters}
 
diff --git a/docs/latex/wx/arrstrng.tex b/docs/latex/wx/arrstrng.tex
index e41d6102ed..ab2cd02788 100644
--- a/docs/latex/wx/arrstrng.tex
+++ b/docs/latex/wx/arrstrng.tex
@@ -3,11 +3,11 @@
 wxArrayString is an efficient container for storing 
 \helpref{wxString}{wxstring} objects. It has the same features as all 
 \helpref{wxArray}{wxarray} classes, i.e. it dynamically expands when new items
-are added to it (so it is as easy to sue as a linked list), but the access
-time to the elements is constant (instead of being linear in number of
-elements as in the case of linked lists). It is also very size efficient and
-doesn't take more space than a C array {\it wxString[]} type (wxArrayString
-uses its knowledge of internals of wxString class to achieve this).
+are added to it (so it is as easy to use as a linked list), but the access
+time to the elements is constant, instead of being linear in number of
+elements as in the case of linked lists. It is also very size efficient and
+doesn't take more space than a C array {\it wxString[]} type. wxArrayString
+uses its knowledge of internals of wxString class to achieve this.
 
 This class is used in the same way as other dynamic \helpref{arrays}{wxarray},
 except that no {\it WX\_DEFINE\_ARRAY} declaration is needed for it. When a
@@ -29,7 +29,7 @@ array elements may be modified in place like this
 Finally, none of the methods of this class is virtual including its
 destructor, so this class should not be derived from.
 
-\wxheading{Specialization of}
+\wxheading{Derived from}
 
 Although this is not true strictly speaking, this class may be considered as a
 specialization of \helpref{wxArray}{wxarray} class for the wxString member
@@ -42,8 +42,7 @@ functions.
 
 \wxheading{See also}
 
-\helpref{wxArray}{wxarray}, \helpref{wxString}{wxstring}, \helpref{wxString
-overview}{wxstringoverview}
+\helpref{wxArray}{wxarray}, \helpref{wxString}{wxstring}, \helpref{wxString overview}{wxstringoverview}
 
 \latexignore{\rtfignore{\wxheading{Members}}}
 
@@ -224,10 +223,11 @@ wxString\&} parameters and returning {\it int} value less than, equal to or
 greater than 0 if the first string is less than, equal to or greater than the
 second one.
 
-Example: sorting strings by their length:
+\wxheading{Example}
 
-\begin{verbatim}
+The following example sorts strings by their length.
 
+\begin{verbatim}
 static int CompareStringLen(const wxString& first, const wxString& second)
 {
     return first.length() - second.length();
@@ -243,7 +243,7 @@ array.Add("three");
 array.Add("four");
 
 array.Sort(CompareStringLen);
-
 \end{verbatim}
 
 See also: \helpref{Sort}{wxarraystringsort}
+
diff --git a/docs/latex/wx/tex2rtf.ini b/docs/latex/wx/tex2rtf.ini
index 969a942309..b46abf0a38 100644
--- a/docs/latex/wx/tex2rtf.ini
+++ b/docs/latex/wx/tex2rtf.ini
@@ -11,16 +11,17 @@ headerRule = yes
 footerRule = yes
 useHeadingStyles = yes
 listItemIndent=40
-generateHPJ = no
+generateHPJ = yes
 htmlBrowseButtons = bitmap
 winHelpContents = yes
-winHelpVersion = 4 ; 3 for Windows 3.x, 4 for Windows 95
+winHelpVersion = 3 ; 3 for Windows 3.x, 4 for Windows 95
 winHelpTitle = "wxWindows Manual"
 truncateFilenames = yes
 combineSubSections = yes
-\overview [2] {\rtfonly{See also }\settransparency{on}\sethotspotcolour{off}\sethotspotunderline{on}\winhelponly{\image{}{books.bmp}\settransparency{off}}
-\htmlonly{\image{}{books.gif}}\helpref{#1}{#2}
-\sethotspotcolour{on}\sethotspotunderline{on}}
+;\overview [2] {\rtfonly{See also }\settransparency{on}\sethotspotcolour{off}\sethotspotunderline{on}\winhelponly{\image{}{books.bmp}\settransparency{off}}
+;\htmlonly{\image{}{books.gif}}\helpref{#1}{#2}
+;\sethotspotcolour{on}\sethotspotunderline{on}}
+\overview [2] {\helpref{#1}{#2}}
 \docparam [2]{\parskip{0}{\it #1}\htmlignore{\par}\parskip{10}\indented{1cm}{#2}}
 \wxheading [1]{{\bf \htmlignore{\fcol{blue}{#1}}\htmlonly{\fcol{red}{#1}}}}
 \const [0] {{\bf const}}
diff --git a/docs/latex/wx/ti18n.tex b/docs/latex/wx/ti18n.tex
index 3c667e5423..f90cd6b235 100644
--- a/docs/latex/wx/ti18n.tex
+++ b/docs/latex/wx/ti18n.tex
@@ -7,10 +7,10 @@ and others right to left, character encoding may differ and many other things
 may need changing too), it is a necessary first step. wxWindows provides
 facilities for the messages translation with its 
 \helpref{wxLocale}{wxlocale} class and is itself fully translated into several
-languages (please consult wxWindows home page for the most up-to-date
-translations - and if you may translate it in one of the languages not done
+languages. Please consult wxWindows home page for the most up-to-date
+translations - and if you translate it into one of the languages not done
 yet, your translations would be gratefully accepted for inclusion into the
-future versions of the library!).
+future versions of the library!
 
 The wxWindows approach to i18n closely follows GNU gettext package. wxWindows uses the
 message catalogs which are binary compatible with gettext catalogs and this
@@ -18,7 +18,7 @@ allows to use all of the programs in this package to work with them. But note
 that no additional libraries are needed during the run-time, however, so you
 have only the message catalogs to distribute and nothing else.
 
-However, during the program development you will need the gettext package for
+During program development you will need the gettext package for
 working with message catalogs. {\bf Warning:} gettext versions < 0.10 are known
 to be buggy, so you should find a later version of it!
 
@@ -30,25 +30,22 @@ Only the binary files are needed during program execution.
 The program i18n involves several steps:
 
 \begin{enumerate}\itemsep=0pt
-
 \item Translating the strings in the program text using 
 \helpref{wxGetTranslation}{wxgettranslation} or equivalently the \_() macro.
-
 \item Extracting the strings to be translated from the program: this uses the
 work done in the previous step because {\it xgettext} program used for string
-extraction may be told (using its -k option) to reckognize \_() and
+extraction may be told (using its -k option) to recognise \_() and
 wxGetTranslation and extract all strings inside the calls to these functions.
 Alternatively, you may use -a option to extract all the strings, but it will
 usually result in many strings being found which don't have to be translated at
 all. This will create a text message catalog - a .po file.
-
 \item Translating the strings extracted in the previous step to other
 language(s). It involves editing the .po file.
-
 \item Compiling the .po file into .mo file to be used by the program.
-
 \item Setting the appropriate locale in your program to use the strings for the
 given language: see \helpref{wxLocale}{wxlocale}.
-
 \end{enumerate}
 
+See also the GNU gettext documentation linked from {\tt docs/html/index.htm} in
+your wxWindows distribution.
+
diff --git a/docs/latex/wx/tprint.tex b/docs/latex/wx/tprint.tex
index b6f031cc26..6588e312c4 100644
--- a/docs/latex/wx/tprint.tex
+++ b/docs/latex/wx/tprint.tex
@@ -56,4 +56,3 @@ please look at the printout sample code.
     }
 \end{verbatim}
 
-
diff --git a/docs/latex/wx/ttreectl.tex b/docs/latex/wx/ttreectl.tex
index 43adf1b891..7c30c800b0 100644
--- a/docs/latex/wx/ttreectl.tex
+++ b/docs/latex/wx/ttreectl.tex
@@ -62,7 +62,7 @@ only thing to remember is that the {\it cookie} passed to
 \helpref{GetNextChild}{wxtreectrlgetnextchild} should be the same variable (and
 that nothing should be done with it by the user code).
 
-Among other functionalities of the tree control are: item sorting with 
+Among other features of the tree control are: item sorting with 
 \helpref{SortChildren}{wxtreectrlsortchildren} which uses the user-defined comparison
 function \helpref{OnCompareItems}{wxtreectrloncompareitems} (by default the
 comparison is the alphabetic comparison of tree labels), hit testing
@@ -75,5 +75,6 @@ Finally, the tree control has a keyboard interface: the cursor navigation (arrow
 may be used to change the current selection. <HOME> and <END> are used to go to
 the first/last sibling of the current item. '+', '-' and '*' expand, collapse
 and toggle the current branch. Note, however, that <DEL> and <INS> keys do
-nothing by default, but it is custom to associate them with deleting item from
-a tree and inserting a new one in it.
+nothing by default, but it is usual to associate them with deleting item from
+a tree and inserting a new one into it.
+
diff --git a/docs/latex/wx/wx.hpj b/docs/latex/wx/wx.hpj
index 03b31643a9..b97b7aa3b2 100644
--- a/docs/latex/wx/wx.hpj
+++ b/docs/latex/wx/wx.hpj
@@ -1,14 +1,8 @@
-; This file is maintained by HCW. Do not modify this file directly.
-
-
 [OPTIONS]
-COMPRESS=60 Hall Zeck
-LCID=0x409 0x0 0x0 ; English (United States)
-REPORT=Yes
-CONTENTS=Contents
+BMROOT=d:\wx2\wxwind~1\docs/latex/wx ; Assume that bitmaps are where the source is
 TITLE=wxWindows Manual
-BMROOT=.
-HLP=wx.hlp
+CONTENTS=Contents
+COMPRESS=HIGH
 
 [FILES]
 wx.rtf
@@ -16,3 +10,8 @@ wx.rtf
 [CONFIG]
 CreateButton("Up", "&Up", "JumpId(`wx.hlp', `Contents')")
 BrowseButtons()
+
+[MAP]
+
+[BITMAPS]
+
diff --git a/docs/latex/wx/wxPython.tex b/docs/latex/wx/wxPython.tex
index f713998c85..7561ae8d3d 100644
--- a/docs/latex/wx/wxPython.tex
+++ b/docs/latex/wx/wxPython.tex
@@ -3,15 +3,17 @@
 \setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
 \setfooter{\thepage}{}{}{}{}{\thepage}%
 
+This addendum is written by Robin Dunn, author of the wxPython wrapper
+
 %----------------------------------------------------------------------
 \section{What is wxPython?}\label{wxpwhat}
 
-wxPython is a blending of the wxWindows GUI classes and the
+wxPython is a blending of the wxWindows GUI classes and the 
 \urlref{Python}{http://www.python.org/} programming language.
 
 \wxheading{Python}
 
-So what is Python?  Go to
+So what is Python?  Go to 
 \urlref{http://www.python.org}{http://www.python.org}
 to learn more, but in a nutshell Python is an interpreted,
 interactive, object-oriented programming language. It is often
@@ -43,18 +45,17 @@ applications, or in situations where Python is embedded in a C++
 application as an internal scripting or macro language.
 
 Currently wxPython is available for Win32 platforms and the GTK
-toolkit (wxGTK) on most *nix/X-windows platforms.  The effort to
-enable wxPython for wxMotif will begin shortly.  See \helpref{Building
-Python}{wxpbuild} for details about getting wxPython working for you.
+toolkit (wxGTK) on most Unix/X-windows platforms.  The effort to
+enable wxPython for wxMotif will begin shortly.  See \helpref{Building Python}{wxpbuild} for
+details about getting wxPython working for you.
 
 
 %----------------------------------------------------------------------
 \section{Why use wxPython?}\label{wxpwhy}
 
-
 So why would you want to use wxPython over just C++ and wxWindows?
-Personally I prefer using Python for everything.  I only use C++ when
-I absolutly have to eek more performance out of an algorithm, and even
+Personally I prefer using Python for everything. I only use C++ when
+I absolutely have to eek more performance out of an algorithm, and even
 then I ususally code it as an extension module and leave the majority
 of the program in Python.
 
@@ -66,7 +67,6 @@ application in a few hours with Python that would normally take a few
 days or longer with C++.  Converting a wxPython app to a C++/wxWindows app
 should be a straight forward task.
 
-
 %----------------------------------------------------------------------
 \section{Other Python GUIs}\label{wxpother}
 
@@ -118,7 +118,6 @@ cross-platform compatible.  See \urlref{this
 link}{http://www.python.org/download/Contributed.html\#Graphics}
 for a listing of a few of them.
 
-
 %----------------------------------------------------------------------
 \section{Building wxPython}\label{wxpbuild}
 
@@ -135,7 +134,7 @@ make won't attempt to build them from the .i files.
 I added a few minor features to SWIG to control some of the code
 generation.  If you want to play around with this the patches are in
 wxPython/SWIG.patches and they should be applied to the 1.1p5 version
-of SWIG.  These new patches are documented at
+of SWIG.  These new patches are documented at 
 \urlref{this site}{http://starship.skyport.net/crew/robind/python/\#swig},
 and they should also end up in the 1.2 version of SWIG.
 
@@ -146,10 +145,9 @@ should be named wxPython.)  You can control where the build process
 will dump wxPython by setting the \tt{TARGETDIR} makefile variable.
 The default is \tt{\$(WXWIN)/utils/wxPython}.  If you leave it here
 then you should add \tt{\$(WXWIN)/utils} to your \tt{PYTHONPATH}.
-However, you may prefer to use something that is already on your
+However, you may prefer to use something that is already on your 
 \tt{PYTHONPATH}, such as the \tt{site-packages} directory on Unix
- systems.
-
+systems.
 
 \wxheading{Win32}
 
@@ -163,34 +161,26 @@ specified below.
 \item Build wxWindows with \tt{wxUSE_RESOURCE_LOADING_IN_MSW} set to 1 in
 \tt{include/wx/msw/setup.h} so icons can be loaded dynamically.  While
 there, make sure \tt{wxUSE_OWNER_DRAWN} is also set to 1.
-
 \item Change into the \tt{\$(WXWIN)/utils/wxPython/src} directory.
-
 \item Edit makefile.vc and specify where your python installation is at.
 You may also want to fiddle with the \tt{TARGETDIR} variable as described
 above.
-
 \item Run \tt{nmake -f makefile.vc}
-
 \item If it builds successfully, congratulations!  Move on to the next
 step.  If not then you can try mailing the wxwin-developers list for
-help.  Also, I will always have a pre-built win32 version of this extension module at
+help.  Also, I will always have a pre-built win32 version of this extension module at 
 \urlref{http://alldunn.com/wxPython}{http://alldunn.com/wxPython}.
-
 \item Change to the \tt{\$(WXWIN)/utils/wxPython/tests} directory.
-
 \item Try executing the test programs.  Note that some of these print
 diagnositc or test info to standard output, so they will require the
 console version of python.  For example:
 
-    \tt{python test1.py}
+\tt{python test1.py}
 
 To run them without requiring a console, you can use the \tt{pythonw.exe}
 version of Python either from the command line or from a shortcut.
-
 \end{enumerate}
 
-
 \wxheading{Unix}
 
 These directions assume that you have already successfully built
@@ -203,29 +193,23 @@ with the development libraries, etc. that you will need to install.
 
 \begin{enumerate}\itemsep=0pt
 \item Change into the \tt{\$(WXWIN)/utils/wxPython/src} directory.
-
 \item Edit \tt{Setup.in} and ensure that the flags, directories, and toolkit
 options are correct, (hopefully this will be done by \tt{configure}
 soon.)  See the above commentary about \tt{TARGETDIR}.  There are a
 few sample Setup.in.[platform] files provided.
-
 \item Run this command to generate a makefile:
 
-    \tt{make -f Makefile.pre.in boot}
+\tt{make -f Makefile.pre.in boot}
 
-\item Once you have the \tt{Makefile}, run \bftt{make} to build and then
+\item Once you have the \tt{Makefile}, run \bftt{make} to build and then 
 \bftt{make install} to install the wxPython extension module.
-
 \item Change to the \tt{\$(WXWIN)/utils/wxPython/tests} directory.
-
 \item Try executing the test programs.  For example:
 
-    \tt{python test1.py}
-
+\tt{python test1.py}
 \end{enumerate}
 
 
-
 %----------------------------------------------------------------------
 \section{Using wxPython}\label{wxpusing}
 
@@ -325,13 +309,14 @@ it by issuing this command:
 \end{verbatim}
 \hrule
 
-\wxheading{Things to notice:}\begin{enumerate}\itemsep=0pt
+\wxheading{Things to notice}
+
+\begin{enumerate}\itemsep=0pt
 \item At line 2 the wxPython classes, constants, and etc. are imported
 into the current module's namespace.  If you prefer to reduce
 namespace polution you can use "\tt{from wxPython import wx}" and
 then access all the wxPython identifiers through the wx module, for
 example, "\tt{wx.wxFrame}".
-
 \item At line 13 the frame's sizing and moving events are connected to
 methods of the class.  These helper functions are intended to be like
 the event table macros that wxWindows employs.  But since static event
@@ -339,20 +324,17 @@ tables are impossible with wxPython, we use helpers that are named the
 same to dynamically build the table.  The only real difference is
 that the first arguemnt to the event helpers is always the window that
 the event table entry should be added to.
-
-\item Notice the use of \tt{wxDLG_PNT} and \tt{wxDLG_SZE} in lines 19
+\item Notice the use of \tt{wxDLG\_PNT} and \tt{wxDLG\_SZE} in lines 19
 - 29 to convert from dialog units to pixels.  These helpers are unique
 to wxPython since Python can't do method overloading like C++.
-
 \item There is an \tt{OnCloseWindow} method at line 34 but no call to
-EVT_CLOSE to attach the event to the method.  Does it really get
-called?  The answer is, yes it does.  This is because many of the
+EVT\_CLOSE to attach the event to the method.  Does it really get
+called?  The answer is, yes it does.  This is because many of the 
 \em{standard} events are attached to windows that have the associated
 \em{standard} method names.  I have tried to follow the lead of the
 C++ classes in this area to determine what is \em{standard} but since
 that changes from time to time I can make no guarentees, nor will it
-be fully documented.  When in doubt, use an EVT_*** function.
-
+be fully documented.  When in doubt, use an EVT\_*** function.
 \item At lines 17 to 21 notice that there are no saved references to
 the panel or the static text items that are created.  Those of you
 who know Python might be wondering what happens when Python deletes
@@ -361,16 +343,14 @@ don't.  Remember that in wxPython the Python objects are just shadows of the
 coresponding C++ objects.  Once the C++ windows and controls are
 attached to their parents, the parents manage them and delete them
 when necessary.  For this reason, most wxPython objects do not need to
-have a __del__ method that explicitly causes the C++ object to be
+have a \_\_del\_\_ method that explicitly causes the C++ object to be
 deleted.  If you ever have the need to forcibly delete a window, use
 the Destroy() method as shown on line 36.
-
 \item Just like wxWindows in C++, wxPython apps need to create a class
-derived from \tt{wxApp} (line 56) that implements a method named
+derived from \tt{wxApp} (line 56) that implements a method named 
 \tt{OnInit}, (line 59.) This method should create the application's
 main window (line 62) and use \tt{wxApp.SetTopWindow()} (line 66) to
 inform wxWindows about it.
-
 \item And finally, at line 72 an instance of the application class is
 created.  At this point wxPython finishes initializing itself, and calls
 the \tt{OnInit} method to get things started.  (The zero parameter here is
@@ -378,11 +358,8 @@ a flag for functionality that isn't quite implemented yet.  Just
 ignore it for now.)  The call to \tt{MainLoop} at line 73 starts the event
 loop which continues until the application terminates or all the top
 level windows are closed.
-
 \end{enumerate}
 
-
-
 %----------------------------------------------------------------------
 \section{wxWindows classes implemented in wxPython}\label{wxpclasses}
 
@@ -520,7 +497,7 @@ as possible to the C++ spec over time.
 \section{Where to go for help}\label{wxphelp}
 
 Since wxPython is a blending of multiple technologies, help comes from
-multiple sources.  See
+multiple sources. See 
 \urlref{http://alldunn.com/wxPython}{http://alldunn.com/wxPython} for details on
 various sources of help, but probably the best source is the
 wxPython-users mail list.  You can view the archive or subscribe by
@@ -532,8 +509,3 @@ Or you can send mail directly to the list using this address:
 
 wxpython-users@starship.python.net
 
-
-
-
-
-
diff --git a/include/wx/generic/dcpsg.h b/include/wx/generic/dcpsg.h
index b52b60fd1a..c8704dab27 100644
--- a/include/wx/generic/dcpsg.h
+++ b/include/wx/generic/dcpsg.h
@@ -267,46 +267,6 @@ private:
 WXDLLEXPORT_DATA(extern wxPrintSetupData*) wxThePrintSetupData;
 WXDLLEXPORT extern void wxInitializePrintSetupData(bool init = TRUE);
 
-/*
- * Again, this only really needed for non-Windows platforms
- * or if you want to test the PostScript printing under Windows.
- */
-
-class WXDLLEXPORT wxPrintPaperType: public wxObject
-{
-public:
-    wxPrintPaperType(const char *name = (const char *) NULL, int wmm = 0, int hmm = 0, int wp = 0, int hp = 0);
-    ~wxPrintPaperType();
-
-public:
-    int widthMM;
-    int heightMM;
-    int widthPixels;
-    int heightPixels;
-    char *pageName;
-
-private:
-    DECLARE_DYNAMIC_CLASS(wxPrintPaperType)
-};
-
-class WXDLLEXPORT wxPrintPaperDatabase: public wxList
-{
-public:
-    wxPrintPaperDatabase();
-    ~wxPrintPaperDatabase();
-
-    void CreateDatabase();
-    void ClearDatabase();
-
-    void AddPaperType(const char *name, int wmm, int hmm, int wp, int hp);
-    wxPrintPaperType *FindPaperType(const char *name);
-
-private:
-    DECLARE_DYNAMIC_CLASS(wxPrintPaperDatabase)
-};
-
-WXDLLEXPORT_DATA(extern wxPrintPaperDatabase*) wxThePrintPaperDatabase;
-
 #endif
     // wxUSE_POSTSCRIPT
 
diff --git a/include/wx/prntbase.h b/include/wx/prntbase.h
index c147a65497..6861da9218 100644
--- a/include/wx/prntbase.h
+++ b/include/wx/prntbase.h
@@ -340,5 +340,47 @@ public:
   DECLARE_EVENT_TABLE()
 };
 
+/*
+ * Again, this only really needed for non-Windows platforms
+ * or if you want to test the PostScript printing under Windows,
+ * or if you're using the generic page setup dialog under e.g. Win16.
+ */
+
+class WXDLLEXPORT wxPrintPaperType: public wxObject
+{
+public:
+    wxPrintPaperType(const char *name = (const char *) NULL, int wmm = 0, int hmm = 0, int wp = 0, int hp = 0);
+    ~wxPrintPaperType();
+
+public:
+    int widthMM;
+    int heightMM;
+    int widthPixels;
+    int heightPixels;
+    char *pageName;
+
+private:
+    DECLARE_DYNAMIC_CLASS(wxPrintPaperType)
+};
+
+class WXDLLEXPORT wxPrintPaperDatabase: public wxList
+{
+public:
+    wxPrintPaperDatabase();
+    ~wxPrintPaperDatabase();
+
+    void CreateDatabase();
+    void ClearDatabase();
+
+    void AddPaperType(const char *name, int wmm, int hmm, int wp, int hp);
+    wxPrintPaperType *FindPaperType(const char *name);
+
+private:
+    DECLARE_DYNAMIC_CLASS(wxPrintPaperDatabase)
+};
+
+WXDLLEXPORT_DATA(extern wxPrintPaperDatabase*) wxThePrintPaperDatabase;
+
+
 #endif
     // _WX_PRNTBASEH__
diff --git a/samples/controls/controls.cpp b/samples/controls/controls.cpp
index 6a45c6ac39..4b77d0f7b7 100644
--- a/samples/controls/controls.cpp
+++ b/samples/controls/controls.cpp
@@ -95,7 +95,9 @@ public:
     void OnSetFont( wxCommandEvent &event );
     void OnPageChanged( wxNotebookEvent &event );
     void OnSliderUpdate( wxCommandEvent &event );
+#ifndef __WIN16__
     void OnSpinUpdate( wxSpinEvent &event );
+#endif
     void OnPasteFromClipboard( wxCommandEvent &event );
     void OnCopyToClipboard( wxCommandEvent &event );
     void OnMoveToEndOfText( wxCommandEvent &event );
@@ -108,7 +110,9 @@ public:
     wxGauge       *m_gauge;
     wxSlider      *m_slider;
     wxButton      *m_fontButton;
+#ifndef __WIN16__
     wxSpinButton  *m_spinbutton;
+#endif
     wxTextCtrl    *m_spintext;
     MyTextCtrl    *m_multitext;
     MyTextCtrl    *m_textentry;
@@ -336,7 +340,9 @@ EVT_BUTTON    (ID_RADIOBOX_FONT,        MyPanel::OnRadioButtons)
 EVT_CHECKBOX  (ID_RADIOBOX_ENABLE,      MyPanel::OnRadioButtons)
 EVT_BUTTON    (ID_SET_FONT,             MyPanel::OnSetFont)
 EVT_SLIDER    (ID_SLIDER,               MyPanel::OnSliderUpdate)
+#ifndef __WIN16__
 EVT_SPIN      (ID_SPIN,                 MyPanel::OnSpinUpdate)
+#endif
 EVT_BUTTON    (ID_PASTE_TEXT,           MyPanel::OnPasteFromClipboard)
 EVT_BUTTON    (ID_COPY_TEXT,            MyPanel::OnCopyToClipboard)
 EVT_BUTTON    (ID_MOVE_END_ZONE,        MyPanel::OnMoveToEndOfText)
@@ -541,8 +547,10 @@ m_text(NULL), m_notebook(NULL)
                           );
 #endif
     m_spintext = new wxTextCtrl( panel, -1, "0", wxPoint(20,160), wxSize(80,-1) );
+#ifndef __WIN16__
     m_spinbutton = new wxSpinButton( panel, ID_SPIN, wxPoint(103,159), wxSize(-1,-1) );
     m_spinbutton->SetRange(0,100);
+#endif
     m_notebook->AddPage(panel, "wxGauge", FALSE, Image_Gauge);
 }
 
@@ -873,12 +881,14 @@ void MyPanel::OnSliderUpdate( wxCommandEvent &WXUNUSED(event) )
     m_gauge->SetValue( m_slider->GetValue() );
 }
 
+#ifndef __WIN16__
 void MyPanel::OnSpinUpdate( wxSpinEvent &event )
 {
     wxString value;
     value.sprintf( "%d", (int)event.GetPosition() );
     m_spintext->SetValue( value );
 }
+#endif
 
 MyPanel::~MyPanel()
 {
diff --git a/samples/printing/makefile.dos b/samples/printing/makefile.dos
index 7269a32242..14946d6b93 100644
--- a/samples/printing/makefile.dos
+++ b/samples/printing/makefile.dos
@@ -1,88 +1,17 @@
 #
 # File:		makefile.dos
 # Author:	Julian Smart
-# Created:	1993
+# Created:	1998
 # Updated:	
-# Copyright:	(c) 1993, AIAI, University of Edinburgh
 #
-# "%W% %G%"
-#
-# Makefile : Builds printing example (DOS).
+# Makefile : Builds 16-bit sample, VC++ 1.5
 # Use FINAL=1 argument to nmake to build final version with no debugging
-# info.
+# info
 
-# Set WXDIR for your system
 WXDIR = $(WXWIN)
 
-!include $(WXDIR)\src\makemsc.env
-
-THISDIR = $(WXDIR)\samples\printing
-WXLIB = $(WXDIR)\lib\wx.lib
-LIBS=$(WXLIB) oldnames libw llibcew commdlg ddeml shell mmsystem
-INC=-I$(WXDIR)\include\base -I$(WXDIR)\include\msw
-DUMMY=$(WXDIR)\src\msw\dummy.obj
-
-# Set this to nothing if using MS C++ 7
-ZOPTION=/Z7
-
-!ifndef FINAL
-FINAL=0
-!endif
-
-DEBUGFLAG=#/DDEBUG=1
-
-!if "$(FINAL)" == "0"
-CPPFLAGS=/AL /W3 /Zi $(ZOPTION) /G2sw /Od $(INC) $(DEBUGFLAG) /YuWX_PREC.H /Dwx_msw /Fp$(WXDIR)\src\msw\wx.pch
-LINKFLAGS=/NOD /NOE /CO /ONERROR:NOEXE /SEG:256
-!else
-CPPFLAGS=/AL /W3 /G2sw $(INC) /Ox /YuWX_PREC.H /Dwx_msw /Fp$(WXDIR)\src\msw\wx.pch
-LINKFLAGS=/NOD /ONERROR:NOEXE /SEG:256
-!endif
-
-HEADERS = printing.h
-SOURCES = printing.$(SRCSUFF)
-OBJECTS = printing.obj
-
-printing:    printing.exe
-
-all:    wx printing.exe
-
-wx:
-        cd $(WXDIR)\src\msw
-        nmake -f makefile.dos FINAL=$(FINAL)
-        cd $(THISDIR)
-
-wxclean:
-        cd $(WXDIR)\src\msw
-        nmake -f makefile.dos clean
-        cd $(THISDIR)
-
-
-printing.exe:      $(DUMMY) $(WXLIB) printing.obj printing.def printing.res
-        link $(LINKFLAGS) @<<
-$(DUMMY) printing.obj,
-printing,
-NUL,
-$(LIBS),
-printing.def
-;
-<<
-        rc -31 -K printing.res
-
-printing.obj:      printing.h printing.$(SRCSUFF) $(DUMMY) $(WXDIR)\include\base\wx_print.h
-        cl @<<
-$(CPPFLAGS) /c /Tp $*.$(SRCSUFF)
-<<
-
-printing.res :      printing.rc $(WXDIR)\include\msw\wx.rc
-    rc -r /i$(WXDIR)\include\msw /i$(WXDIR)\contrib\fafa printing
-
-clean:
-        -erase *.obj
-        -erase *.exe
-        -erase *.res
-        -erase *.map
-        -erase *.sbr
-        -erase *.pdb
+TARGET=printing
+OBJECTS=$(TARGET).obj
 
+!include $(WXDIR)\src\makeprog.msc
 
diff --git a/samples/resource/makefile.dos b/samples/resource/makefile.dos
index 6096ca810c..351562fe3c 100644
--- a/samples/resource/makefile.dos
+++ b/samples/resource/makefile.dos
@@ -1,86 +1,17 @@
 #
 # File:		makefile.dos
 # Author:	Julian Smart
-# Created:	1993
+# Created:	1998
 # Updated:	
-# Copyright:	(c) 1993, AIAI, University of Edinburgh
 #
-# "%W% %G%"
-#
-# Makefile : Builds resource example (DOS).
+# Makefile : Builds 16-bit sample, VC++ 1.5
 # Use FINAL=1 argument to nmake to build final version with no debugging
-# info.
+# info
 
-# Set WXDIR for your system
 WXDIR = $(WXWIN)
 
-!include $(WXDIR)\src\makemsc.env
-
-THISDIR = $(WXDIR)\samples\resource
-WXLIB = $(WXDIR)\lib\wx.lib
-LIBS=$(WXLIB) oldnames libw llibcew commdlg ddeml shell mmsystem
-INC=-I$(WXDIR)\include\base -I$(WXDIR)\include\msw
-DUMMY=$(WXDIR)\src\msw\dummy.obj
-
-# Set this to nothing if using MS C++ 7
-ZOPTION=/Z7
-
-!ifndef FINAL
-FINAL=0
-!endif
-
-PRECOMP = /YuWX_PREC.H /Fp$(WXDIR)\src\msw\wx.pch
-
-!if "$(FINAL)" == "0"
-CPPFLAGS=/AL /W3 /Zi $(ZOPTION) /G2sw /Od $(INC) $(PRECOMP) /Dwx_msw
-LINKFLAGS=/NOD /CO /ONERROR:NOEXE /SEG:256
-!else
-CPPFLAGS=/AL /W3 /G2sw $(INC) /Ox $(PRECOMP) /Dwx_msw
-LINKFLAGS=/NOD /ONERROR:NOEXE /SEG:256
-!endif
-
-HEADERS = resource.h
-SOURCES = resource.$(SRCSUFF)
-OBJECTS = resource.obj
-
-resource:    resource.exe
-
-all:    wx resource.exe
-
-wx:
-        cd $(WXDIR)\src\msw
-        nmake -f makefile.dos FINAL=$(FINAL)
-        cd $(THISDIR)
-
-wxclean:
-        cd $(WXDIR)\src\msw
-        nmake -f makefile.dos clean
-        cd $(THISDIR)
-
-
-resource.exe:      $(DUMMY) $(WXLIB) resource.obj resource.def resource.res
-        link $(LINKFLAGS) @<<
-$(DUMMY) resource.obj,
-resource,
-NUL,
-$(LIBS),
-resource.def
-;
-<<
-        rc -31 -K resource.res
-
-resource.obj:      resource.h resource.$(SRCSUFF) dialog1.wxr $(DUMMY)
-        cl @<<
-$(CPPFLAGS) /c /Tp $*.$(SRCSUFF)
-<<
+TARGET=resource
+OBJECTS=$(TARGET).obj
 
-resource.res :      resource.rc $(WXDIR)\include\msw\wx.rc
-    rc -r /i$(WXDIR)\include\msw /i$(WXDIR)\contrib\fafa resource
+!include $(WXDIR)\src\makeprog.msc
 
-clean:
-        -erase *.obj
-        -erase *.exe
-        -erase *.res
-        -erase *.map
-        -erase *.sbr
-        -erase *.pdb
diff --git a/samples/toolbar/test.cpp b/samples/toolbar/test.cpp
index 5758c9f800..889c478a13 100644
--- a/samples/toolbar/test.cpp
+++ b/samples/toolbar/test.cpp
@@ -70,7 +70,7 @@ bool MyApp::OnInit(void)
   frame->SetMenuBar(menuBar);
 
   // Create the toolbar
-  frame->CreateToolBar(wxNO_BORDER|wxHORIZONTAL|wxTB_FLAT|wxTB_DOCKABLE, ID_TOOLBAR);
+  frame->CreateToolBar(wxNO_BORDER|wxTB_HORIZONTAL|wxTB_FLAT|wxTB_DOCKABLE, ID_TOOLBAR);
   
   frame->GetToolBar()->SetMargins( 2, 2 );
 
diff --git a/samples/validate/validate.def b/samples/validate/validate.def
index f49fa9473e..e4d87cc7df 100644
--- a/samples/validate/validate.def
+++ b/samples/validate/validate.def
@@ -1,4 +1,3 @@
-      *   Last change:  JS   13 Mar 97    5:02 pm
 NAME         Events
 DESCRIPTION  'Event tester'
 EXETYPE      WINDOWS
diff --git a/src/common/event.cpp b/src/common/event.cpp
index 2b596a135e..713c0fdac6 100644
--- a/src/common/event.cpp
+++ b/src/common/event.cpp
@@ -429,7 +429,6 @@ bool wxEvtHandler::SearchEventTable(wxEventTable& table, wxEvent& event)
     }
     return FALSE;
 }
-
 void wxEvtHandler::Connect( int id, int lastId,
                             wxEventType eventType,
                             wxObjectEventFunction func,
diff --git a/src/common/prntbase.cpp b/src/common/prntbase.cpp
index 23e49e721e..c85848e897 100644
--- a/src/common/prntbase.cpp
+++ b/src/common/prntbase.cpp
@@ -39,6 +39,7 @@
 #include "wx/prntbase.h"
 #include "wx/dcprint.h"
 #include "wx/printdlg.h"
+#include "wx/module.h"
 
 #include <stdlib.h>
 #include <string.h>
@@ -66,6 +67,7 @@ IMPLEMENT_CLASS(wxPreviewCanvas, wxWindow)
 IMPLEMENT_CLASS(wxPreviewControlBar, wxWindow)
 IMPLEMENT_CLASS(wxPreviewFrame, wxFrame)
 IMPLEMENT_CLASS(wxPrintPreviewBase, wxObject)
+IMPLEMENT_DYNAMIC_CLASS(wxPrintPaperType, wxObject)
 
 BEGIN_EVENT_TABLE(wxPrintAbortDialog, wxDialog)
 	EVT_BUTTON(wxID_CANCEL, wxPrintAbortDialog::OnCancel)
@@ -758,3 +760,121 @@ void wxPrintPreviewBase::SetZoom(int percent)
     m_previewCanvas->Refresh();
   }
 }
+
+/*
+ * Paper size database for PostScript or where the generic page setup dialog is
+ * needed
+ */
+
+wxPrintPaperType::wxPrintPaperType(const char *name, int wmm, int hmm, int wp, int hp)
+{
+  widthMM = wmm;
+  heightMM = hmm;
+  widthPixels = wp;
+  heightPixels = hp;
+  pageName = copystring(name);
+}
+
+wxPrintPaperType::~wxPrintPaperType()
+{
+  delete[] pageName;
+}
+
+/*
+ * Print paper database for PostScript
+ */
+
+wxPrintPaperDatabase* wxThePrintPaperDatabase = (wxPrintPaperDatabase*) NULL;
+
+#if !USE_SHARED_LIBRARIES
+IMPLEMENT_DYNAMIC_CLASS(wxPrintPaperDatabase, wxList)
+#endif
+
+wxPrintPaperDatabase::wxPrintPaperDatabase():wxList(wxKEY_STRING)
+{
+  DeleteContents(TRUE);
+}
+
+wxPrintPaperDatabase::~wxPrintPaperDatabase()
+{
+}
+
+void wxPrintPaperDatabase::CreateDatabase()
+{
+  // Need correct values for page size in pixels.
+  // Each unit is one 'point' = 1/72 of an inch.
+  // NOTE: WE NEED ALSO TO MAKE ADJUSTMENTS WHEN TRANSLATING
+  // in wxPostScriptDC code, so we can start from top left.
+  // So access this database and translate by appropriate number
+  // of points for this paper size. OR IS IT OK ALREADY?
+  // Can't remember where the PostScript origin is by default.
+  // Heck, someone will know how to make it hunky-dory...
+  // JACS 25/5/95
+
+  AddPaperType(_("A4 210 x 297 mm"), 210, 297,         595, 842);
+  AddPaperType(_("A3 297 x 420 mm"), 297, 420,         842, 1191);
+  AddPaperType(_("Letter 8 1/2 x 11 in"), 216, 279,    612, 791);
+  AddPaperType(_("Legal 8 1/2 x 14 in"), 216, 356,     612, 1009);
+  
+/*
+  This is for 100 ppi
+
+  AddPaperType(_("A4 210 x 297 mm"), 210, 297,         210*4, 297*4 );
+  AddPaperType(_("A3 297 x 420 mm"), 297, 420,         297*4, 420*4 );
+  AddPaperType(_("Letter 8 1/2 x 11 in"), 216, 279,    216*4, 279*4 );
+  AddPaperType(_("Legal 8 1/2 x 14 in"), 216, 356,     216*4, 356*4 );
+*/
+}
+
+void wxPrintPaperDatabase::ClearDatabase()
+{
+  Clear();
+}
+
+void wxPrintPaperDatabase::AddPaperType(const char *name, int wmm, int hmm, int wp, int hp)
+{
+  Append(name, new wxPrintPaperType(name, wmm, hmm, wp, hp));
+}
+
+wxPrintPaperType *wxPrintPaperDatabase::FindPaperType(const char *name)
+{
+  wxNode *node = Find(name);
+  if (node)
+    return (wxPrintPaperType *)node->Data();
+  else
+    return (wxPrintPaperType *) NULL;
+}
+
+// A module to allow initialization/cleanup of print paper
+// things without calling these functions from app.cpp.
+
+class WXDLLEXPORT wxPrintBaseModule: public wxModule
+{
+DECLARE_DYNAMIC_CLASS(wxPrintBaseModule)
+public:
+    wxPrintBaseModule() {}
+    bool OnInit();
+    void OnExit();
+};
+
+IMPLEMENT_DYNAMIC_CLASS(wxPrintBaseModule, wxModule)
+
+/*
+ * Initialization/cleanup module
+ */
+
+bool wxPrintBaseModule::OnInit()
+{
+    wxThePrintPaperDatabase = new wxPrintPaperDatabase;
+    wxThePrintPaperDatabase->CreateDatabase();
+
+    return TRUE;
+}
+
+void wxPrintBaseModule::OnExit()
+{
+    delete wxThePrintPaperDatabase;
+    wxThePrintPaperDatabase = NULL;
+}
+
+
diff --git a/src/common/tbarsmpl.cpp b/src/common/tbarsmpl.cpp
index 0e1a739d29..10d7117d60 100644
--- a/src/common/tbarsmpl.cpp
+++ b/src/common/tbarsmpl.cpp
@@ -66,6 +66,7 @@ bool wxToolBarSimple::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos
   m_yMargin = 0;
   m_toolPacking = 1;
   m_toolSeparation = 5;
+  SetCursor(*wxSTANDARD_CURSOR);
   
   return TRUE;
 }
diff --git a/src/common/valtext.cpp b/src/common/valtext.cpp
index 259b201326..d3fa339c47 100644
--- a/src/common/valtext.cpp
+++ b/src/common/valtext.cpp
@@ -134,7 +134,7 @@ bool wxTextValidator::Validate(wxWindow *parent)
 
     wxString val(control->GetValue());
 
-    bool ok = true;
+    bool ok = TRUE;
 
     // this format string should contian exactly one '%s'
     const char *errormsg = _("'%s' is invalid");
@@ -143,37 +143,37 @@ bool wxTextValidator::Validate(wxWindow *parent)
     {
         if ( !m_includeList.Member(val) )
         {
-            ok = false;
+            ok = FALSE;
         }
     }
     else if ( m_validatorStyle & wxFILTER_EXCLUDE_LIST )
     {
         if ( m_excludeList.Member(val) )
         {
-            ok = false;
+            ok = FALSE;
         }
     }
     else if ( (m_validatorStyle & wxFILTER_ASCII) && !val.IsAscii() )
     {
-        ok = false;
+        ok = FALSE;
 
         errormsg = _("'%s' should only contain ASCII characters.");
     }
     else if ( (m_validatorStyle & wxFILTER_ALPHA) && !wxIsAlpha(val) )
     {
-        ok = false;
+        ok = FALSE;
 
         errormsg = _("'%s' should only contain alphabetic characters.");
     }
     else if ( (m_validatorStyle & wxFILTER_ALPHANUMERIC) && !wxIsAlphaNumeric(val))
     {
-        ok = false;
+        ok = FALSE;
 
         errormsg = _("'%s' should only contain alphabetic or numeric characters.");
     }
     else if ( (m_validatorStyle & wxFILTER_NUMERIC) && !wxIsNumeric(val))
     {
-        ok = false;
+        ok = FALSE;
 
         errormsg = _("'%s' should be numeric.");
     }
diff --git a/src/generic/choicdgg.cpp b/src/generic/choicdgg.cpp
index 4fd5d33454..46f8fdc3b9 100644
--- a/src/generic/choicdgg.cpp
+++ b/src/generic/choicdgg.cpp
@@ -203,7 +203,7 @@ IMPLEMENT_CLASS(wxSingleChoiceDialog, wxDialog)
 
 wxSingleChoiceDialog::wxSingleChoiceDialog(wxWindow *parent, const wxString& message, const wxString& caption,
         int n, const wxString *choices, char **clientData, long style, const wxPoint& pos):
-	  wxDialog(parent, -1, caption, pos, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL)
+	  wxDialog(parent, -1, caption, pos, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL|wxTAB_TRAVERSAL)
 {
         Create(parent, message, caption, n, choices, clientData, style);
 }
diff --git a/src/generic/dcpsg.cpp b/src/generic/dcpsg.cpp
index f592a769c8..039151f007 100644
--- a/src/generic/dcpsg.cpp
+++ b/src/generic/dcpsg.cpp
@@ -1837,10 +1837,8 @@ void wxPostScriptDC::GetSizeMM(long *width, long *height) const
 wxPrintSetupData *wxThePrintSetupData = (wxPrintSetupData *) NULL;
 
 #if !USE_SHARED_LIBRARY
-IMPLEMENT_DYNAMIC_CLASS(wxPostScriptModule, wxModule)
 IMPLEMENT_DYNAMIC_CLASS(wxPostScriptDC, wxDC)
 IMPLEMENT_DYNAMIC_CLASS(wxPrintSetupData, wxObject)
-IMPLEMENT_DYNAMIC_CLASS(wxPrintPaperType, wxObject)
 #endif
 
 // Redundant now I think
@@ -2338,86 +2336,19 @@ void wxInitializePrintSetupData(bool init)
   }
 }
 
-/*
- * Paper size database for PostScript
- */
-
-wxPrintPaperType::wxPrintPaperType(const char *name, int wmm, int hmm, int wp, int hp)
-{
-  widthMM = wmm;
-  heightMM = hmm;
-  widthPixels = wp;
-  heightPixels = hp;
-  pageName = copystring(name);
-}
-
-wxPrintPaperType::~wxPrintPaperType()
-{
-  delete[] pageName;
-}
-
-/*
- * Print paper database for PostScript
- */
-
-#if !USE_SHARED_LIBRARIES
-IMPLEMENT_DYNAMIC_CLASS(wxPrintPaperDatabase, wxList)
-#endif
-
-wxPrintPaperDatabase::wxPrintPaperDatabase():wxList(wxKEY_STRING)
-{
-  DeleteContents(TRUE);
-}
-
-wxPrintPaperDatabase::~wxPrintPaperDatabase()
-{
-}
-
-void wxPrintPaperDatabase::CreateDatabase()
-{
-  // Need correct values for page size in pixels.
-  // Each unit is one 'point' = 1/72 of an inch.
-  // NOTE: WE NEED ALSO TO MAKE ADJUSTMENTS WHEN TRANSLATING
-  // in wxPostScriptDC code, so we can start from top left.
-  // So access this database and translate by appropriate number
-  // of points for this paper size. OR IS IT OK ALREADY?
-  // Can't remember where the PostScript origin is by default.
-  // Heck, someone will know how to make it hunky-dory...
-  // JACS 25/5/95
-
-  AddPaperType(_("A4 210 x 297 mm"), 210, 297,         595, 842);
-  AddPaperType(_("A3 297 x 420 mm"), 297, 420,         842, 1191);
-  AddPaperType(_("Letter 8 1/2 x 11 in"), 216, 279,    612, 791);
-  AddPaperType(_("Legal 8 1/2 x 14 in"), 216, 356,     612, 1009);
-  
-/*
-  This is for 100 ppi
-
-  AddPaperType(_("A4 210 x 297 mm"), 210, 297,         210*4, 297*4 );
-  AddPaperType(_("A3 297 x 420 mm"), 297, 420,         297*4, 420*4 );
-  AddPaperType(_("Letter 8 1/2 x 11 in"), 216, 279,    216*4, 279*4 );
-  AddPaperType(_("Legal 8 1/2 x 14 in"), 216, 356,     216*4, 356*4 );
-*/
-}
+// A module to allow initialization/cleanup of PostScript-related
+// things without calling these functions from app.cpp.
 
-void wxPrintPaperDatabase::ClearDatabase()
+class WXDLLEXPORT wxPostScriptModule: public wxModule
 {
-  Clear();
-}
-
-void wxPrintPaperDatabase::AddPaperType(const char *name, int wmm, int hmm, int wp, int hp)
-{
-  Append(name, new wxPrintPaperType(name, wmm, hmm, wp, hp));
-}
+DECLARE_DYNAMIC_CLASS(wxPostScriptModule)
+public:
+    wxPostScriptModule() {}
+    bool OnInit();
+    void OnExit();
+};
 
-wxPrintPaperType *wxPrintPaperDatabase::FindPaperType(const char *name)
-{
-  wxNode *node = Find(name);
-  if (node)
-    return (wxPrintPaperType *)node->Data();
-  else
-    return (wxPrintPaperType *) NULL;
-}
+IMPLEMENT_DYNAMIC_CLASS(wxPostScriptModule, wxModule)
 
 /*
  * Initialization/cleanup module
@@ -2426,8 +2357,6 @@ wxPrintPaperType *wxPrintPaperDatabase::FindPaperType(const char *name)
 bool wxPostScriptModule::OnInit()
 {
     wxInitializePrintSetupData();
-    wxThePrintPaperDatabase = new wxPrintPaperDatabase;
-    wxThePrintPaperDatabase->CreateDatabase();
 
     return TRUE;
 }
@@ -2435,8 +2364,6 @@ bool wxPostScriptModule::OnInit()
 void wxPostScriptModule::OnExit()
 {
     wxInitializePrintSetupData(FALSE);
-    delete wxThePrintPaperDatabase;
-    wxThePrintPaperDatabase = NULL;
 }
 
 #endif
diff --git a/src/generic/prntdlgg.cpp b/src/generic/prntdlgg.cpp
index 1e9e94156f..b1ff434de5 100644
--- a/src/generic/prntdlgg.cpp
+++ b/src/generic/prntdlgg.cpp
@@ -39,12 +39,21 @@
 #endif
 
 #include "wx/generic/prntdlgg.h"
+
+#if wxUSE_POSTSCRIPT
 #include "wx/generic/dcpsg.h"
+#endif
+
 #include "wx/printdlg.h"
 
+// For print paper things
+#include "wx/prntbase.h"
+
 #include <stdlib.h>
 #include <string.h>
 
+#if wxUSE_POSTSCRIPT
+
 #if !USE_SHARED_LIBRARY
 IMPLEMENT_CLASS(wxGenericPrintDialog, wxDialog)
 IMPLEMENT_CLASS(wxGenericPrintSetupDialog, wxDialog)
@@ -69,7 +78,7 @@ extern wxPrintPaperDatabase *wxThePrintPaperDatabase;
 
 
 wxGenericPrintDialog::wxGenericPrintDialog(wxWindow *parent, wxPrintData* data):
-  wxDialog(parent, -1, _("Print"), wxPoint(0, 0), wxSize(600, 600), wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL)
+  wxDialog(parent, -1, _("Print"), wxPoint(0, 0), wxSize(600, 600), wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL|wxTAB_TRAVERSAL)
 {
   if ( data )
     printData = *data;
@@ -274,7 +283,7 @@ wxDC *wxGenericPrintDialog::GetPrintDC(void)
  */
 
 wxGenericPrintSetupDialog::wxGenericPrintSetupDialog(wxWindow *parent, wxPrintSetupData* data):
-  wxDialog(parent, -1, _("Print Setup"), wxPoint(0, 0), wxSize(600, 600), wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL)
+  wxDialog(parent, -1, _("Print Setup"), wxPoint(0, 0), wxSize(600, 600), wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL|wxTAB_TRAVERSAL)
 {
   if ( data )
     printData = *data;
@@ -408,6 +417,8 @@ wxChoice *wxGenericPrintSetupDialog::CreatePaperTypeChoice(int *x, int *y)
   choice->SetSelection(sel);
   return choice;
 }
+#endif
+  // wxUSE_POSTSCRIPT
 
 /*
  * Generic page setup dialog
@@ -429,33 +440,10 @@ void wxGenericPageSetupDialog::OnPrinter(wxCommandEvent& WXUNUSED(event))
     printDialog->ShowModal();
 
     printDialog->Destroy();
-
-#if 0
-  if (wxTheApp->GetPrintMode() == wxPRINT_POSTSCRIPT)
-  {
-    wxGenericPrintSetupDialog *genericPrintSetupDialog =
-          new wxGenericPrintSetupDialog(this, wxThePrintSetupData);
-    int ret = genericPrintSetupDialog->ShowModal();
-    if (ret == wxID_OK)
-      *wxThePrintSetupData = genericPrintSetupDialog->GetPrintData();
-
-    genericPrintSetupDialog->Close(TRUE);
-  }
-#ifdef __WXMSW__
-  else
-  {
-    wxPrintData data;
-    data.SetSetupDialog(TRUE);
-    wxPrintDialog printDialog(this, & data);
-    printDialog.ShowModal();
-  }
-#endif
-#endif
-  // 0
 }
 
 wxGenericPageSetupDialog::wxGenericPageSetupDialog(wxWindow *parent, wxPageSetupData* data):
-  wxDialog(parent, -1, _("Page Setup"), wxPoint(0, 0), wxSize(600, 600), wxDIALOG_MODAL|wxDEFAULT_DIALOG_STYLE)
+  wxDialog(parent, -1, _("Page Setup"), wxPoint(0, 0), wxSize(600, 600), wxDIALOG_MODAL|wxDEFAULT_DIALOG_STYLE|wxTAB_TRAVERSAL)
 {
   if ( data )
     pageData = *data;
@@ -583,12 +571,16 @@ bool wxGenericPageSetupDialog::TransferDataFromWindow(void)
     int sel = orientationRadioBox->GetSelection();
     if (sel == 0)
     {
+#if wxUSE_POSTSCRIPT
       wxThePrintSetupData->SetPrinterOrientation(wxPORTRAIT);
+#endif
       pageData.SetOrientation(wxPORTRAIT);
     }
     else
     {
+#if wxUSE_POSTSCRIPT
       wxThePrintSetupData->SetPrinterOrientation(wxLANDSCAPE);
+#endif
       pageData.SetOrientation(wxLANDSCAPE);
     }
   }
diff --git a/src/generic/textdlgg.cpp b/src/generic/textdlgg.cpp
index d4ce2cdc1d..aca40ee5d9 100644
--- a/src/generic/textdlgg.cpp
+++ b/src/generic/textdlgg.cpp
@@ -79,7 +79,7 @@ static void wxSplitMessage2(const char *message, wxList *messageList, wxWindow *
 
 wxTextEntryDialog::wxTextEntryDialog(wxWindow *parent, const wxString& message, const wxString& caption,
         const wxString& value, long style, const wxPoint& pos):
-	wxDialog(parent, -1, caption, pos, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL)
+	wxDialog(parent, -1, caption, pos, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL|wxTAB_TRAVERSAL)
 {
 	m_dialogStyle = style;
 	m_value = value;
diff --git a/src/gtk/data.cpp b/src/gtk/data.cpp
index 324dc713bc..39b6114278 100644
--- a/src/gtk/data.cpp
+++ b/src/gtk/data.cpp
@@ -59,7 +59,9 @@ char *wxOsVersion = (char *) NULL;
 
 /* For printing several pages */
 int wxPageNumber;
-wxPrintPaperDatabase* wxThePrintPaperDatabase = (wxPrintPaperDatabase *) NULL;
+
+// Now in prntbase.cpp
+// wxPrintPaperDatabase* wxThePrintPaperDatabase = (wxPrintPaperDatabase *) NULL;
 
 /* GDI Object Lists */
 wxBrushList      *wxTheBrushList = (wxBrushList *) NULL;
diff --git a/src/gtk1/data.cpp b/src/gtk1/data.cpp
index 324dc713bc..39b6114278 100644
--- a/src/gtk1/data.cpp
+++ b/src/gtk1/data.cpp
@@ -59,7 +59,9 @@ char *wxOsVersion = (char *) NULL;
 
 /* For printing several pages */
 int wxPageNumber;
-wxPrintPaperDatabase* wxThePrintPaperDatabase = (wxPrintPaperDatabase *) NULL;
+
+// Now in prntbase.cpp
+// wxPrintPaperDatabase* wxThePrintPaperDatabase = (wxPrintPaperDatabase *) NULL;
 
 /* GDI Object Lists */
 wxBrushList      *wxTheBrushList = (wxBrushList *) NULL;
diff --git a/src/mac/carbon/data.cpp b/src/mac/carbon/data.cpp
index 7143aa5e95..138289a5bf 100644
--- a/src/mac/carbon/data.cpp
+++ b/src/mac/carbon/data.cpp
@@ -131,10 +131,6 @@ const char *wxFatalErrorStr = "wxWindows Fatal Error";
 const char *wxFloatToStringStr = "%.2f";
 const char *wxDoubleToStringStr = "%.2f";
 
-#if wxUSE_POSTSCRIPT
-wxPrintPaperDatabase* wxThePrintPaperDatabase = NULL;
-#endif
-
 #if wxUSE_SHARED_LIBRARY
 ///// Event tables (also must be in one, statically-linked file for shared libraries)
 
diff --git a/src/mac/data.cpp b/src/mac/data.cpp
index 7143aa5e95..138289a5bf 100644
--- a/src/mac/data.cpp
+++ b/src/mac/data.cpp
@@ -131,10 +131,6 @@ const char *wxFatalErrorStr = "wxWindows Fatal Error";
 const char *wxFloatToStringStr = "%.2f";
 const char *wxDoubleToStringStr = "%.2f";
 
-#if wxUSE_POSTSCRIPT
-wxPrintPaperDatabase* wxThePrintPaperDatabase = NULL;
-#endif
-
 #if wxUSE_SHARED_LIBRARY
 ///// Event tables (also must be in one, statically-linked file for shared libraries)
 
diff --git a/src/motif/data.cpp b/src/motif/data.cpp
index e980207553..bbe4fe2ad7 100644
--- a/src/motif/data.cpp
+++ b/src/motif/data.cpp
@@ -128,10 +128,6 @@ const char *wxFatalErrorStr = "wxWindows Fatal Error";
 const char *wxFloatToStringStr = "%.2f";
 const char *wxDoubleToStringStr = "%.2f";
 
-#if wxUSE_POSTSCRIPT
-wxPrintPaperDatabase* wxThePrintPaperDatabase = NULL;
-#endif
-
 #if wxUSE_SHARED_LIBRARY
 ///// Event tables (also must be in one, statically-linked file for shared libraries)
 
diff --git a/src/msw/app.cpp b/src/msw/app.cpp
index 9e1d6f64e4..b87a7a9f14 100644
--- a/src/msw/app.cpp
+++ b/src/msw/app.cpp
@@ -491,6 +491,7 @@ void wxApp::CleanUp()
     // (double deletion of the cursor).
     wxSetCursor(wxNullCursor);
     delete g_globalCursor;
+    g_globalCursor = NULL;
 
     wxDeleteStockObjects() ;
 
@@ -932,6 +933,7 @@ void wxApp::Dispatch()
  * the message. Some may have accelerator tables, or have
  * MDI complications.
  */
+
 bool wxApp::ProcessMessage(WXMSG *wxmsg)
 {
     MSG *msg = (MSG *)wxmsg;
diff --git a/src/msw/button.cpp b/src/msw/button.cpp
index 661ddad461..764c28db6f 100644
--- a/src/msw/button.cpp
+++ b/src/msw/button.cpp
@@ -78,11 +78,6 @@ bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label,
                     0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId,
                     wxGetInstance(), NULL);
 
-#if wxUSE_CTL3D
-//  if (!(GetParent()->GetWindowStyleFlag() & wxUSER_COLOURS))
-//    Ctl3dSubclassCtl(wx_button);
-#endif
-
   m_hWnd = (WXHWND)wx_button;
 
   // Subclass again for purposes of dialog editing mode
diff --git a/src/msw/control.cpp b/src/msw/control.cpp
index d027e9d5e5..bcbd6f38ff 100644
--- a/src/msw/control.cpp
+++ b/src/msw/control.cpp
@@ -53,6 +53,7 @@ wxControl::wxControl(void)
   m_backgroundColour = *wxWHITE;
   m_foregroundColour = *wxBLACK;
   m_callback = 0;
+//  m_windowCursor = wxNullCursor; // To avoid the standard cursor being used
 }
 
 wxControl::~wxControl(void)
diff --git a/src/msw/data.cpp b/src/msw/data.cpp
index 32bc09daff..e7e0283111 100644
--- a/src/msw/data.cpp
+++ b/src/msw/data.cpp
@@ -24,6 +24,8 @@
 #include "wx/wx.h"
 #endif
 
+#include "wx/prntbase.h"
+
 #define _MAXPATHLEN 500
 
 // Useful buffer, initialized in wxCommonInit
@@ -154,11 +156,6 @@ const char *wxDoubleToStringStr = "%.2f";
 const char *wxUserResourceStr = "TEXT";
 #endif
 
-#if wxUSE_POSTSCRIPT
-class wxPrintPaperDatabase;
-wxPrintPaperDatabase* wxThePrintPaperDatabase = NULL;
-#endif
-
 #if wxUSE_SHARED_LIBRARY
 /*
  * For wxWindows to be made into a dynamic library (e.g. Sun),
@@ -319,9 +316,10 @@ IMPLEMENT_CLASS(wxGenericPrintSetupDialog, wxDialog)
 IMPLEMENT_DYNAMIC_CLASS(wxPostScriptDC, wxDC)
 IMPLEMENT_DYNAMIC_CLASS(wxPrintSetupData, wxObject)
 IMPLEMENT_DYNAMIC_CLASS(wxPageSetupData, wxObject)
+#endif
+
 IMPLEMENT_DYNAMIC_CLASS(wxPrintPaperType, wxObject)
 IMPLEMENT_DYNAMIC_CLASS(wxPrintPaperDatabase, wxList)
-#endif
 
 #if wxUSE_WX_RESOURCES
 #include "wx/resource.h"
diff --git a/src/msw/dialog.cpp b/src/msw/dialog.cpp
index 14f2cfb07d..60ee421c69 100644
--- a/src/msw/dialog.cpp
+++ b/src/msw/dialog.cpp
@@ -208,13 +208,13 @@ void wxDialog::OnCharHook(wxKeyEvent& event)
   {
     if (event.m_keyCode == WXK_ESCAPE)
     {
-    // Behaviour changed in 2.0: we'll send a Cancel message
-    // to the dialog instead of Close.
-    wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL);
-    cancelEvent.SetEventObject( this );
-    GetEventHandler()->ProcessEvent(cancelEvent);
+        // Behaviour changed in 2.0: we'll send a Cancel message
+        // to the dialog instead of Close.
+        wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL);
+        cancelEvent.SetEventObject( this );
+        GetEventHandler()->ProcessEvent(cancelEvent);
 
-    return;
+        return;
     }
   }
   // We didn't process this event.
@@ -557,7 +557,7 @@ void wxDialog::OnCancel(wxCommandEvent& event)
     else
     {
         SetReturnCode(wxID_CANCEL);
-    this->Show(FALSE);
+        this->Show(FALSE);
     }
 }
 
diff --git a/src/msw/makefile.dos b/src/msw/makefile.dos
index adba1c6dd1..1efd525aeb 100644
--- a/src/msw/makefile.dos
+++ b/src/msw/makefile.dos
@@ -70,6 +70,7 @@ GENERICOBJS= \
   $(GENDIR)\statusbr.obj \
   $(GENDIR)\tabg.obj \
   $(GENDIR)\textdlgg.obj\
+  $(GENDIR)\prntdlgg.obj \
   $(GENDIR)\treectrl.obj
 
 # Don't need these generic objects for Windows
@@ -77,7 +78,6 @@ GENERICOBJS= \
 #  $(GENDIR)\fontdlgg.obj \
 #  $(GENDIR)\colrdlgg.obj \
 #  $(GENDIR)\printps.obj \
-#  $(GENDIR)\prntdlgg.obj \
 # $(GENDIR)\helpxlp.obj \
  
 COMMONOBJS = \
diff --git a/src/msw/mdi.cpp b/src/msw/mdi.cpp
index 1e91b0cbcf..d22ac24e76 100644
--- a/src/msw/mdi.cpp
+++ b/src/msw/mdi.cpp
@@ -289,53 +289,6 @@ void wxMDIParentFrame::OnActivate(wxActivateEvent& event)
 	// Do nothing
 }
 
-#if WXWIN_COMPATIBILITY
-/*
-void wxMDIParentFrame::OldOnSize(int x, int y)
-{
-#if WXWIN_COMPATIBILITY == 1
-  wxSizeEvent event(wxSize(x, y), m_windowId);
-  event.SetEventObject( this );
-  GetEventHandler()->ProcessEvent(event);
-#else
-
-#if wxUSE_CONSTRAINTS
-  if (GetAutoLayout())
-    Layout();
-#endif
-  int x = 0;
-  int y = 0;
-  int width, height;
-  GetClientSize(&width, &height);
-  if ( GetToolBar() )
-  {
-      int wt, ht;
-      GetToolBar()->GetSize(&wt, &ht);
-      height -= ht;
-      y += ht;
-  }
-
-  if ( GetClientWindow() )
-      GetClientWindow()->SetSize(x, y, width, height);
-
-#endif
-}
-
-// Default activation behaviour - nothing.
-// Default activation behaviour - override dedault wxFrame behaviour
-void wxMDIParentFrame::OldOnActivate(bool flag)
-{
-#if WXWIN_COMPATIBILITY == 1
-  wxActivateEvent event(wxEVT_ACTIVATE, flag, m_windowId);
-  event.SetEventObject( this );
-  GetEventHandler()->ProcessEvent(event);
-#else
-#endif
-}
-*/
-
-#endif
-
 // Returns the active MDI child window
 wxMDIChildFrame *wxMDIParentFrame::GetActiveChild(void) const
 {
diff --git a/src/msw/radiobox.cpp b/src/msw/radiobox.cpp
index 6ce66a88ea..26e5d29336 100644
--- a/src/msw/radiobox.cpp
+++ b/src/msw/radiobox.cpp
@@ -54,10 +54,12 @@
 #endif // Win32/16
 
 // wnd proc for radio buttons
+#ifdef __WIN32__
 LRESULT APIENTRY _EXPORT wxRadioBtnWndProc(HWND hWnd,
                                            UINT message,
                                            WPARAM wParam,
                                            LPARAM lParam);
+#endif
 
 // ---------------------------------------------------------------------------
 // global vars
@@ -706,14 +708,19 @@ void wxRadioBox::SubclassRadioButton(WXHWND hWndBtn)
     if ( !s_wndprocRadioBtn )
         s_wndprocRadioBtn = (WNDPROC)::GetWindowLong(hwndBtn, GWL_WNDPROC);
 
+    // No GWL_USERDATA in Win16, so omit this subclassing.
+#ifdef __WIN32__
     ::SetWindowLong(hwndBtn, GWL_WNDPROC, (long)wxRadioBtnWndProc);
     ::SetWindowLong(hwndBtn, GWL_USERDATA, (long)this);
+#endif
 }
 
 // ---------------------------------------------------------------------------
 // window proc for radio buttons
 // ---------------------------------------------------------------------------
 
+#ifdef __WIN32__
+
 LRESULT APIENTRY _EXPORT wxRadioBtnWndProc(HWND hwnd,
                                            UINT msg,
                                            WPARAM wParam,
@@ -777,4 +784,5 @@ LRESULT APIENTRY _EXPORT wxRadioBtnWndProc(HWND hwnd,
     else
         return 0;
 }
+#endif
 
diff --git a/src/msw/tbar95.cpp b/src/msw/tbar95.cpp
index 5f26caa413..2cf8e00d61 100644
--- a/src/msw/tbar95.cpp
+++ b/src/msw/tbar95.cpp
@@ -151,10 +151,18 @@ bool wxToolBar95::Create(wxWindow *parent,
         msflags |= TBSTYLE_FLAT;
   }
 
+  bool want3D;
+  WXDWORD exStyle = Determine3DEffects(WS_EX_CLIENTEDGE, &want3D) ;
+
+  // Even with extended styles, need to combine with WS_BORDER
+  // for them to look right.
+  if ( want3D || wxStyleHasBorder(m_windowStyle) )
+      msflags |= WS_BORDER;
+
   // Create the toolbar control.
   HWND hWndToolbar = CreateWindowEx
                      (
-                      0L,                       // No extended styles.
+                      exStyle,                  // Extended styles.
                       TOOLBARCLASSNAME,         // Class name for the toolbar.
                       "",                       // No default text.
                       msflags,                  // Styles
@@ -428,7 +436,8 @@ void wxToolBar95::GetSize(int *w, int *h) const
   wxWindow::GetSize(w, h);
   // For some reason, the returned height is several pixels bigger than that
   // displayed!
-  *h -= 2;
+  // Taking this fudge factor out now, it seems fine without it.
+//  *h -= 2;
 }
 
 // The button size is bigger than the bitmap size
diff --git a/src/msw/tbarmsw.cpp b/src/msw/tbarmsw.cpp
index 625cfafd02..2e5fdab316 100644
--- a/src/msw/tbarmsw.cpp
+++ b/src/msw/tbarmsw.cpp
@@ -465,12 +465,20 @@ void wxToolBarMSW::Layout(void)
     node = node->Next();
   }
   if ( GetWindowStyleFlag() & wxTB_HORIZONTAL )
+  {
     m_maxWidth += maxToolWidth;
+    m_maxHeight += maxToolHeight;
+  }
   else
+  {
+    m_maxWidth += maxToolWidth;
     m_maxHeight += maxToolHeight;
+  }
 
   m_maxWidth += m_xMargin;
   m_maxHeight += m_yMargin;
+
+  SetSize(m_maxWidth, m_maxHeight);
 }
 
 
diff --git a/src/msw/textctrl.cpp b/src/msw/textctrl.cpp
index fd62249fe9..bfb35eaa50 100644
--- a/src/msw/textctrl.cpp
+++ b/src/msw/textctrl.cpp
@@ -971,8 +971,11 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
 
         case WXK_RETURN:
         {
+/* Oh yes it will, because we also specify DLGC_WANTCHARS
             wxASSERT_MSG( m_windowStyle & wxTE_PROCESS_ENTER,
                           "this text ctrl should never receive return" );
+*/
+
             if ( (m_windowStyle & wxTE_MULTILINE) == 0 )
             {
                 wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId);
@@ -1007,8 +1010,8 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
     // don't just call event.Skip() because this will cause TABs and ENTERs
     // be passed upwards and we don't always want this - instead process it
     // right here
-    //Default();
-    event.Skip();
+    Default();
+//    event.Skip();
 }
 
 long wxTextCtrl::MSWGetDlgCode()
diff --git a/src/msw/window.cpp b/src/msw/window.cpp
index a3e3a9d727..437b7a3e87 100644
--- a/src/msw/window.cpp
+++ b/src/msw/window.cpp
@@ -59,6 +59,8 @@
 
 #include "wx/msw/private.h"
 
+#include "wx/textctrl.h"
+
 #include <string.h>
 
 #ifndef __GNUWIN32__
@@ -234,6 +236,7 @@ void wxWindow::Init()
     m_isWindow = TRUE;
 
     // Generic
+//    m_windowCursor = * wxSTANDARD_CURSOR;
     m_windowId = 0;
     m_isShown = TRUE;
     m_windowStyle = 0;
@@ -938,7 +941,7 @@ LRESULT APIENTRY _EXPORT wxWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
     #define DIMENSION_TYPE int
 #endif
 
-// Main Windows 3 window proc
+// Main Windows window proc
 long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
 {
     wxASSERT( m_lastMsg == message &&
@@ -1176,6 +1179,7 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
             return MSWOnSysCommand(wParam, lParam);
             break;
         }
+
     case WM_COMMAND:
         {
 #ifdef __WIN32__
@@ -1227,7 +1231,6 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
             return MSWOnMeasureItem((int)wParam, (WXMEASUREITEMSTRUCT *)lParam);
             break;
         }
-
     case WM_KEYDOWN:
         // If this has been processed by an event handler,
         // return 0 now (we've handled it).
@@ -1288,7 +1291,6 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
         }
 
         break;
-
     case WM_KEYUP:
     {
         if (!MSWOnKeyUp((WORD) wParam, lParam))
@@ -1301,7 +1303,6 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
                 return Default();
             break;
         }
-
     case WM_HSCROLL:
         {
 #ifdef __WIN32__
@@ -1479,7 +1480,6 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
                 return 1L;
             break;
         }
-
     case WM_GETMINMAXINFO:
         {
             MINMAXINFO *info = (MINMAXINFO *)lParam;
@@ -1494,10 +1494,10 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
             return MSWDefWindowProc(message, wParam, lParam );
             break;
         }
-
     case WM_GETDLGCODE:
-        return MSWGetDlgCode();
-
+        {
+            return MSWGetDlgCode();
+        }
     case WM_SETCURSOR:
         {
             // don't set cursor for other windows, only for this one: this
@@ -1551,7 +1551,6 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
                 }
             }
         }
-
         return MSWDefWindowProc(message, wParam, lParam );
 
     default:
@@ -2147,6 +2146,7 @@ bool wxWindow::MSWProcessMessage(WXMSG* pMsg)
         if ( ::IsDialogMessage((HWND)GetHWND(), msg) )
             return TRUE;
     }
+
 #if wxUSE_TOOLTIPS
     if ( m_tooltip )
     {
@@ -2157,6 +2157,15 @@ bool wxWindow::MSWProcessMessage(WXMSG* pMsg)
     }
 #endif // wxUSE_TOOLTIPS
 
+    // In case we don't have wxTAB_TRAVERSAL style on.
+    // If we don't call this, we may never process Enter correctly.
+    if ( m_hWnd != 0 && (GetWindowStyleFlag() & wxTAB_TRAVERSAL) == 0 )
+    {
+        MSG *msg = (MSG *)pMsg;
+        if ( ::IsDialogMessage((HWND)GetHWND(), msg) )
+            return TRUE;
+    }
+
     return FALSE;
 }
 
diff --git a/src/stubs/data.cpp b/src/stubs/data.cpp
index 40bcb684e2..aea15f6799 100644
--- a/src/stubs/data.cpp
+++ b/src/stubs/data.cpp
@@ -131,10 +131,6 @@ const char *wxFatalErrorStr = "wxWindows Fatal Error";
 const char *wxFloatToStringStr = "%.2f";
 const char *wxDoubleToStringStr = "%.2f";
 
-#if wxUSE_POSTSCRIPT
-wxPrintPaperDatabase* wxThePrintPaperDatabase = NULL;
-#endif
-
 #if wxUSE_SHARED_LIBRARY
 ///// Event tables (also must be in one, statically-linked file for shared libraries)
 
-- 
2.50.0

