From 750b78ba359e7d30c7d3ad49d268923e986268cb Mon Sep 17 00:00:00 2001
From: Julian Smart <julian@anthemion.co.uk>
Date: Wed, 10 Feb 1999 22:44:53 +0000
Subject: [PATCH] Cured some small doc typos; some WIN16 fixes; transferred DLL
 WinMain to IMPLEMENT_APP() macro so dummy.obj doesn't have to be linked;
 lexer.l fix for LEX (I hope)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1672 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 distrib/msw/generic.rsp        | 12 ++++++++++++
 distrib/msw/gtk.rsp            |  2 ++
 distrib/msw/vc.rsp             |  8 ++++++--
 docs/changes.txt               | 22 ++++++++++++++++++++++
 docs/latex/wx/manual.tex       |  6 +++---
 docs/latex/wx/stream.tex       | 32 ++++++++++++++++----------------
 docs/latex/wx/strmbase.tex     |  2 +-
 docs/latex/wx/strmzlib.tex     |  6 +++---
 docs/latex/wx/textdlg.tex      |  4 ++--
 docs/motif/install.txt         | 28 ++++++++++++++++++++--------
 docs/msw/install.txt           | 10 ++++++++++
 docs/msw/todo.txt              | 10 ++--------
 docs/readme.txt                |  2 +-
 docs/todo.txt                  | 10 ++--------
 include/wx/app.h               | 20 ++++++++++++++++++++
 include/wx/msw/setup0.h        |  3 +++
 include/wx/msw/wx.rc           | 16 ----------------
 src/common/lexer.l             |  2 ++
 src/common/valgen.cpp          | 10 ++++++++++
 src/makeenvs/solaris.env       |  2 +-
 src/motif/makefile.unx         |  4 ++++
 src/motif/utils.cpp            |  6 +++---
 src/msw/app.cpp                |  8 ++++----
 src/msw/dummy.cpp              |  5 ++++-
 src/msw/dummydll.cpp           |  2 +-
 src/msw/makefile.twn           |  2 +-
 src/msw/makefile.vc            |  9 +++++++--
 src/msw/menu.cpp               |  2 ++
 src/msw/utilsexc.cpp           |  2 ++
 src/msw/window.cpp             |  7 ++++++-
 utils/dialoged/src/makefile.vc | 25 ++++++++++++++++---------
 31 files changed, 188 insertions(+), 91 deletions(-)

diff --git a/distrib/msw/generic.rsp b/distrib/msw/generic.rsp
index 6c3d990bef..2f88a7e324 100644
--- a/distrib/msw/generic.rsp
+++ b/distrib/msw/generic.rsp
@@ -203,6 +203,12 @@ samples/wxsocket/client.wat
 samples/wxsocket/server.wat
 samples/wxsocket/client.vc
 samples/wxsocket/server.vc
