                Welcome to Turbo C++ for Windows 3.1
                ------------------------------------

  This README file contains important information about Turbo C++
  for Windows. For the latest information about Turbo C++ for
  Windows and its accompanying programs and manuals, read this
  file in its entirety.

TABLE OF CONTENTS
-----------------
1.  How to Get Help
2.  Installation
3.  Features
4.  Important Information
5.  Corrections to the Documents


 1. HOW TO GET HELP
-------------------
  If you have any problems, please read this file, the
  HELPME!.DOC and other files in your DOC subdirectory, and the
  Turbo C++ for Windows manuals first. If you still have a
  question and need assistance, help is available from the
  following sources:

  1. Type

        GO BCPPDOS     - for questions pertaining to DOS

         or

        GO BCPPWIN     - for questions pertaining to Windows

     on the CompuServe bulletin board system for
     instant access to the Borland forums with their libraries of
     technical information and answers to common questions.

     If you are not a member of CompuServe, see the enclosed
     special offer, and write for full details on how to receive
     a free IntroPak containing a $15 credit toward your first
     month's on-line charges.

  2. Check with your local software dealer or users' group.

  3. Borland's TECHFAX service. Call (800) 822-4269 for a FAX 
     catalog of entries.

  4. If you have an urgent problem that cannot wait and you have
     sent in the license agreement that came with the package,
     you may call the Borland Technical Support Department at
     (408) 461-9133. Please have the following information ready
     before calling:

     a. Product name and serial number on your original
        distribution disk.  Please have your serial number ready
        or we will be unable to process your call.

     b. Product version number. The version number for Turbo
        C++ can be displayed by pressing Alt-H/A in the IDE.

     c. Computer brand, model, and the brands and model numbers of
        any additional hardware.

     d. Operating system and version number. (The version number
        can be determined by typing VER at the DOS prompt.)

     e. Contents of your AUTOEXEC.BAT file.

     f. Contents of your CONFIG.SYS file.


 2. INSTALLATION
----------------

  You MUST use the INSTALL program to install Turbo C++ for
  Windows. The files on the distribution disks are all archived
  and have to be properly assembled.  You cannot do this by hand!

  Installing to the same directory structure as a previous version
  without erasing the directories is not recommended; you may
  encounter problems due to old header files, libraries, memory
  managers, or configuration files.

  Turbo C++ for Windows includes a Windows installation program
  that will create the appropriate subdirectories and copy the
  software on to your hard disk. To run the installation program
  from Drive A type

      WIN A:INSTALL

  or, if Windows is active, select the program manager's File|Run
  command and type

      A:INSTALL

  Note that this version of the installation program runs under
  Windows standard or 386 Enhanced modes only. After
  installation, make sure you insert \TCWIN\BIN - or whatever you
  selected as your BIN directory - into your DOS path
  so the DLL and executable files can be found.

  If you use a screen saver such as After Dark or Borland's Screenery,
  you should disable it before running the INSTALL program.

  -  Note: The list of files is contained in a separate file
     called FILELIST.DOC, which will appear in the target
     directory you specify during installation.

  -  Make sure you select the "LAN Windows configuration" option
     if Windows is executed from your network.

  -  If you have previously installed Resource Workshop, make sure
     that you remove the directory of that version from your path. The
     version included on these disks supercedes previous versions.

  -  If you use a Windows command shell other than Program Manager,
     you may not get a Turbo C++ group installed for Windows. If
     you don't, use File|New in Program Manager (or the equivalent
     command in your shell) to add items for the following files:

            Description    EXE file       Default path
            -----------    --------       ------------
            TURBO C++      TCW.EXE        C:\TCWIN\BIN
            WORKSHOP       WORKSHOP.EXE   C:\TCWIN\BIN
            IMPORT LIB     IMPLIBW.EXE    C:\TCWIN\BIN
            DEBUG          TDW.EXE        C:\TCWIN\BIN
            FCONVERT       FCONVERT.EXE   C:\TCWIN\BIN


  You should read the rest of this README file to get further
  information about this release before you do the installation.


 3. NEW FEATURES
----------------

  - Color syntax highlighting: The IDE now highlights your source
    according to syntax. See the choices under Options|Environment|
    Highlight. This option is enabled by Options|Environment|Editor|
    Syntax Highlighting.

  - Windows 3.1 support: All executables and DLLs  have been
    modified appropriately for compatibility with Version 3.1 of
    Windows. The ObjectWindows Library header files have been
    modified for compatibility with the new Windows header files
    as well.

    NOTE CONCERNING USE OF MICROSOFT WINDOWS 3.1 REDISTRIBUTABLES FOR
    APPLICATIONS RUNNING ON MICROSOFT WINDOWS 3.0

    This Borland language product contains everything you need to develop
    applications to run on the most recent version of Microsoft Windows,
    version 3.1.  In some cases, you may need to copy and include in your
    application one or more Microsoft "redistributable" files from a copy
    of version 3.1 so that your application will also run on version 3.0.
    Microsoft informs us that you may copy the redistributable files
    from Microsoft Windows 3.1 for this purpose.  If you do so, you must
    comply with the conditions stated in the Borland No-Nonsense License
    Statement included in this package as if the redistributable files you
    copy were a part of this Borland language product.  Microsoft's
    redistributable files in Windows 3.1 are:

       winhelp.exe, winhelp.hlp, commdlg.dll, ddeml.dll, toolhelp.dll,
       vtd.386, olecli.dll, olesvr.dll, ver.dll, lzexpand.dll,
       expand.exe, regload.exe, stress.dll, dib.drv, markmidi.exe,
       penwin.dll, and shell.dll.

    If you do not find any of these files in the BIN directory, they
    are also included in the Windows retail distribution, and installed
    in your Windows directories.

  - WinSpector, a postmortem Windows debugging tool that traps
    general protection faults and provides information on where 
    the fault occurred and the state of the machine at the time.

  In addition, many problems users have reported have been
  corrected in this release.


 4. IMPORTANT INFORMATION