+samples/wxsocket/client.dos
+samples/wxsocket/server.dos
+samples/wxsocket/client.b32
+samples/wxsocket/server.b32
+samples/wxsocket/client.bcc
+samples/wxsocket/server.bcc
 samples/wxsocket/*.xbm
 samples/wxsocket/*.xpm
 samples/wxsocket/*.ico
@@ -648,6 +654,12 @@ samples/dde/client.vc
 samples/dde/server.vc
 samples/dde/client.wat
 samples/dde/server.wat
+samples/dde/client.b32
+samples/dde/server.b32
+samples/dde/client.bcc
+samples/dde/server.bcc
+samples/dde/client.dos
+samples/dde/server.dos
 samples/dde/*.rc
 samples/dde/*.def
 samples/dde/*.bmp
diff --git a/distrib/msw/gtk.rsp b/distrib/msw/gtk.rsp
index dda919d95a..53c4ef8ea5 100644
--- a/distrib/msw/gtk.rsp
+++ b/distrib/msw/gtk.rsp
@@ -9,6 +9,8 @@ wx-config.in
 mkinstalldirs
 wxGTK.spec
 
+distrib/gtk/copy_src
+
 docs/gtk/*.html
 docs/gtk/*.txt
 docs/gtk/makewxgtk
diff --git a/distrib/msw/vc.rsp b/distrib/msw/vc.rsp
index 6900ebc7da..2b99cc94d3 100644
--- a/distrib/msw/vc.rsp
+++ b/distrib/msw/vc.rsp
@@ -1,5 +1,7 @@
-src/wxVC.dsp
-src/wxVC.dsw
+src/wxvc.dsp
+src/wxvc.dsw
+src/wxvc_dll.dsp
+src/wxvc_dll.dsw
 
 samples/checklst/ChecklstVC.dsp
 samples/checklst/ChecklstVC.dsw
@@ -145,6 +147,8 @@ utils/ogl/src/OglVC.dsp
 utils/ogl/src/OglVC.dsw
 utils/ogl/samples/ogledit/OgleditVC.dsp
 utils/ogl/samples/ogledit/OgleditVC.dsw
+utils/ogl/samples/studio/StudioVC.dsp
+utils/ogl/samples/studio/StudioVC.dsw
 
 utils/wxtree/src/TreeVC.dsp
 utils/wxtree/src/TreeVC.dsw
diff --git a/docs/changes.txt b/docs/changes.txt
index e9c60cd523..3dda75dc07 100644
--- a/docs/changes.txt
+++ b/docs/changes.txt
@@ -1,6 +1,28 @@
 wxWindows 2 Change Log
 ----------------------
 
+Beta 4, February 1999
+-------------------------
+
+wxGTK:
+
+- Miscellaneous fixes.
+
+wxMSW:
+
+- Makefiles for more compilers and samples; Cygwin makefiles
+  rationalised.
+- Added DLL support to VC++ makefiles.
+
+wxMotif:
+
+
+General:
+
+- Further doc improvements.
+- wxGenericValidator added.
+
+
 Beta 3, January 31st 1999
 -------------------------
 
diff --git a/docs/latex/wx/manual.tex b/docs/latex/wx/manual.tex
index c13f2a9cad..9048c2324b 100644
--- a/docs/latex/wx/manual.tex
+++ b/docs/latex/wx/manual.tex
@@ -26,11 +26,11 @@
 \parskip=10pt
 \parindent=0pt
 \title{User Manual for wxWindows 2.0: a portable C++ GUI toolkit}
-\winhelponly{\author{by Julian Smart
+\winhelponly{\author{by Julian Smart et al
 %\winhelponly{\\$$\image{1cm;0cm}{wxwin.wmf}$$}
 }}
-\winhelpignore{\author{Julian Smart}
-\date{December 27th 1998}
+\winhelpignore{\author{Julian Smart et al}
+\date{February 10th 1999}
 }
 \makeindex
 \begin{document}
diff --git a/docs/latex/wx/stream.tex b/docs/latex/wx/stream.tex
index 5bf0c73e25..7818a9ae86 100644
--- a/docs/latex/wx/stream.tex
+++ b/docs/latex/wx/stream.tex
@@ -61,7 +61,7 @@ But you should care about destroying the stream buffer \it{YOURSELF}.
 
 \wxheading{See also}
 
-\helpref{wxStreamBuffer:SetBufferIO}{wxstreambufsetbufferio}
+\helpref{wxStreamBuffer:SetBufferIO}{wxstreambuffersetbufferio}
 
 \func{}{wxStreamBuffer}{\param{const wxStreamBuffer &}{buffer}}
 
@@ -90,7 +90,7 @@ The "Write-Back" buffer is freed.
 % -----------
 % Filtered IO
 % -----------
-\membersection{wxStreamBuffer::Read}\label{wxstreambufread}
+\membersection{wxStreamBuffer::Read}\label{wxstreambufferread}
 
 \func{size\_t}{Read}{\param{void *}{buffer}, \param{size\_t }{size}}
 
@@ -108,14 +108,14 @@ It returns the real read size. If returned size is different of the specified
 
 \wxheading{See also}
 
-\helpref{wxStreamBuffer::WriteBack}{wxstreambufwriteback}
+\helpref{wxStreamBuffer::WriteBack}{wxstreambufferwriteback}
 
 \func{size\_t}{Read}{\param{wxStreamBuffer *}{buffer}}
 
 Reads a \it{buffer}. The function returns when \it{buffer} is full or
 when there aren't datas anymore in the current buffer.
 
-\membersection{wxStreamBuffer::Write}
+\membersection{wxStreamBuffer::Write}\label{wxstreambufferwrite}
 
 \func{size\_t}{Write}{\param{const void *}{buffer}, \param{size\_t }{size}}
 
@@ -124,9 +124,9 @@ are cached in a buffer before being sent in one block to the stream.
 
 \func{size\_t}{Write}{\param{wxStreamBuffer *}{buffer}}
 
-See \helpref{Read}{wxstreambufreadbuf}
+See \helpref{Read}{wxstreambufferread}.
 
-\membersection{wxStreamBuffer::WriteBack}\label{wxstreambufwriteback}
+\membersection{wxStreamBuffer::WriteBack}\label{wxstreambufferwriteback}
 
 \func{size\_t}{WriteBack}{\param{const char*}{ buffer}, \param{size\_t}{ size}}
 
@@ -157,7 +157,7 @@ You aren't directly notified if an error occured during the IO call.
 
 \wxheading{See also}
 
-\helpref{wxStreamBuffer::Read}{wxstreambufread}
+\helpref{wxStreamBuffer::Read}{wxstreambufferread}
 
 \membersection{wxStreamBuffer::PutChar}
 
@@ -171,7 +171,7 @@ You aren't directly notified if an error occured during the IO call.
 
 \wxheading{See also}
 
-\helpref{wxStreamBuffer::Read}{wxstreambufwrite}
+\helpref{wxStreamBuffer::Read}{wxstreambufferwrite}
 
 \membersection{wxStreamBuffer::Tell}
 
@@ -216,7 +216,7 @@ the beginning of the stream. Otherwise, it returns wxInvalidOffset.
 
 Resets to the initial state variables concerning the buffer.
 
-\membersection{wxStreamBuffer::SetBufferIO}\label{wxstreambufsetbufferio}
+\membersection{wxStreamBuffer::SetBufferIO}\label{wxstreambuffersetbufferio}
 
 \func{void}{SetBufferIO}{\param{char*}{ buffer\_start}, \param{char*}{ buffer\_end}}
 
@@ -235,8 +235,8 @@ it when it is full.
 \wxheading{See also}
 
 \helpref{wxStreamBuffer constructor}{wxstreambufconst}\\
-\helpref{wxStreamBuffer::Fixed}{wxstreambuffixed}\\
-\helpref{wxStreamBuffer::Flushable}{wxstreambufflushable}
+\helpref{wxStreamBuffer::Fixed}{wxstreambufferfixed}\\
+\helpref{wxStreamBuffer::Flushable}{wxstreambufferflushable}
 
 \func{void}{SetBufferIO}{\param{size\_t}{ bufsize}}
 
@@ -253,8 +253,8 @@ The created IO buffer is growable by the object.
 
 \wxheading{See also}
 
-\helpref{wxStreamBuffer::Fixed}{wxstreambuffixed}\\
-\helpref{wxStreamBuffer::Flushable}{wxstreambufflushable}
+\helpref{wxStreamBuffer::Fixed}{wxstreambufferfixed}\\
+\helpref{wxStreamBuffer::Flushable}{wxstreambufferflushable}
 
 \membersection{wxStreamBuffer::GetBufferStart}
 
@@ -292,7 +292,7 @@ Sets the current position in the stream buffer.
 
 Returns the amount of bytes read during the last IO call to the parent stream.
 
-\membersection{wxStreamBuffer::Fixed}
+\membersection{wxStreamBuffer::Fixed}\label{wxstreambufferfixed}
 
 \func{void}{Fixed}{\param{bool}{ fixed}}
 
@@ -302,9 +302,9 @@ Toggles the fixed flag. Usually this flag is toggled at the same time as
 
 \wxheading{See also}
 
-\helpref{wxStreamBuffer::SetBufferIO}{wxstreambufsetbufferio}
+\helpref{wxStreamBuffer::SetBufferIO}{wxstreambuffersetbufferio}
 
-\membersection{wxStreamBuffer::Flushable}
+\membersection{wxStreamBuffer::Flushable}\label{wxstreambufferflushable}
 
 \func{void}{Flushable}{\param{bool}{ flushable}}
 
diff --git a/docs/latex/wx/strmbase.tex b/docs/latex/wx/strmbase.tex
index 70eaf82689..f35be6e23c 100644
--- a/docs/latex/wx/strmbase.tex
+++ b/docs/latex/wx/strmbase.tex
@@ -42,7 +42,7 @@ This function returns the last error.
 \twocolitem{{\bf wxStream_NOERROR}}{No error occured.}
 \twocolitem{{\bf wxStream_EOF}}{An End-Of-File occured.}
 \twocolitem{{\bf wxStream_WRITE_ERR}}{A generic error occured on the last write call.}
-\twocolitem{\bf wxStream_READ_ERR}{A generic error occured on the last read call.}
+\twocolitem{{\bf wxStream_READ_ERR}}{A generic error occured on the last read call.}
 \end{twocollist}
 
 \membersection{wxStreamBase::StreamSize}
diff --git a/docs/latex/wx/strmzlib.tex b/docs/latex/wx/strmzlib.tex
index eadbb0897c..e7e6cfd4ee 100644
--- a/docs/latex/wx/strmzlib.tex
+++ b/docs/latex/wx/strmzlib.tex
@@ -1,7 +1,7 @@
 % -----------------------------------------------------------------------------
 % wxZlibInputStream
 % -----------------------------------------------------------------------------
-\section{\class{wxZlibInputStream}}
+\section{\class{wxZlibInputStream}}\label{wxzlibinputstream}
 
 \wxheading{Derived from}
 
@@ -19,7 +19,7 @@ stream to get new compressed data.
 % -----------------------------------------------------------------------------
 % wxZlibOutputStream
 % -----------------------------------------------------------------------------
-\section{\class{wxZlibOutputStream}}
+\section{\class{wxZlibOutputStream}}\label{wxzliboutputstream}
 
 \wxheading{Derived from}
 
@@ -31,6 +31,6 @@ stream to get new compressed data.
 
 \wxheading{Short description}
 
-This stream compresses all data written to it and passed the compressed data
+This stream compresses all data written to it, and passes the compressed data
 to the ``filtered'' stream.
 
diff --git a/docs/latex/wx/textdlg.tex b/docs/latex/wx/textdlg.tex
index ec2f8d1db5..b6035be3a1 100644
--- a/docs/latex/wx/textdlg.tex
+++ b/docs/latex/wx/textdlg.tex
@@ -18,8 +18,8 @@ It is implemented as a generic wxWindows dialog.
 
 \membersection{wxTextEntryDialog::wxTextEntryDialog}\label{wxtextentrydialogconstr}
 
-\func{}{wxTextEntryDialog}{\param{wxWindow* }{parent}, \param{const wxString\& }{message = "Please enter text"},\rtfsp
-\param{const wxString\& }{defaultValue = ""}, \param{long }{style = wxOK \pipe wxCANCEL \pipe wxCENTRE}, \param{const wxPoint\& }{pos = wxDefaultPosition}}
+\func{}{wxTextEntryDialog}{\param{wxWindow* }{parent}, \param{const wxString\& }{message},\rtfsp
+\param{const wxString\& }{caption = "Please enter text"}, \param{const wxString\& }{defaultValue = ""}, \param{long }{style = wxOK \pipe wxCANCEL \pipe wxCENTRE}, \param{const wxPoint\& }{pos = wxDefaultPosition}}
 
 Constructor. Use \helpref{wxTextEntryDialog::ShowModal}{wxtextentrydialogshowmodal} to show the dialog.
 
diff --git a/docs/motif/install.txt b/docs/motif/install.txt
index 1279481f77..6e9db5b047 100644
--- a/docs/motif/install.txt
+++ b/docs/motif/install.txt
@@ -105,8 +105,21 @@ COMPILING USING MAKEFILES
 
   and run the resulting minimal_motif binary.
 
-Notes:
-------
+Troubleshooting
+---------------
+
+- If you have trouble compiling the file y_tab.c, or have strange
+  linking errors, check whether you're using a C or C++ compiler for this file.
+  You should specify a C compiler in the CCLEX variable in src/make.env.
+  You could also try using bison and flex instead of yacc and
+  lex.
+
+- Solaris compilation with gcc: if the compiler has problems with the variable argument
+  functions, try putting the gcc fixinclude file paths early in the
+  include path.
+
+Other Notes
+-----------
 
 - Better installation and makefile systems are
   required. A revised configure system is in preparation.
@@ -128,10 +141,6 @@ Notes:
   For Linux, the problem is expected to go away with future
   distributions of the operating system.
 
-- If you have trouble compiling the file y_tab.c, or have strange
-  linking errors, check whether you're using a C or C++ compiler for this file.
-  You should specify a C compiler in the CCLEX variable in src/make.env.
-
 - If you run into problems with a missing X11/Xpm.h header, you
   need to install the XPM package. It can be obtained from:
 
@@ -146,8 +155,11 @@ Notes:
   to 0, and recompile. You will not be able to load any XPMs,
   though (currently the only supported colour bitmap format).
 
-- Please send bug reports with a description of your environment,
-  compiler and the error message(s) to the wxwin-users mailing list at:
+Bug reports
+-----------
+
+Please send bug reports with a description of your environment,
+compiler and the error message(s) to the wxwin-users mailing list at:
 
     wxwin-users@wx.dent.med.uni-muenchen.de
 
diff --git a/docs/msw/install.txt b/docs/msw/install.txt
index a8e5447ff5..ddb16cc334 100644
--- a/docs/msw/install.txt
+++ b/docs/msw/install.txt
@@ -98,6 +98,16 @@ Note (2): libraries and applications generated with makefiles and
 project files are unlikely to be compatible, so use one method or
 the other.
 
+Note (3): VC++ 5's optimization code seems to be broken and can
+cause problems: this can be seen when deleting an object Dialog
+Editor, in Release mode with optimizations on. If in doubt,
+switch off optimisations, although this will result in much
+larger executables. It seems possible that the library can be created with
+strong optimization, so long as the application is not strongly
+optimized. For example, in wxWindows project, set to 'Minimum
+Size'. In Dialog Editor project, set to 'Customize: Favor Small
+Code' (and no others). This will then work.
+
 Visual C++ 1.5 compilation
 --------------------------
 
diff --git a/docs/msw/todo.txt b/docs/msw/todo.txt
index 89dbba57a5..834d74c85c 100644
--- a/docs/msw/todo.txt
+++ b/docs/msw/todo.txt
@@ -14,10 +14,7 @@ Update manual.
     wxListBox changes (for ownerdraw functionality)
     wxThread            DONE (except for topic overview)
     wxString            PARTLY DONE
-    wxBaseArray, other arrays
-    (wxOwnerDrawn)
     Document the include file for each class
-    Stream classes
     wxSocket topic overview
     Functions
 
@@ -35,15 +32,12 @@ Supply correct ctl3d/odbc lib files for BC++, Watcom (corrupt?)
 
 Implement new wxClipboard and DnD (Vadim)
 
-Implement wxToolTip
+Implement wxToolTip (Vadim)
 
 LOW PRIORITY (MEDIUM TERM)
 --------------------------
 
-Get wxMSW's wxGLCanvas working with non-VC++ compilers.
-
-Generate VC++ lib project files and supply VC++ project
-generator utility.
+Supply VC++ project generator utility.
 
 Convert remaining utilities e.g. wxGraphLayout.
 
diff --git a/docs/readme.txt b/docs/readme.txt
index c1b18eec46..d8fff9d674 100644
--- a/docs/readme.txt
+++ b/docs/readme.txt
@@ -1,4 +1,4 @@
-wxWindows 2 beta 3
+wxWindows 2 beta 4
 ------------------
 
 Welcome to wxWindows 2, a sophisticated cross-platform C++
diff --git a/docs/todo.txt b/docs/todo.txt
index 2dc4bd4957..6492e73e07 100644
--- a/docs/todo.txt
+++ b/docs/todo.txt
@@ -20,14 +20,6 @@ Please see also:
 
 - Fix TCP/IP mode in dde sample (how to use; why does it crash).
 
-- Remove trashed CVS files:
-
-  include/wx/msw/magnif1.cur
-  src/msw/ctl3d/*
-  utils/glcanvas/samples/isosurf/isosurf.dat.gz
-
-  and re-add them.
-
 - wxDB ODBC classes: it seems that there are too many
   Sybase-specific features for it to work on e.g. MySQL,
   PostgreSQL. Find out what Remstar uses and document
@@ -36,5 +28,7 @@ Please see also:
 - In doc/view file selector, document type is selected by
   extension, not the type selected in the (Windows) file selector.
 
+- Add all makefiles/documentation for utils/serialize.
+
 - Complete this ToDo list :-)
 
diff --git a/include/wx/app.h b/include/wx/app.h
index d454acf6fa..64b479d1f0 100644
--- a/include/wx/app.h
+++ b/include/wx/app.h
@@ -60,6 +60,26 @@ public:
 #define IMPLEMENT_WXWIN_MAIN \
 extern int wxEntry( int argc, char *argv[] ); \
 int main(int argc, char *argv[]) { return wxEntry(argc, argv); }
+
+#elif defined(__WXMSW__) && defined(WXUSINGDLL)
+
+// NT defines APIENTRY, 3.x not
+#if !defined(WXAPIENTRY)
+#  ifdef __WATCOMC__
+#    define WXAPIENTRY PASCAL
+#  else
+#    define WXAPIENTRY FAR PASCAL
+#  endif
+#endif
+
+#define IMPLEMENT_WXWIN_MAIN \
+int WXAPIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,\
+        LPSTR m_lpCmdLine, int nCmdShow )\
+{\
+    return wxEntry((WXHINSTANCE) hInstance, (WXHINSTANCE) hPrevInstance,\
+                   m_lpCmdLine, nCmdShow);\
+}
+
 #else
 #define IMPLEMENT_WXWIN_MAIN
 #endif
diff --git a/include/wx/msw/setup0.h b/include/wx/msw/setup0.h
index 95fdd2f356..df22ac28c3 100644
--- a/include/wx/msw/setup0.h
+++ b/include/wx/msw/setup0.h
@@ -287,6 +287,9 @@
 #undef wxUSE_THREADS
 #define wxUSE_THREADS 0
 
+#undef wxUSE_TOOLTIPS
+#define wxUSE_TOOLTIPS 0
+
 #endif
 
 #endif
diff --git a/include/wx/msw/wx.rc b/include/wx/msw/wx.rc
index 3c0f4e3478..220d689e8c 100644
--- a/include/wx/msw/wx.rc
+++ b/include/wx/msw/wx.rc
@@ -84,21 +84,6 @@ END
 // Standard wxWindows Cursors
 //
 
-#ifdef __SALFORDC__
-WXCURSOR_HAND           CURSOR  DISCARDABLE     WXINCDIR"wx/msw/hand.cur"
-WXCURSOR_BULLSEYE       CURSOR  DISCARDABLE     WXINCDIR"wx/msw/bullseye.cur"
-WXCURSOR_PENCIL         CURSOR  DISCARDABLE     WXINCDIR"wx/msw/pencil.cur"
-WXCURSOR_MAGNIFIER      CURSOR  DISCARDABLE     WXINCDIR"wx/msw/magnif1.cur"
-WXCURSOR_NO_ENTRY       CURSOR  DISCARDABLE     WXINCDIR"wx/msw/noentry.cur"
-WXCURSOR_SIZING         CURSOR  DISCARDABLE     WXINCDIR"wx/msw/size.cur"
-WXCURSOR_ROLLER         CURSOR  DISCARDABLE     WXINCDIR"wx/msw/roller.cur"
-WXCURSOR_WATCH          CURSOR  DISCARDABLE     WXINCDIR"wx/msw/watch1.cur"
-WXCURSOR_PBRUSH         CURSOR  DISCARDABLE     WXINCDIR"wx/msw/pbrush.cur"
-WXCURSOR_PLEFT          CURSOR  DISCARDABLE     WXINCDIR"wx/msw/pntleft.cur"
-WXCURSOR_PRIGHT         CURSOR  DISCARDABLE     WXINCDIR"wx/msw/pntright.cur"
-WXCURSOR_QARROW         CURSOR  DISCARDABLE     WXINCDIR"wx/msw/query.cur"
-WXCURSOR_BLANK          CURSOR  DISCARDABLE     WXINCDIR"wx/msw/blank.cur"
-#else
 WXCURSOR_HAND           CURSOR  DISCARDABLE     "wx/msw/hand.cur"
 WXCURSOR_BULLSEYE       CURSOR  DISCARDABLE     "wx/msw/bullseye.cur"
 WXCURSOR_PENCIL         CURSOR  DISCARDABLE     "wx/msw/pencil.cur"
@@ -112,7 +97,6 @@ WXCURSOR_PLEFT          CURSOR  DISCARDABLE     "wx/msw/pntleft.cur"
 WXCURSOR_PRIGHT         CURSOR  DISCARDABLE     "wx/msw/pntright.cur"
 WXCURSOR_QARROW         CURSOR  DISCARDABLE     "wx/msw/query.cur"
 WXCURSOR_BLANK          CURSOR  DISCARDABLE     "wx/msw/blank.cur"
-#endif
 
 //////////////////////////////////////////////////////////////////////////////
 //
diff --git a/src/common/lexer.l b/src/common/lexer.l
index bb25277e79..c8700e0c78 100644
--- a/src/common/lexer.l
+++ b/src/common/lexer.l
@@ -191,6 +191,8 @@ static int my_input( void )
 
 void wxExprCleanUp()
 {
+#ifdef FLEX_SCANNER
 	if (yy_current_buffer)
 		yy_delete_buffer(yy_current_buffer);
+#endif
 }
diff --git a/src/common/valgen.cpp b/src/common/valgen.cpp
index 76666bcdb1..8dbc461079 100644
--- a/src/common/valgen.cpp
+++ b/src/common/valgen.cpp
@@ -26,8 +26,10 @@
 #include "wx/wx.h"
 #endif
 
+#ifndef __WIN16__
 #include "wx/spinbutt.h"
 #include "wx/checklst.h"
+#endif
 
 #include "wx/valgen.h"
 
@@ -129,6 +131,7 @@ bool wxGenericValidator::TransferToWindow(void)
       return TRUE;
     }
   }
+#ifndef __WIN16__
   else if (m_validatorWindow->IsKindOf(CLASSINFO(wxSpinButton)) )
   {
     wxSpinButton* pControl = (wxSpinButton*) m_validatorWindow;
@@ -138,6 +141,7 @@ bool wxGenericValidator::TransferToWindow(void)
       return TRUE;
     }
   }
+#endif
   // string controls
   else if (m_validatorWindow->IsKindOf(CLASSINFO(wxButton)) )
   {
@@ -184,6 +188,7 @@ bool wxGenericValidator::TransferToWindow(void)
       return TRUE;
     }
   }
+#ifndef __WIN16__
   // array controls
   // NOTE: wxCheckListBox isa wxListBox, so wxCheckListBox
   // MUST come first:
@@ -205,6 +210,7 @@ bool wxGenericValidator::TransferToWindow(void)
 	else
 		return FALSE;
   }
+#endif
   else if (m_validatorWindow->IsKindOf(CLASSINFO(wxListBox)) )
   {
     wxListBox* pControl = (wxListBox*) m_validatorWindow;
@@ -279,6 +285,7 @@ bool wxGenericValidator::TransferFromWindow(void)
       return TRUE;
     }
   }
+#ifndef __WIN16__
   else if (m_validatorWindow->IsKindOf(CLASSINFO(wxSpinButton)) )
   {
     wxSpinButton* pControl = (wxSpinButton*) m_validatorWindow;
@@ -288,6 +295,7 @@ bool wxGenericValidator::TransferFromWindow(void)
       return TRUE;
     }
   }
+#endif
   // string controls
   else if (m_validatorWindow->IsKindOf(CLASSINFO(wxButton)) )
   {
@@ -334,6 +342,7 @@ bool wxGenericValidator::TransferFromWindow(void)
       return TRUE;
     }
   }
+#ifndef __WIN16__
   // array controls
   // NOTE: wxCheckListBox isa wxListBox, so wxCheckListBox
   // MUST come first:
@@ -354,6 +363,7 @@ bool wxGenericValidator::TransferFromWindow(void)
 	else
 	  return FALSE;
   }
+#endif
   else if (m_validatorWindow->IsKindOf(CLASSINFO(wxListBox)) )
   {
     wxListBox* pControl = (wxListBox*) m_validatorWindow;
diff --git a/src/makeenvs/solaris.env b/src/makeenvs/solaris.env
index fa4a6fde53..a6c8d1b7fd 100644
--- a/src/makeenvs/solaris.env
+++ b/src/makeenvs/solaris.env
@@ -30,7 +30,7 @@ RANLIB      = ranlib
 
 # Debug/trace mode. 1 or more for debugging.
 DEBUG       = 0
-GUI         = -D__MOTIF__ -D__LINUX__ -D__UNIX__
+GUI         = -D__MOTIF__ -D__SOLARIS__ -D__UNIX__
 GUISUFFIX   = _motif
 
 ########################## Compiler flags #############################
diff --git a/src/motif/makefile.unx b/src/motif/makefile.unx
index 6a0d47c13d..27fc8a76a8 100644
--- a/src/motif/makefile.unx
+++ b/src/motif/makefile.unx
@@ -207,6 +207,10 @@ $(WXLIB) : $(OBJECTS)
         sed -e "s/YYLMAX 200/YYLMAX 5000/g" > ../common/lex_yy.c
 	/bin/rm -f ../common/lex.yy.c
 
+# N.B. if you have lex instead of flex, replace the $(LEX) line above
+# with the following:
+#    $(LEX) ../common/lexer.l
+
 # Replace yacc with bison if you run into compilation
 # problems with y_tab.c.
 ../common/y_tab.c:	../common/parser.y
diff --git a/src/motif/utils.cpp b/src/motif/utils.cpp
index 1e026d61b3..99569a53c2 100644
--- a/src/motif/utils.cpp
+++ b/src/motif/utils.cpp
@@ -34,7 +34,7 @@
 #include <netdb.h>
 #include <signal.h>
 
-#if defined(__SVR4__) && !defined(__HPUX__)
+#if defined(__SOLARIS__) || defined(__SVR4__) && !defined(__HPUX__)
 #include <sys/systeminfo.h>
 #endif
 
@@ -61,7 +61,7 @@ extern wxList wxTopLevelWindows;
 // Get full hostname (eg. DoDo.BSn-Germany.crg.de)
 bool wxGetHostName(char *buf, int maxSize)
 {
-#if defined(__SVR4__) && !defined(__HPUX__)
+#if defined(__SOLARIS__) || defined(__SVR4__) && !defined(__HPUX__)
     return (sysinfo (SI_HOSTNAME, buf, maxSize) != -1);
 #else /* BSD Sockets */
     char name[255];
@@ -491,7 +491,7 @@ void wxXMergeDatabases (wxApp * theApp, Display * display)
         size_t len;
         environment = GetIniFile (filename, NULL);
         len = strlen (environment);
-#if defined(__SVR4__) && !defined(__HPUX__)
+#if defined(__SOLARIS__) || defined(__SVR4__) && !defined(__HPUX__)
         (void) sysinfo (SI_HOSTNAME, environment + len, 1024 - len);
 #else
         (void) gethostname (environment + len, 1024 - len);
diff --git a/src/msw/app.cpp b/src/msw/app.cpp
index cbf871abde..8488c2d14f 100644
--- a/src/msw/app.cpp
+++ b/src/msw/app.cpp
@@ -248,7 +248,7 @@ bool wxApp::RegisterWindowClasses()
 // Register the frame window class.
   WNDCLASS wndclass;   // Structure used to register Windows class.
 
-  wndclass.style         = CS_HREDRAW | CS_VREDRAW;
+  wndclass.style         = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS ;
   wndclass.lpfnWndProc   = (WNDPROC)wxWndProc;
   wndclass.cbClsExtra    = 0;
   wndclass.cbWndExtra    = sizeof( DWORD ); // was 4
@@ -272,7 +272,7 @@ bool wxApp::RegisterWindowClasses()
 // Register the MDI frame window class.
   WNDCLASS wndclass1;   // Structure used to register Windows class.
 