-------------------------

  - Turbo C++ for Windows only supports Protected Mode Windows target
    files.

  - If you use the IDE's Project Make to invoke the Resource
    Compiler, the .RC files you wish to compile MUST be in the same 
    directory as your project or makefile.

  - If you get a "floating point formats not linked" message at
    runtime, put the following somewhere in your source files:

        extern void _floatconvert();
        #pragma extref _floatconvert

    This will force inclusion of floating point formats, which
    may not be linked to reduce executable size.

  - If the Windows 3.0 home directory precedes the Turbo C++ for
    Windows BIN directory in your path, attempting to access Help
    will result in the message "This version of Help file not
    supported." To enable Help, either reorder your path or copy
    WINHELP.EXE to your Windows 3.0 directory.

  - This compiler uses more strict checking of C++ syntax and argument
    matching than previous versions. You can expect more warning
    and error messages based on the ANSI C++ version 3.0 standard.

  - If you receive a "bad object record" message from the linker when
    building OWL or container class library applications, you are
    probably using the Borland C++ version 3.0 class libraries and/or
    OWL libraries. Make sure your library path specifies version 3.1
    libraries for those applications.

  COMPILER

  - In Turbo C++ for Windows 3.0 the compiler allowed conversions
    from "const void*" to "void *", contrary to ANSI; for BC++
    3.1 this is no longer allowed.  In addition, several other
    conversions regarding const variables have also been
    restricted.  If you are a user of the const keyword, expect
    that you may have conversions that were allowed to exist with
    Turbo C++ for Windows 3.0 that will need to be changed in
    order to compile using BC++ 3.1.

  - In Turbo C++ for Windows 3.0 the following syntax was allowed-

            class foo{
            ...
            }       // note that the semicolon is missing here

            f(){
            ...
            }

    The new compiler now requires the semicolon to be added after
    the class declaration. The compiler would interpret the
    example above as an attempt to return a class declaration to
    f().

  - A new implicit conversion rule is now enforced for constructors.

    From page 573 of The C++ Programming Language 2nd Edition:


      "When no constructor for class X accepts the given type, no
       attempt is made to find other constructors or conversion
       functions to convert the assigned value into a type acceptable
       to a constructor for class X."

    For example,

            class X { /* ... */ X(int); };
            class Y { /* ... */ Y(X); };
            Y a = 1;  // illegal: Y(X(1)) not tried

    Note that this rule only applies to constructors with ONE parameter.

  - The inport/outport functions have been changed to accept an
    unsigned parameter instead of an int. The new prototypes are:

     unsigned      inport(unsigned)
     unsigned char inportb(unsigned)
     void          outport(unsigned, unsigned)
     void          outportb(unsigned, unsigned char)

  - There is currently support in ObjectWindows for STRICT and
    non-STRICT versions of OWL programs for Turbo C++ versions
    3.0 and 3.1. Simply define the macros WIN30 or WIN31, and add a
    definition for STRICT if you need STRICT compliance. For
    more details see WIN31.DOC in the DOC directory and
    OWL31.DOC in the OWL\DOC directory.

  - Note that the Generate COMDEFs choice under Options|Compiler|
    Code Generation is only supported in the C language. Linker
    errors will result if you attempt to use a communal variable
    in C++.

  - The macros min() and max() are not defined when stdlib.h is
    compiled as C++ (to allow their use in 3rd party libraries,
    etc.).

  - Note that files with the extension .SYM can come from at least
    two different sources: Borland's precompiled headers, and the
    output of Microsoft's MAPSYM or Borland's TMAPSYM programs,which
    can also be used by SYMDEB and other debuggers.

    These files do not have compatible formats, so collisions
    should be avoided by avoiding the use of the same names as those
    required for the other applications.

  - There is now full support of distance modifiers (near and
    far) used for class member pointers. Here are two sample
    declarations and their meanings:

       void (A::* far var) ();

    this is a far variable 'var' of type 'void (A::*)()';

       void (far A::* var) ();

    this is a 'default distance' variable 'var' of type
	'void (far A::*)()'

  - You must use "smart callbacks" -
    Options| Compiler|Entry/Exit Code|Windows smart callbacks
    - if your application uses classes whose code is in a
    DLL. This applies especially in the case of a class
    implemented in an EXE which is derived from another
    implemented in a DLL, which normally applies for users of OWL
    and other object-oriented class libraries.


  IDE

  - If you run File|Printer setup from TCW.EXE (or another Windows
    application which has printer setup support) under the Windows
    3.0 debugging kernel, you will get a System Error from Windows.
    You must switch to the NODEBUG version to run this option.

  EXAMPLE PROGRAMS

  - When you are running any example programs that come with .PRJ
    files, if you didn't use the standard directories when you
    installed Turbo C++ for Windows you will have to change the .PRJ file
    to reflect your actual directory setup.  Do this from inside
    Turbo C++ for Windows with Alt-O/D.

  - When run under the Windows 3.1 debug kernel, many OWL examples will
    cause a message to be displayed like these:

        USER: Invalidation with fErase==FALSE prevents WM_ERASEBKGND
        Kernel: GlobalCompact(FFFFFFFF), discarding segments

    These messages are valid runtime warnings, but they don't
    indicate improper implementation; they are supplied for the
    information of the user or programmer under the debug kernel.

  - To build the help file for the HELPEX example, go to the
    EXAMPLES\WIN30 directory and type

         hc helpex

  LINKING C++ WITH C

  - Linking C++ modules with C modules requires the use of a
    linkage specification.  Prototypes for C functions within C++
    modules must be in one of the following forms:

        extern "C" declaration
        extern "C" { declarations }

    For example, if a C module contains these functions:

        char *SCopy(char*, char*);
        void ClearScreen(void)

    they must be declared in a C++ module in one of the
      following ways:

        extern "C" char *SCopy(char*, char*);
        extern "C" void ClearScreen(void);

      or

         extern "C" {
            char *SCopy(char*, char*);
            void ClearScreen(void);
         }

    Failure to do so will result in "Undefined symbol" errors
    during link. For further examples, see the standard header
    files.


  TURBO DEBUGGER AND TOOLS
  ------------------------

  Debugging Multiple Applications under Turbo Debugger for Windows
  ================================================================
     You can debug multiple applications under TDW as follows:

     1. Load the first program to be debugged into TDW.

     2. Once the application is loaded, press the F3 key to
        display the Load Module Source or DLL Symbols dialog
        box.

     3. In the DLL Name text entry box, enter the name of the
        .EXE or  DLL to add. If the .EXE or DLL resides in
        another directory, you need to provide the full path.

     4. Press the Enter key. TDW adds the program name to the 
        DLLs & Programs list box and puts the !! symbol after it.

     5. Close the Load Module Source or DLL dialog box, return to
        the Module window, and set any necessary breakpoints in
        the first program.

     6. Press F9 to run the first program.

     7. Switch to the Windows Program Manager while the first
        program is running and run the second program in the usual
        way.

     8. You see the display switch back to TDW with the CPU
        window showing the start-up information of the second
        application. Close the CPU window.

     9. In the Module window, set any necessary breakpoints in
        the second application, then press the F9 key to run it.

     This method is useful for debugging DDE conversations or any
     other inter-program communication in the Windows environment.


  TDW.INI, the Windows initialization file for TDW
  ================================================
    TDW.INI is located in your local Windows directory. It is the
    Windows initialization file used by TDW. TDW.INI specifies
    the name and location of the Debugger DLL and the video driver
    DLL (if any) in the [TurboDebugger] section. It can also contain
    another section:

    o [VideoOptions], where you put settings for the video DLL, if any

    [TurboDebugger] section
    -----------------------
   WINDEBUG.DLL has been replaced by TDWIN.DLL. TDWIN.DLL can be
   located anywhere you wish (usually the main Windows directory).
   The DebuggerDLL entry must specify the full path to TDWIN.DLL.
  
   For example, if TDWIN.DLL is in the WINDOWS3.1 directory, its
   TDW.INI entry is
  
   [TurboDebugger]
   DebuggerDLL=c:\windows3.1\tdwin.dll
  
   The VideoDLL entry indicates a video support DLL for 8514 or
   Super VGA, because TDW doesn't support these video modes by
   default. This entry must specify the full path to the DLL. You
   can set various video options for the DLL in the
   [VideoOptions] section.  See the next section for a complete
   explanation of video DLL and options settings.


  SVGA support, the VideoDLL entry, and the [VideoOptions] section
  ----------------------------------------------------------------
   TDW handles most of the popular 2, 4, 16, and 256-color
   high-resolution Super VGA modes. If your card isn't supported
   correctly, you need to use a special Super VGA (SVGA) DLL.

   Currently, six DLLs are supplied with your language compiler to
   support various SVGA and 8514 video cards and modes. These DLLs are
   described in the next section. For information on how to specify the
   Video DLL or its options, see the sections "The VideoDLL entry" and
   "The [VideoOptions] section," which follow the "Video DLLs" section.


     Video DLLs
     ----------
     All the video DLLs described in this section are designed to work
     with the most current Windows screen drivers for your video card.
     If you're not sure if you're using the latest drivers, contact
     your video card manufacturer for more information.

     From time to time we have new DLLs for new video cards. These DLLs,
     when available, can be downloaded from Compuserve, BIX, GEnie, and our
     local BBS (408-439-9096). As new video cards and modes appear on the
     market, we will be creating new DLLs for them. If the card you use
     isn't supported by one of our DLLs, please contact Tech Support for
     the latest video DLL information.  Our main Tech Support phone number
     is 408-461-9133.


       ATI.DLL
       -------
       Works with the ATI VGA Wonder and XL cards in certain video modes.

       The latest ATI Drivers from ATI Technologies Inc. require the
       following TDW.INI file entries:


            Resolution   ATI.DLL  Int2FAssist
          -----------------------------------
          | 640X480    | Yes     |   Yes    |
          -----------------------------------
          | 800X600    | Yes     |   Yes    |
          -----------------------------------
          | 1024X768   | No      |    No    |
          -----------------------------------

       EXPLANATION: ATI.DLL is required in all video modes except
       1024 X 768 (this mode is directly supported by TDW). When the
       DLL is used (VideoDLL=ATI.DLL), Int2FAssist should be set to
       "yes" in the [VideoOptions] section.



       TSENG.DLL
       ---------
       Supports TSENG ET-3000 /ET-4000 based cards in certain
       video modes.

       The latest TSENG drivers are available from the Microsoft
       Windows Driver Library on CompuServe. They require the
       following TDW.INI file settings:


           Resolution   TSENG.DLL   Int2FAssist
          -------------------------------------
          | 640X480    | Yes       |   Yes    |
          -------------------------------------
          | 800X600    | No        |    No    |
          -------------------------------------
          | 1024X768   | No        |    No    |
          -------------------------------------

       EXPLANATION: TSENG.DLL should only be used with 640 X 480 X 256
       resolution (set VideoDLL=TSENG.DLL and put a "Int2FAssist=Yes"
       entry in the [VideoOptions] section). TDW directly supports the
       other TSENG resolutions.



       TDVESA.DLL
       ----------
       Supports any video card that does VESA emulation, whether
       through a TSR or video card firmware. Use this DLL with
       all resolution settings.

           NOTE: You can run VESATEST.EXE from either DOS or
           Windows to see if your system provides the proper
           VESA functions. If the emulation is not loaded, TDW
           will display an error message indicating that the
           video DLL is not supported by the current configuration.

       The TDVESA.DLL has been tested with the following video
       cards:

         o Video Seven VRAM II--uses V7VESA TSR supplied with card

         o Weitek Power Windows--emulates VESA with firmware.


       DUAL8514.DLL
       -------------
       Supports any dual-screen 8514 cards.  This DLL is only for
       systems that have two-color monitors, one attached to the VGA
       card and one attached to the 8415/A card.  It speeds up
       performance by preventing TDW from doing some things that
       aren't required in dual-monitor mode.

           NOTE: Using this DLL is not the same as invoking TDW
           with the -do parameter, which only specifies using a
           monochrome screen.


       STB.DLL
       -------
       Supports the MVP2 series of multi-screen video cards.


       ULTRA.DLL
       ---------
       Supports ATI Graphics cards, 8514 Ultra and Vantage cards
       (8514/Ultra, 8514/Vantage, Graphics/Ultra, and Graphics/Vantage),
       and 8514-based cards configured for a single monitor (including
       most IBM 8514/A cards).  If you use this DLL with an IBM 8514/A
       card, set "ATI=no" in the [VideoOptions] section of TDW.INI.


   The VideoDLL entry
   ------------------
   To use an SVGA DLL, simply edit the TDW.INI file that the installation
   program puts in your main Windows directory.  You can modify TDW.INI
   with any ASCII text editor.  Under the section heading [TurboDebugger]
   there is an option called "VideoDLL".  This entry should equal the
   path and filename of the DLL you want to use for SVGA support (see the
   example later in this file).

   If there is an error loading the DLL, or if the DLL doesn't support the
   selected card or mode, TDW reports the error in a Windows dialog box.
   When this happens, TDW unloads the DLL and exits. If this situation
   occurs, remove the DLL's name from the VideoDLL line in the TDW.INI
   file or select a video mode that is supported by that DLL.


   The [VideoOptions] section
   --------------------------
   There are options you can set for the current video DLL.  You list
   these options under the [VideoOptions] heading in any order you like.

   The following list shows all the video options:

     o SaveWholeScreen    --    default = no
     o Int2FAssist        --    default = no
     o DebugFile          --    default = <blank>
     o IgnoreMode         --    default = no
     o ATI                --    default = yes
     o Rows               --    default = 25
     o RestoreTextScreen  --    default = yes

   DebugFile can be either blank or set to a specific filename. The other
   four settings must be either "yes" or "no".  Rows must be 25 or 50.


     SaveWholeScreen   (ATI, TSENG, TDVESA)
     ---------------
     This option, normally set to 'no', determines whether the entire
     screen (512k - 64k from 8 planes) is saved (the entire graphics
     screen is cleared when switching to it) or if only the top 32K of
     planes 0 through 3 is saved (the entire screen is NOT cleared when
     switching modes.)

     Saving the whole screen is not usually necessary, but is provided
     in case you're using a nonstandard card that requires that the whole
     screen be saved.  It also provides support for the Alt-F5 key
     combination under Int2FAssist mode.


     Int2FAssist  (ATI, TSENG)
     -----------
     This option, normally set to "no", tells the DLL to make a special
     Int 2F call before switching video modes. This call tells the current
     Windows screen driver what's happening. The desired side-effect of this
     call is to make Windows tell all its child windows to repaint
     themselves. This option is provided mainly to support some ATI Wonder
     and TSENG chip set video modes.


     DebugFile   (ALL DLLs)
     ---------
     The video DLL normally doesn't log any debugging information. If
     you're having problems using a particular DLL, you can use the
     DebugFile option to specify the path and filename of a log file.
     You can use the information logged to this file if you need to
     contact Borland's Technical Support.

     The information logged is:

       o the date and time you ran TDW
       o the version & location of the DLL
       o the name of the current Windows screen driver
       o the state of all TDW.INI options
       o a listing of all calls and parameters to the DLL's functions


     IgnoreMode   (ATI, TSENG)
     ----------
     This option only applies when the video DLL is ATI.DLL or TSENG.DLL.
     It tells the DLL to not do any mode or card checking and to force the
     Int2FAssist option on.  This option is useful for cards that aren't
     directly supported by an official DLL yet, such as Paradise, Video-7,
     Trident, or any other video card without a graphics coprocessor.
     (With this option enabled, the functionality is identical to the
     temporary ALL.DLL that we offered in the past.)


     ATI   (ULTRA)
     ---
     This option is only used by ULTRA.DLL and is on by default.  If you
     disable it, you can use ULTRA.DLL on regular IBM 8514/A cards.


     ROWS  (ALL DLLs)
     ----
     This option is only used if you use a configuration file to change
     the number of rows to 43/50 from 25. If you choose to have TDW
     start in 50-line mode, set the Rows option to 50 in the TDW.INI file.


     RestoreTextScreen   (DUAL8514, STB)
     -----------------
     This option is valid only with DUAL8514.DLL and STB.DLL.  The
     settings are:

       o Yes    - restores TDW's screen after exiting.
       o No     - does not touch TDW's screen at all.
       o Clear  - forces the screen to clear upon exiting TDW.


   Video DLL example
   -----------------
   If you have an ATI VGA Wonder card and you want it to save
   the entire  screen and log information to a file named
   C:\WINDOWS\TDVIDEO.LOG,  the TDW.INI file will look something
   like this:

       [TurboDebugger]
       DebuggerDLL=c:\windows3.1\tdwin.dll
       VideoDLL=c:\borlandc\bin\ati.dll

       [VideoOptions]
       SaveWholeScreen=yes
       DebugFile=c:\windows\tdvideo.log


   Technical information
   ---------------------
   TDW, upon loading, looks for the video DLL in the following
   locations in the following order:

     1. The same directory TDW is running from

     2. The Windows main directory

     3. The location specified in TDW.INI


   If it finds the file, TDW accesses the DLL as needed. TDW makes
   calls to the DLL to handle the entire video screen-switching
   context. The DLL accomplishes the screen switching by allocating
   a buffer as it gets loaded. Graphics screen contents are then
   saved to this buffer when TDW enters text mode. The DLL restores
   the graphics screen from this buffer when TDW exits text mode.
   Memory allocated for the buffer is freed when the DLL is unloaded.


   Seeing the user screen of an application
   ----------------------------------------
   Some video modes might require some special handling. The Int2FAssist
   option allows these modes to work correctly on most systems. The
   behavior is as follows:

   When you set "Int2FAssist=yes", the DLL notifies Windows to tell
   all sub-windows on the screen to repaint themselves while the user
   application is running. This allows the user screen to be viewed
   when stepping, tracing, or running your application. It will not,
   however, switch to the user screen when you press the Alt-F5 key
   combination because TDW is still in control (TDW doesn't allow Windows
   to process any messages at this point.)

   If you also set "SaveWholeScreen=yes", pressing the Alt-F5 key
   combination shows the user screen. (The DLL will now copy the screen
   back for you.) The drawback to enabling SaveWholeScreen is that it
   will take longer to step or trace if TDW needs to switch back to
   the user screen for that particular instruction. Also, extra messages
   will be passed to your application that normally wouldn't be passed.
   This may affect the debugging of certain pieces of code (like finding
   a bug in an owner-draw control). In these cases, you won't want to use
   this option on the current video mode.

   Using TDW in Dual Monitor Monochrome Mode
   ----------------------------------------
   If TDW is activated using the -do switch, there is no need for
   a video DLL or a value in the VideoDLL section of TDW.INI. The
   value in VideoDLL should be removed as follows:

    [Debugger]
    VideoDll=


  Known Problems
  ==============

  - If you have any lines in your SYSTEM.INI that rename DLLs, such as
    "sound.dll=mysound.drv", TDW might display the error "Can't find 
    sound.dll" when it loads a program that uses the DLL.  To solve this 
    problem, use the -wd command switch to disable TDW's DLL checking when 
    you load such a program.

  - Some Windows mouse drivers are incompatible with TDW and will
    cause the mouse cursor to get scrambled when debugging DOS
    graphics applications on a second monitor (-do option).  If
    that happens, you can try a different driver or turn off the
    mouse in TD by using the -p- option on the TD command line.
    The mouse will still be active in the target application.

  - The first time a program is run under TDW or TPROFW, mouse
    messages are processed normally. However, on every subsequent
    execution of that program, you must press a key on the
    keyboard before mouse messages can be processed.

  - TSENG ET-4000 video chip set problems

    Under Windows 3.1, if you use the standard Windows VGA or
    SuperVga driver with a video card that uses the TSENG
    ET-4000 chip set, you might encounter a number of problems
    with running TDW on a single monitor.

    o The hardware cursor (the white cursor displayed in all
      dialog boxes that require text input) is invisible, but you
      can still debug your program.

    o On certain TSENG 4000-based cards (such as the Diamond
      Speedstar VGA card), when you launch TDW the default
      character set is replaced by graphic characters.

   To overcome this problem please contact Microsoft Corp and ask
   for the updated TSENG drivers that were NOT shipped with
   Windows 3.1. They are also located in the Microsoft Forum (GO
   MSOFT) under the Microsoft Software Library heading in
   CompuServe.
  
        Filenames      Date
        ---------      ----

        TSENG1.EXE     4/6/92
        TSENG2.EXE     4/6/92
        TSENG3.EXE     4/6/92
        TSENG4.EXE     4/6/92
  
  
   In the meantime, you can use one of the following alternatives:
  
   - Run Windows Setup and replace your Windows 3.1 VGA or SVGA
     driver with the Version 3.0 VGA driver supplied with Windows
     3.1.
  
   - Start TDW from the DOS command line. For example,
  
     WIN TDW myprog
  
   - Each time you launch Windows, run a full screen DOS session
     and type "exit" to close it. After you do this, when you run
     TDW, it will use the correct character set.

  Resource Workshop

  - 256-Color bitmaps and RLE4 compression:

    Due to problems with many 256-color display drivers for
    Windows 3.x, saving a bitmap with the RLE4 compression
    feature of Resource Workshop enabled can fail to produce
    valid output files.

    Under Windows, the display driver is responsible for
    providing RLE compression when it is requested. However,
    because many display drivers do not implement this feature
    correctly, we recommend that you take the following steps
    when attempting to use RLE4 compression:

    1. Save the bitmap with the compression option set to "None".
       This ensures that you will have a usable copy of your
       bitmap if the remaining steps are not successful.

    2. Set the compression option to "RLE4".

    3. Select Resource|Save Resource As and save the bitmap under a
       different file name.

    4. Select File|Open Project and load the compressed version of
       the bitmap.

    If you cannot load the compressed bitmap, you must use the
    uncompressed bitmap file you saved in step 1.

    If your 256-color driver fails to compress the bitmap correctly,
    contact the display driver vendor.


    Flood-fill with the paint bucket tool
    -------------------------------------

    Because of problems inherent to display drivers, flood-filling a
    section of a bitmap using the paint bucket tool can fail to
    produce the desired result.

    Resource Workshop provides an alternate version of the flood-fill
    algorithm that is slower but more reliable than the version
    provided by most Windows 3.x display drivers.

    You can enable Resource Workshop's flood-fill algorithm by adding
    a flag called "RWS_OwnFloodFill" to the Icon editor section
    ([RWS_Icon]) of WORKSHOP.INI. Set the flag to 1.

    The edited section of WORKSHOP.INI should look something like
    this:

        [RWS_Icon]
        RWS_OwnFloodFill=1
        PercentLeft=50
        ZoomLeft=8
        ZoomRight=1
        bVert=1

    Contact the display driver vendor if you experience flood-fill
    problems.



  CLASS LIBRARY

  - If you used the add(), addAt(), or getItemsInContainer()
    member functions of the Array class in Borland C++ 2.0
    applications, note that their behavior has changed slightly.
    The following rules apply to these and related functions:

      1. add() will insert its argument at the lowest available
         location in the Array.  This location is known as the
         "insertion point".

      2. detach() will remove its argument from the Array, and if
         that Object is located below the insertion point, it
         will move the elements above the Object being removed
         and below the insertion point down one position, so that
         the elements below the insertion point remain
         contiguous.  The insertion point, of course, moves down
         one.

      3. if the location specified in a call to addAt() is below
         or at the insertion point, the elements above the
         specified location and below the insertion point are
         moved up one position, and the Object is inserted.  The
         insertion point moves up one.

      4. if the location specified in a call to addAt() is above
         the insertion point, the Object is inserted at that
         location, replacing any Object that may have been placed
         there previously.

      5. getItemsInContainer() returns the number of elements
         below the current insertion point.  If you use addAt()
         to add elements above the insertion point, they will not
         affect the value returned by getItemsInContainer(). 
         This is a change from the behavior in the previous
         version of the class library.

  - Two versions of the class library sources are provided; one
    using an implementation using C++ templates, and one not using
    templates. The small and dynamic link libraries are provided, and
    a makefile is provided to build other models.


  ObjectWindows LIBRARY

  - You must rebuild the class libraries in the appropriate model
    for the intended OWL model if they don't already exist - see
    paragraph above.

  - Due to restrictions on code size, compact model is no longer
    supported for OWL applications.

  - Note that you must use the TWindow member function AssignMenu
    to assign a window's Attr.Menu member and to load a menu for
    that window.

  - You must alter project files to indicate compatibility
    with either Turbo C++ version 3.0 or 3.1. Add WIN30
    for OWL projects from Turbo C++ 3.0, or WIN31 for
    projects created under Turbo C++ 3.1, to the defines
    under Options|Compiler|Code Generation.

  - World of ObjectWindows video users need to make modifications
    to their Borland C++ 3.0 make or project files in order to
    successfully compile their OWL code with Borland C++ 3.1. You
    must define the WIN30 flag when compiling the OWL Video code.
    In MAKEFILE.INC add the text, "-DWIN30" to the four 'CFLAGS'/
    'CFLAGSD' lines.  In all project files, you must go to Options|
    Compiler|Code Generation and put WIN30 in the Defines combo box
    field (at the bottom of this dialog).


  Please see OWL31.DOC for additional information on ObjectWindows
  Library.



 5.  CORRECTIONS TO THE DOCUMENTS
---------------------------------

ObjectWindows User's Guide
--------------------------
  Chapter 2, "Stepping through Windows"
  -------------------------------------
    Page 22
    -------
      The sentence that begins "These libraries are located in the library 
      directories listed in the following table..." should instead read
      "Table 2.2 lists the file names of the static ObjectWindows library 
      and static container class library for each supported memory model."

  Chapter 11, "Dialog objects"
  ----------------------------
    Page 151
    --------
      In the TSampleWindow::GetName fragment shown, a line is in error. 
      The line that begins
         if ( ExecDialog(new TInputDialog(this...
      should read
         if ( GetApplication()->ExecDialog(new TInputDialog(this...

  Chapter 12, "Control objects"
  ----------------------------
    Page 158+
    ---------
      Although it doesn't specifically state so, TListBox and its member
      functions can be used with both single- and multiple- selection
      list boxes.