-  wndclass1.style         = CS_HREDRAW | CS_VREDRAW;
+  wndclass1.style         = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS ;
   wndclass1.lpfnWndProc   = (WNDPROC)wxWndProc;
   wndclass1.cbClsExtra    = 0;
   wndclass1.cbWndExtra    = sizeof( DWORD ); // was 4
@@ -294,7 +294,7 @@ bool wxApp::RegisterWindowClasses()
 // Register the MDI child frame window class.
   WNDCLASS wndclass4;   // Structure used to register Windows class.
 
-  wndclass4.style         = CS_HREDRAW | CS_VREDRAW;
+  wndclass4.style         = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS ;
   wndclass4.lpfnWndProc   = (WNDPROC)wxWndProc;
   wndclass4.cbClsExtra    = 0;
   wndclass4.cbWndExtra    = sizeof( DWORD ); // was 4
@@ -321,7 +321,7 @@ bool wxApp::RegisterWindowClasses()
   memset(&wndclass2, 0, sizeof(WNDCLASS));   // start with NULL defaults
   // Use CS_OWNDC to avoid messing about restoring the context
   // for every graphic operation.
-  wndclass2.style         = CS_HREDRAW | CS_VREDRAW;
+  wndclass2.style         = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS ;
   wndclass2.lpfnWndProc   = (WNDPROC)wxWndProc;
   wndclass2.cbClsExtra    = 0;
   wndclass2.cbWndExtra    = sizeof( DWORD ); // was 4
diff --git a/src/msw/dummy.cpp b/src/msw/dummy.cpp
index 5bca45319e..dda57b7e3b 100644
--- a/src/msw/dummy.cpp
+++ b/src/msw/dummy.cpp
@@ -45,7 +45,10 @@
 #endif
 
 // if wxWindows is in the DLL link our entry point with the application
-#if defined(WXUSINGDLL)
+// N.B. see include/wx/app.h, we're now putting this in IMPLEMENT_APP so we
+// don't have to link our apps with dummy.obj.
+
+#if 0 // defined(WXUSINGDLL)
 
 // NT defines APIENTRY, 3.x not
 #if !defined(APIENTRY)
diff --git a/src/msw/dummydll.cpp b/src/msw/dummydll.cpp
index 1a594077d8..f1a29bcf1e 100644
--- a/src/msw/dummydll.cpp
+++ b/src/msw/dummydll.cpp
@@ -19,7 +19,7 @@
 
 // Foils optimizations in Visual C++ (see also app.cpp). Without it,
 // dummy.obj isn't linked and we get a linker error.
-#if defined(__VISUALC__) && defined(__WIN16__)
+#if defined(__VISUALC__)
     char wxDummyChar=0;
 #endif
 
diff --git a/src/msw/makefile.twn b/src/msw/makefile.twn
index dab7599437..2e1918fc4a 100644
--- a/src/msw/makefile.twn
+++ b/src/msw/makefile.twn
@@ -281,7 +281,7 @@ $(COMMDIR)/y_tab.$(OBJSUFF):    $(COMMDIR)/y_tab.c $(COMMDIR)/lex_yy.c
 $(COMMDIR)/lex_yy.c:	$(COMMDIR)/lexer.l
 	$(LEX) $(COMMDIR)/lexer.l > $(COMMDIR)/lex_yy.c
 
-# The following may be required for some versions of LEX/FLEX
+# The following may be required for FLEX
 #	$(LEX) -o$(COMMDIR)/lex_yy.c $(COMMDIR)/lexer.l
 
 #	sed -e "s/BUFSIZ/5000/g" < lex.yy.c | \
diff --git a/src/msw/makefile.vc b/src/msw/makefile.vc
index 73b6293aa8..4bb2cd095a 100644
--- a/src/msw/makefile.vc
+++ b/src/msw/makefile.vc
@@ -295,14 +295,19 @@ $(WXDIR)\lib\wx200.dll: $(DUMMYOBJ) $(OBJECTS) $(WXDIR)\lib\wx200.lib
 ########################################################
 # Windows-specific objects
 
-dummy.obj: dummy.$(SRCSUFF) $(WXDIR)\include\wx\wx.h
+dummy.obj: dummy.$(SRCSUFF) $(WXDIR)\include\wx\wx.h $(WXDIR)\include\wx\msw\setup.h
         cl $(CPPFLAGS) $(MAKEPRECOMP) /c /Tp $*.$(SRCSUFF)
 
-dummydll.obj: dummydll.$(SRCSUFF) $(WXDIR)\include\wx\wx.h
+dummydll.obj: dummydll.$(SRCSUFF) $(WXDIR)\include\wx\wx.h $(WXDIR)\include\wx\msw\setup.h
         cl @<<
 $(CPPFLAGS) $(MAKEPRECOMP) /c /Tp $*.$(SRCSUFF)
 <<
 
+# If taking wxWindows from CVS, setup.h doesn't exist yet.
+$(WXDIR)\include\wx\msw\setup.h: $(WXDIR)\include\wx\msw\setup0.h
+    -copy "$(WXDIR)"\include\wx\msw\setup.h "$(WXDIR)"\include\wx\msw\setup.bak
+    copy "$(WXDIR)"\include\wx\msw\setup0.h "$(WXDIR)"\include\wx\msw\setup.h 
+
 $(MSWDIR)/accel.obj:     $*.$(SRCSUFF)
         cl @<<
 $(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@
diff --git a/src/msw/menu.cpp b/src/msw/menu.cpp
index a24f0f419d..dbf1723bef 100644
--- a/src/msw/menu.cpp
+++ b/src/msw/menu.cpp
@@ -341,6 +341,7 @@ void wxMenu::SetTitle(const wxString& label)
     }
   }
 
+#ifndef __WIN16__
   // put the title string in bold face
   if ( !m_title.IsEmpty() )
   {
@@ -354,6 +355,7 @@ void wxMenu::SetTitle(const wxString& label)
       wxLogLastError("SetMenuItemInfo");
     }
   }
+#endif
 }
 
 const wxString wxMenu::GetTitle() const
diff --git a/src/msw/utilsexc.cpp b/src/msw/utilsexc.cpp
index 5f12734b4c..ade6c3077a 100644
--- a/src/msw/utilsexc.cpp
+++ b/src/msw/utilsexc.cpp
@@ -77,10 +77,12 @@ struct wxExecuteData
 public:
     ~wxExecuteData()
     {
+#ifndef __WIN16__
         if ( !::CloseHandle(hProcess) )
         {
             wxLogLastError("CloseHandle(hProcess)");
         }
+#endif
     }
 
     HWND       hWnd;          // window to send wxWM_PROC_TERMINATED to
diff --git a/src/msw/window.cpp b/src/msw/window.cpp
index 9dcf9a86a1..6bc6898c49 100644
--- a/src/msw/window.cpp
+++ b/src/msw/window.cpp
@@ -49,7 +49,11 @@
 
 #include "wx/menuitem.h"
 #include "wx/log.h"
+
+#if wxUSE_TOOLTIPS
 #include "wx/tooltip.h"
+#endif
+
 #include "wx/intl.h"
 #include "wx/log.h"
 
@@ -2037,7 +2041,7 @@ bool wxWindow::MSWProcessMessage(WXMSG* pMsg)
                             // it
                             return FALSE;
                         }
-
+#ifndef __WIN16__
                         wxButton *btnDefault = GetDefaultItem();
                         if ( btnDefault && !bCtrlDown )
                         {
@@ -2050,6 +2054,7 @@ bool wxWindow::MSWProcessMessage(WXMSG* pMsg)
                         // else: but if there is not it makes sense to make it
                         //       work like a TAB - and that's what we do.
                         //       Note that Ctrl-Enter always works this way.
+#endif
                     }
                     break;
 
diff --git a/utils/dialoged/src/makefile.vc b/utils/dialoged/src/makefile.vc
index 79339bd8b6..fce0a56fd7 100644
--- a/utils/dialoged/src/makefile.vc
+++ b/utils/dialoged/src/makefile.vc
@@ -11,12 +11,19 @@
 # Use FINAL=1 argument to nmake to build final version with no debugging
 # info
 
+
+# N.B. This makefiles uses CPPFLAGS2 to disable precompiled headers so we
+# can override optimization, which is necessary for correct behaviour under
+# VC++ 5 (otherwise deleting an object causes a crash).
+
 # Set WXDIR for your system
 WXDIR = $(WXWIN)
 THISDIR = $(WXDIR)\utils\dialoged\src
 DOCDIR=$(WXDIR)\docs
 LOCALDOCDIR=$(WXDIR)\utils\dialoged\docs
 
+OVERRIDEFLAGS=/Od
+
 PROGRAM=dialoged
  
 OBJECTS = dialoged.obj reseditr.obj dlghndlr.obj reswrite.obj\
@@ -29,47 +36,47 @@ all:    dialoged.exe
 
 dialoged.obj:      winprop.h reseditr.h dialoged.$(SRCSUFF) $(DUMMYOBJ)
         $(cc) @<<
-$(CPPFLAGS) /c /Tp $*.$(SRCSUFF)
+$(CPPFLAGS2) /c /Tp $*.$(SRCSUFF)
 <<
 
 winprop.obj:      winprop.h reseditr.h winprop.$(SRCSUFF) $(DUMMYOBJ)
         $(cc) @<<
-$(CPPFLAGS) /c /Tp $*.$(SRCSUFF)
+$(CPPFLAGS2) /c /Tp $*.$(SRCSUFF)
 <<
 
 reswrite.obj:      winprop.h reseditr.h reswrite.$(SRCSUFF) $(DUMMYOBJ)
         $(cc) @<<
-$(CPPFLAGS) /c /Tp $*.$(SRCSUFF)
+$(CPPFLAGS2) /c /Tp $*.$(SRCSUFF)
 <<
 
 reseditr.obj:      winprop.h reseditr.h reseditr.$(SRCSUFF) $(DUMMYOBJ)
         $(cc) @<<
-$(CPPFLAGS) /c /Tp $*.$(SRCSUFF)
+$(CPPFLAGS2) /c /Tp $*.$(SRCSUFF)
 <<
 
 edtree.obj:      winprop.h reseditr.h edtree.h edtree.$(SRCSUFF) $(DUMMYOBJ)
         $(cc) @<<
-$(CPPFLAGS) /c /Tp $*.$(SRCSUFF)
+$(CPPFLAGS2) /c /Tp $*.$(SRCSUFF)
 <<
 
 edlist.obj:      winprop.h reseditr.h edlist.h edlist.$(SRCSUFF) $(DUMMYOBJ)
         $(cc) @<<
-$(CPPFLAGS) /c /Tp $*.$(SRCSUFF)
+$(CPPFLAGS2) /c /Tp $*.$(SRCSUFF)
 <<
 
 dlghndlr.obj:      winprop.h reseditr.h dlghndlr.$(SRCSUFF) $(DUMMYOBJ)
         $(cc) @<<
-$(CPPFLAGS) /c /Tp $*.$(SRCSUFF)
+$(CPPFLAGS2) /c /Tp $*.$(SRCSUFF)
 <<
 
 symbtabl.obj:      symbtabl.h symbtabl.$(SRCSUFF) $(DUMMYOBJ)
         $(cc) @<<
-$(CPPFLAGS) /c /Tp $*.$(SRCSUFF)
+$(CPPFLAGS2) /c /Tp $*.$(SRCSUFF)
 <<
 
 winstyle.obj:      winstyle.h winstyle.$(SRCSUFF) $(DUMMYOBJ)
         $(cc) @<<
-$(CPPFLAGS) /c /Tp $*.$(SRCSUFF)
+$(CPPFLAGS2) /c /Tp $*.$(SRCSUFF)
 <<
 
 DOCSOURCES=$(LOCALDOCDIR)\dialoged.tex $(LOCALDOCDIR)\body.tex\
-- 
2.50.0

