home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c082_122 / 1.ddi / README < prev    next >
Encoding:
Text File  |  1992-06-10  |  55.0 KB  |  1,396 lines

  1.           Welcome to Borland C++ & Application Frameworks 3.1
  2.           ---------------------------------------------------
  3.  
  4.   This README file contains important information about Borland C++.
  5.   For the latest information about Borland C++ and its accompanying
  6.   programs and manuals, read this file in its entirety.
  7.  
  8. TABLE OF CONTENTS
  9. -----------------
  10. 1.  How to Get Help
  11. 2.  Installation
  12. 3.  Features
  13. 4.  Important Information
  14. 5.  Testing Your Expanded Memory
  15. 6.  Corrections to the Documents
  16.  
  17.  
  18.  1. HOW TO GET HELP
  19. -------------------
  20.   If you have any problems, please read this file, the
  21.   HELPME!.DOC and other files in your DOC subdirectory, and the
  22.   Borland C++ manuals first. If you still have a question and
  23.   need assistance, help is available from the following sources:
  24.  
  25.   1. Type
  26.  
  27.         GO BCPPDOS     - for questions pertaining to DOS
  28.  
  29.          or
  30.  
  31.         GO BCPPWIN     - for questions pertaining to Windows
  32.  
  33.      on the CompuServe bulletin board system for
  34.      instant access to the Borland forums with their libraries of
  35.      technical information and answers to common questions.
  36.  
  37.      If you are not a member of CompuServe, see the enclosed
  38.      special offer, and write for full details on how to receive
  39.      a free IntroPak containing a $15 credit toward your first
  40.      month's on-line charges.
  41.  
  42.   2. Check with your local software dealer or users' group.
  43.  
  44.   3. Borland's TECHFAX service. Call (800) 822-4269 for a FAX 
  45.      catalog of entries.
  46.  
  47.   4. If you have an urgent problem that cannot wait and you have
  48.      sent in the license agreement that came with the package,
  49.      you may call the Borland Technical Support Department at
  50.      (408) 461-9133. Please have the following information ready
  51.      before calling:
  52.  
  53.      a. Product name and serial number on your original
  54.         distribution disk.  Please have your serial number ready
  55.         or we will be unable to process your call.
  56.  
  57.      b. Product version number. The version number for Borland
  58.         C++ can be displayed by pressing Alt-H/A in the IDE.
  59.  
  60.      c. Computer brand, model, and the brands and model numbers of
  61.         any additional hardware.
  62.  
  63.      d. Operating system and version number. (The version number
  64.         can be determined by typing VER at the DOS prompt.)
  65.  
  66.      e. Contents of your AUTOEXEC.BAT file.
  67.  
  68.      f. Contents of your CONFIG.SYS file.
  69.  
  70.  2. INSTALLATION
  71. ----------------
  72.  
  73.   You MUST use the INSTALL program to install Borland C++. The
  74.   files on the distribution disks are all archived and have to be
  75.   properly assembled.  You cannot do this by hand!
  76.  
  77.   Installing to the same directory structure as a previous version
  78.   without erasing the directories is not recommended; you may
  79.   encounter problems due to old header files, libraries, memory
  80.   managers, or configuration files.
  81.  
  82.   To start the installation, change your current drive to the one
  83.   that has the install program on it and type INSTALL.  You will
  84.   be given instructions in a box at the bottom of the screen for
  85.   each prompt. For example, if you will be installing from drive
  86.   A:, type:
  87.  
  88.     A:
  89.     INSTALL
  90.  
  91.   -  This INSTALL handles the installation of both the compiler
  92.      and debugger and tools in one operation, and allows several
  93.      new configuration options.
  94.  
  95.   -  Note: The list of files is contained in a separate file
  96.      called FILELIST.DOC, which will appear in the target
  97.      directory you specify during installation.
  98.  
  99.   -  After installation, make sure you insert \BORLANDC\BIN - or
  100.      whatever you selected as your BIN directory - into
  101.      your DOS path so the DLL and executable files can be found.
  102.  
  103.   -  If you have previously installed Resource Workshop, make sure
  104.      that you remove the directory of that version from your path. The
  105.      version included on these disks supercedes previous versions.
  106.  
  107.   -  If you use a Windows command shell other than Program Manager,
  108.      you may not get a Borland C++ group installed for Windows. If
  109.      you don't, use File|Run in Program Manager to run the following
  110.      command:
  111.  
  112.           GROUPS GROUPS.B$$
  113.  
  114.      You will then have a new group for Borland C++.
  115.  
  116.   -  After your initial installation, you can run INSTALL again to
  117.      add elements you omitted the first time. Select only the
  118.      things you want to add in the INSTALL options screen. Because
  119.      some things you may want to save could be overwritten, review
  120.      the following items to make sure you don't lose important
  121.      information:
  122.  
  123.      1.  Selecting CMD (the Command-line compiler) causes an 
  124.          overwrite of any existing TURBOC.CFG & TLINK.CFG file
  125.          with path information provided in that INSTALL session.
  126.          Any switches that you have added will not be preserved.
  127.  
  128.      2.  By selecting any one of the following, the help file
  129.          paths and choices for THELP.CFG will reflect the current
  130.          session's installation choices: 
  131.          
  132.               a. CMD - command-line compiler 
  133.               b. IDE - integrated environment
  134.               c. TD - Turbo Debugger
  135.               d. TASM - Turbo Assembler 
  136.               e. TV - Turbo Vision
  137.               f. OWL - ObjectWindows library
  138.  
  139.      3.  If you have made any alterations to headers or startup files
  140.          they will be overwritten if any library models are selected.
  141.  
  142.      4.  Selecting the Create BorlandC++ Group option will add a
  143.          group to the desktop and insert the appropriate icons
  144.          into that group if this is a first time installation. If
  145.          this is a re-installation this option will insert the
  146.          appropriate icons into the existing group.
  147.  
  148.      In general, any selection you make of something installed
  149.      earlier will cause an overwrite of the earlier version
  150.      without prompting.
  151.  
  152.      An attempt to install to a network directory for which you
  153.      don't have delete rights will fail with the message "Invalid
  154.      directory." Make sure delete rights are secured before
  155.      attempting an installation to a network.
  156.  
  157.   You should read the rest of this README file to get further
  158.   information about this release before you do the installation.
  159.   See also the files in the DOC subdirectory after installation
  160.   for general information not included in the manuals.
  161.  
  162.  
  163.  3. NEW FEATURES
  164. ----------------
  165.  
  166.   - Borland C++ for Windows: A Windows-hosted IDE which produces
  167.     Optimized code. The same Optimization options available in BC.EXE 
  168.     are in BCW.EXE.
  169.  
  170.   - Color syntax highlighting: All IDEs now highlight your source
  171.     according to syntax. See the choices under Options|Environment|
  172.     Colors|Edit Window in the DOS IDE and Options|Environment|
  173.     Highlight in the Windows IDEs. This option is enabled by
  174.     Options|Environment|Editor|Syntax Highlighting.
  175.  
  176.   - 386 code generation: An option has been added to produce 386
  177.     instructions in the generated code. Use -3 at the command line,
  178.     or Options|Compiler|Advanced Code Generation|80386 in the IDEs.
  179.  
  180.   - The Object Data calling convention for improved efficiency of C++
  181.     code. See the User's Guide chapter, "The Command-line Compiler",
  182.     under the option -po for more information. This option is also
  183.     available under Options|Compiler|Optimizations|Object data calling
  184.     in the IDE.
  185.  
  186.   - Windows 3.1 support: All executables and DLLs have been modified
  187.     appropriately for compatibility with Version 3.1 of Windows.
  188.     The ObjectWindows Library header files have been modified for
  189.     compatibility with the new Windows header files as well.
  190.  
  191.     NOTE CONCERNING USE OF MICROSOFT WINDOWS 3.1 REDISTRIBUTABLES FOR
  192.     APPLICATIONS RUNNING ON MICROSOFT WINDOWS 3.0
  193.  
  194.     This Borland language product contains everything you need to develop
  195.     applications to run on the most recent version of Microsoft Windows,
  196.     version 3.1.  In some cases, you may need to copy and include in your
  197.     application one or more Microsoft "redistributable" files from a copy
  198.     of version 3.1 so that your application will also run on version 3.0.
  199.     Microsoft informs us that you may copy the redistributable files from
  200.     from Microsoft Windows 3.1 for this purpose.  If you do so, you must
  201.     comply with the conditions stated in the Borland No-Nonsense License
  202.     Statement included in this package as if the redistributable files you
  203.     copy were a part of this Borland language product.  Microsoft's
  204.     redistributable files in Windows 3.1 are:
  205.  
  206.        winhelp.exe, winhelp.hlp, commdlg.dll, ddeml.dll, toolhelp.dll,
  207.        vtd.386, olecli.dll, olesvr.dll, ver.dll, lzexpand.dll,
  208.        expand.exe, regload.exe, stress.dll, dib.drv, markmidi.exe,
  209.        penwin.dll, and shell.dll.
  210.  
  211.     If you do not find any of these files in the BIN directory, they
  212.     are also included in the Windows retail distribution, and installed
  213.     in your Windows directories.
  214.  
  215.   - WinSpector, a postmortem Windows debugging tool that traps
  216.     general protection faults and provides information on where 
  217.     the fault occurred and the state of the machine at the time.
  218.  
  219.   - You can now increase the number of files that can be open
  220.     at one time in a DOS program by a simple modification of the
  221.     runtime library.
  222.  
  223.     First, modify _NFILE.H in your INCLUDE directory by changing
  224.     the #define for _NFILE_:
  225.  
  226.        #define _NFILE_ n
  227.  
  228.     where n is the number of files you want to open. Make sure the
  229.     FILES statement in your CONFIG.SYS file specifies at least
  230.     this number.
  231.  
  232.     Then compile the two files FILES.C and FILES2.C in the LIB
  233.     directory:
  234.  
  235.        BCC -c -m<model> files.c files2.c
  236.  
  237.     where <model> is the memory model you're using.
  238.  
  239.     Then link them directly with the program which opens the files,
  240.     for instance:
  241.  
  242.        BCC myfile.c files.obj files2.obj
  243.  
  244.     If you want the change to apply to all modules, add
  245.     FILES.OBJ and FILES2.OBJ created above to the libraries
  246.     you use; from the LIB directory, type:
  247.  
  248.        TLIB c<model> +-files.obj +-files2.obj
  249.  
  250.     where <model> matches what you used for the BCC command
  251.     above.
  252.  
  253.  
  254. DPMI
  255. ----
  256.  
  257. BC.EXE, BCC.EXE, MAKE.EXE, and TLINK.EXE are now hosted under
  258. DPMI. These files replace both the files with the same name in
  259. Borland C++ 2.0 and the BCX.EXE, BCCX.EXE, and TLINKX.EXE files
  260. in the same product. There is no longer a TKERNEL.EXE file.
  261.  
  262. Important!
  263. ----------
  264. You must have at least 1Mb of extended memory to run these programs.
  265.  
  266. If you encounter a "machine not in database" message while attempting
  267. to run the compiler, run the DPMIINST program to add your machine
  268. configuration to the DPMI server database.
  269.  
  270. This version includes a resident DPMI host program, DPMIRES.EXE,
  271. that allows you to preload the server before invoking BC, BCC, or
  272. any other DPMI-hosted executables. If you want to run such hosted
  273. EXEs in a Windows Standard Mode DOS window, you should run
  274. DPMIRES.EXE before loading Windows. To do this, enter the
  275. following commands at DOS:
  276.  
  277.   set DPMIMEM=MAXMEM 2000
  278.   dpmires
  279.   win /s
  280.  
  281. If you want to limit the amount of extended memory used by the
  282. DPMI-hosted executables, an environment variable called DPMIMEM
  283. can be set to do so. For instance, the command
  284.  
  285.   set DPMIMEM=MAXMEM 2000
  286.  
  287. reserves about 2 Mb of memory for DPMIRES. The number after MAXMEM
  288. can be adjusted, but cannot be lower than 1000.
  289.  
  290. DPMIRES should not be run before running Windows in Enhanced Mode.
  291. Windows requires its own DPMI services.
  292.  
  293. The hosted executables cannot spawn each other when SHARE is loaded.
  294. For instance, if you run MAKE on a file which in turn calls MAKE
  295. again, you will get a sharing violation. In this specific case,
  296. you can call the real mode version, MAKER, within the given makefile,
  297. and a sharing violation won't occur.
  298.  
  299. Note to OS/2 users: To run any DPMI-hosted executables, like BC, BCC,
  300. or TLINK, in a DOS Window, you need to enable DPMI for that window:
  301.  
  302.    - Click the right mouse button on a DOS window icon in Command
  303.      Prompts
  304.  
  305.    - Select Open|Settings|Session|DOS Settings|DPMI_DOS_API and select
  306.      ENABLED.
  307.  
  308. Note to EMM386.SYS users: To run DPMI-hosted EXEs, under the EMM386
  309. included with Windows 3.1, you need to apply a patch to our files
  310. as follows:
  311.  
  312.    - Go to the BIN directory
  313.    - Type the following command:
  314.  
  315.           patch server.dif dpmi16bi.ovl
  316.  
  317. You will now be able to run BC, BCC, etc.
  318.  
  319.  
  320.  4. IMPORTANT INFORMATION
  321. -------------------------
  322.  
  323.   - There is now only one version of the DOS IDE, BC.EXE, and
  324.     of the command-line compiler program, BCC.EXE. Because the
  325.     BCX and BCCX files are no longer in Borland C++,  you'll need
  326.     to alter batch or make files that use those names.
  327.  
  328.   - Borland C++ only supports Protected Mode Windows target
  329.     files. Make sure to use the /t option when using the Resource
  330.     Compiler if you want to enforce Protected Mode usage.
  331.  
  332.   - When using Brief with THELP, make sure to use Brief's -p
  333.     switch to ensure that the THELP window will be visible.
  334.  
  335.   - We recommend that you use the following mouse drivers with
  336.     this product:
  337.  
  338.        Microsoft Mouse version 7.04 or later;
  339.        Logitech Mouse version 5.01 or later;
  340.        Genius Mouse version 9.06 or later.
  341.  
  342.   - If you use MAKE or the IDE's Project Make to invoke the Resource
  343.     Compiler, the .RC files you wish to compile MUST be in the same 
  344.     directory as your project or makefile.  This is because the Microsoft
  345.     Resource Compiler does not properly handle relative path names, and
  346.     returns a misleading error message that refers to an incorrectly
  347.     spelled version of your .RC file.
  348.  
  349.   - If you get a "floating point formats not linked" message at
  350.     runtime, put the following somewhere in your source files:
  351.  
  352.         extern void _floatconvert();
  353.         #pragma extref _floatconvert
  354.  
  355.     This will force inclusion of floating point formats, which
  356.     may not be linked to reduce executable size.
  357.  
  358.   - Make sure that you use the -WE switch (Options|Compiler|Entry|
  359.     Windows <DLL> explicit functions exported in the IDE) when
  360.     using the fastcall modifier. The same applies when using the
  361.     fastcall compilation option (-pr on the command line,
  362.     Options|Compiler|Entry|Register in the IDE.) Also see the first
  363.     entry on using fastcall with main() in "COMPILER" below.
  364.  
  365.   - If the Windows 3.0 home directory precedes the Borland C++ BIN
  366.     directory in your path, attempting to access Help will result in the
  367.     message "This version of Help file not supported." To enable
  368.     Help, either reorder your path or copy WINHELP.EXE to your Windows
  369.     3.0 directory.
  370.  
  371.   - This compiler uses more strict checking of C++ syntax and argument
  372.     matching than previous versions. You can expect more warning
  373.     and error messages based on the ANSI C++ version 3.0 standard.
  374.  
  375.   - If you receive a "bad object record" message from the linker when
  376.     building OWL or container class library applications, you are
  377.     probably using the Borland C++ version 3.0 class libraries and/or
  378.     OWL libraries. Make sure your library path specifies version 3.1
  379.     libraries for those applications.
  380.  
  381.   COMPILER
  382.  
  383.   - When using fastcalls (-pr command line option) you are
  384.     required to explicitly use the C calling convention, "cdecl",
  385.     for main. For example:
  386.  
  387.         int cdecl main( )
  388.  
  389.     In Borland C++ 3.0 the compiler did not correctly name main when
  390.     fastcalls were used, with the result that you were not
  391.     required to cdecl main (in all cases).  This is a dangerous
  392.     condition and the compiler now (correctly) names main,
  393.     resulting in a linker error in Borland C++ 3.1 for those Borland C++
  394.     3.0 compiled programs that didn't cdecl main.
  395.  
  396.     Please correct any "non-cdecl main" definitions, if compiled
  397.     with fastcalls.
  398.  
  399.   - In Borland C++ 3.0 the compiler allowed conversions from "const void*"
  400.     to "void *", contrary to ANSI; for Borland C++ 3.1 this is no
  401.     longer allowed.  In addition, several other conversions
  402.     regarding const variables have also been restricted.  If you
  403.     are a user of the const keyword, expect that you may have
  404.     conversions that were allowed to exist with Borland C++ 3.0 that
  405.     will need to be changed in order to compile using Borland C++ 3.1.
  406.  
  407.   - In Borland C++ 3.0 the following syntax was allowed-
  408.  
  409.             class foo{
  410.             ...
  411.             }       // note that the semicolon is missing here
  412.  
  413.             f(){
  414.             ...
  415.             }
  416.  
  417.     The new compiler now requires the semicolon to be added after
  418.     the class declaration. The compiler would interpret the
  419.     example above as an attempt to return a class declaration to
  420.     f().
  421.  
  422.   - A new implicit conversion rule is now enforced for constructors.
  423.  
  424.     From page 573 of The C++ Programming Language 2nd Edition:
  425.  
  426.  
  427.       "When no constructor for class X accepts the given type, no
  428.        attempt is made to find other constructors or conversion
  429.        functions to convert the assigned value into a type acceptable
  430.        to a constructor for class X."
  431.  
  432.     For example,
  433.  
  434.             class X { /* ... */ X(int); };
  435.             class Y { /* ... */ Y(X); };
  436.             Y a = 1;  // illegal: Y(X(1)) not tried
  437.  
  438.     Note that this rule only applies to constructors with ONE parameter.
  439.  
  440.   - The inport/outport functions have been changed to accept an
  441.     unsigned parameter instead of an int. The new prototypes are:
  442.  
  443.      unsigned      inport(unsigned)
  444.      unsigned char inportb(unsigned)
  445.      void          outport(unsigned, unsigned)
  446.      void          outportb(unsigned, unsigned char)
  447.  
  448.   - We have new resource compiler and linker components:
  449.  
  450.     BRCC is the Borland Resource Compiler. RLINK is the resource 
  451.     linker/binder. BRC.EXE calls BRCC.EXE and RLINK.EXE, and is an 
  452.     equivalent to Microsoft's Windows 3.1 RC. New features that 
  453.     may not be found in other products include:
  454.  
  455.        - Binding of multiple RES files is supported under RLINK.
  456.  
  457.        - Resource ID conflicts are detected and resolved during
  458.          binding.
  459.  
  460.     For more information, see the file MANUAL.RW located in your
  461.     \BORLANDC\DOC directory.  
  462.  
  463.   - There is currently support in ObjectWindows for STRICT and
  464.     non-STRICT versions of OWL programs for Borland C++ versions
  465.     3.0 and 3.1. Simply define the macros WIN30 or WIN31, and add a
  466.     definition for STRICT if you need STRICT compliance. For
  467.     more details see WIN31.DOC in the DOC directory and
  468.     OWL31.DOC in the OWL\DOC directory.
  469.  
  470.   - The default extension for source files to the command-line
  471.     compiler is .CPP; that is, if you enter
  472.  
  473.        BCC -c test
  474.  
  475.     the compiler will search for test.cpp, and give an error if a
  476.     file of that name cannot be found. If you want to have the
  477.     command-line compiler assume a .c extension and C language
  478.     source, use the command-line option -P-c. For more
  479.     information, see "The command-line compiler" in the User's
  480.     Guide.
  481.  
  482.   - Note that the Generate COMDEFs choice under
  483.     Options|Compiler|Code Generation and the -Fc command-line
  484.     option are only supported in the C language. Linker errors
  485.     will result if you attempt to use a communal variable in C++.
  486.  
  487.   - The macros min() and max() are not defined when stdlib.h is
  488.     compiled as C++ (to allow their use in 3rd party libraries,
  489.     etc.).
  490.  
  491.   - Note that files with the extension .SYM can come from at least
  492.     two different sources: Borland's precompiled headers, and the
  493.     output of Microsoft's MAPSYM or Borland's TMAPSYM programs,which
  494.     can also be used by SYMDEB and other debuggers.
  495.  
  496.     These files do not have compatible formats, so collisions
  497.     should be avoided by renaming the precompiled header file
  498.     with -H=<filename> on the BCC command line, or as a BCC transfer
  499.     option in the IDE.
  500.  
  501.   - There is now full support of distance modifiers (near and
  502.     far) used for class member pointers. Here are two sample
  503.     declarations and their meanings:
  504.  
  505.        void (A::* far var) ();
  506.  
  507.     this is a far variable 'var' of type 'void (A::*)()';
  508.  
  509.        void (far A::* var) ();
  510.  
  511.     this is a 'default distance' variable 'var' of type
  512.    'void (far A::*)()'
  513.  
  514.   - You must use "smart callbacks" - -WS from the command line,
  515.     Options| Compiler|Entry/Exit Code|Windows smart callbacks in
  516.     the IDE - if your application uses classes whose code is in a
  517.     DLL. This applies especially in the case of a class
  518.     implemented in an EXE which is derived from another
  519.     implemented in a DLL, which normally applies for users of OWL
  520.     and other object-oriented class libraries.
  521.  
  522.   - If you use C++ templates, and use a separate TLINK command
  523.     line rather than letting BCC invoke TLINK, you should make
  524.     sure that you turn on case-sensitive links with the /c switch.
  525.  
  526.  
  527.   IDE
  528.  
  529.   - When debugging a mouse application the Options|Debugger|Display
  530.     Swapping option should be set to "Always" for best results.
  531.  
  532.   - Defines entered under Options|Compiler|Code Generation entered
  533.     with semicolons don't apply to RC project items. If you need to
  534.     make multiple definitions for resource compilation in the IDE,
  535.     enter separate defines in the Project Local Options, for example:
  536.  
  537.         -dDEF1 -dDEF2=1
  538.  
  539.   - In the DOS IDE, the mouse cursor is turned off during compilation
  540.     for performance improvements.
  541.  
  542.   - If you run File|Printer setup from BCW.EXE (or another Windows
  543.     application which has printer setup support) under the Windows
  544.     3.0 debugging kernel, you will get a System Error from Windows.
  545.     You must switch to the NODEBUG version to run this option.
  546.  
  547.   - The initial block marking behavior in the IDE is determined
  548.     by which version of the IDE is used first after installation.
  549.     Invoking BCW.EXE first will cause Windows-style block marking
  550.     conventions to be in effect; otherwise the standard DOS IDE
  551.     behavior will be used. You can change the behavior by
  552.     selecting Options|Environment| Editor and changing the
  553.     settings for Persistent blocks and Overwrite blocks.
  554.  
  555.   - The first time you open certain projects in Borland C++ for
  556.     Windows (BCW), you will get a dialog indicating that one or
  557.     more items will be converted. This will occur for all Windows
  558.     projects existing prior to BC 3.1 and for all DOS projects
  559.     that you open in BCW.  The purpose of the dialog is to
  560.     indicate to you that certain changes need to be made to the
  561.     project to allow it to compile properly for Windows. DOS
  562.     projects that are opened in BCW will need to be changed to
  563.     target Windows, and many projects will need to generate 80286
  564.     code rather than 8088 code.  You have several options
  565.     regarding saving the changes:
  566.  
  567.       Don't auto save project
  568.       Warn before saving project
  569.       Save project now
  570.  
  571.     The first option will be the most likely choice for DOS C++
  572.     programs that you bring up in BCW in order to browse classes.
  573.     When you close the project, it won't be saved, so that you don't
  574.     lose the options you have already set.
  575.  
  576.     If you select the second option, you will be given the choice of
  577.     saving the project when you close it.
  578.  
  579.     The last option saves the project with the new settings
  580.     immediately.  For your current Windows projects, you will
  581.     probably want to choose this option so that this dialog will no
  582.     longer come up for the project.
  583.  
  584.   - The RC.EXE included in this release targets Windows 3.1. You
  585.     will need to include the -30 option for RC files in any project
  586.     intended to run under Windows 3.0. Use Options|Transfer|Resource
  587.     Compiler|Edit|Command line, and change the entry to:
  588.  
  589.        -30 $RC
  590.  
  591.     If you use PRJ2MAK on a project which uses this option,
  592.     you will need to edit the resulting .MAK file, and move
  593.     the "-30" option to the RC line which links the .RES
  594.     file to the .EXE file. For instance, the line output by
  595.     PRJ2MAK may look like:
  596.  
  597.             rc filename.res filename.exe
  598.             ..
  599.             rc -30 <other options> filename.res filename.rc
  600.  
  601.     Change this to
  602.  
  603.             rc -30 filename.res filename.exe
  604.             ..
  605.             rc  <other options> filename.res filename.rc
  606.  
  607.   Resource Workshop
  608.  
  609.   - 256-Color bitmaps and RLE4 compression:
  610.  
  611.     Due to problems with many 256-color display drivers for Windows
  612.     3.x, saving a bitmap with the RLE4 compression feature of
  613.     Resource Workshop enabled can fail to produce valid output files.
  614.  
  615.     Under Windows, the display driver is responsible for providing
  616.     RLE compression when it is requested. However, because many
  617.     display drivers do not implement this feature correctly, we
  618.     recommend that you take the following steps when attempting to
  619.     use RLE4 compression:
  620.  
  621.     1. Save the bitmap with the compression option set to "None".
  622.        This ensures that you will have a usable copy of your bitmap
  623.        if the remaining steps are not successful.
  624.  
  625.     2. Set the compression option to "RLE4".
  626.  
  627.     3. Select Resource|Save Resource As and save the bitmap under a
  628.        different file name.
  629.  
  630.     4. Select File|Open Project and load the compressed version of
  631.        the bitmap.
  632.  
  633.     If you cannot load the compressed bitmap, you must use the
  634.     uncompressed bitmap file you saved in step 1.
  635.  
  636.     If your 256-color driver fails to compress the bitmap correctly,
  637.     contact the display driver vendor.
  638.  
  639.  
  640.     Flood-fill with the paint bucket tool
  641.     -------------------------------------
  642.  
  643.     Because of problems inherent to display drivers, flood-filling a
  644.     section of a bitmap using the paint bucket tool can fail to
  645.     produce the desired result.
  646.  
  647.     Resource Workshop provides an alternate version of the flood-fill
  648.     algorithm that is slower but more reliable than the version
  649.     provided by most Windows 3.x display drivers.
  650.  
  651.     You can enable Resource Workshop's flood-fill algorithm by adding
  652.     a flag called "RWS_OwnFloodFill" to the Icon editor section
  653.     ([RWS_Icon]) of WORKSHOP.INI. Set the flag to 1.
  654.  
  655.     The edited section of WORKSHOP.INI should look something like
  656.     this:
  657.  
  658.         [RWS_Icon]
  659.         RWS_OwnFloodFill=1
  660.         PercentLeft=50
  661.         ZoomLeft=8
  662.         ZoomRight=1
  663.         bVert=1
  664.  
  665.     Contact the display driver vendor if you experience flood-fill
  666.     problems.
  667.  
  668.  
  669.   WinSight
  670.  
  671.   - WinSight traces messages received by GetMessage or SendMessage. It
  672.     does not trace messages sent directly by function call such as
  673.     WM_INITDIALOG.
  674.  
  675.   - Please note that messages displayed as "dispatched" are actually
  676.     intercepted at the time of GetMessage, not DispatchMessage.
  677.  
  678.  
  679.   EXAMPLE PROGRAMS
  680.  
  681.   - When you are running any example programs that come with .PRJ
  682.     files, if you didn't use the standard directories when you
  683.     installed Borland C++ you will have to change the .PRJ file
  684.     to reflect your actual directory setup.  Do this from inside
  685.     Borland C++ with Alt-O/D.
  686.  
  687.   - When run under the Windows 3.1 debug kernel, many OWL examples will
  688.     cause a message to be displayed like these:
  689.  
  690.         USER: Invalidation with fErase==FALSE prevents WM_ERASEBKGND
  691.         Kernel: GlobalCompact(FFFFFFFF), discarding segments
  692.  
  693.     These messages are valid runtime warnings, but they don't
  694.     indicate improper implementation; they are supplied for the
  695.     information of the user or programmer under the debug kernel.
  696.  
  697.   - To build the help file for the HELPEX example, go to the
  698.     EXAMPLES\WIN30 directory and type
  699.  
  700.          hc helpex
  701.  
  702.  
  703.   LINKING C++ WITH C
  704.  
  705.   - Linking C++ modules with C modules requires the use of a
  706.     linkage specification.  Prototypes for C functions within C++
  707.     modules must be in one of the following forms:
  708.  
  709.         extern "C" declaration
  710.         extern "C" { declarations }
  711.  
  712.     For example, if a C module contains these functions:
  713.  
  714.         char *SCopy(char*, char*);
  715.         void ClearScreen(void)
  716.  
  717.     they must be declared in a C++ module in one of the
  718.       following ways:
  719.  
  720.         extern "C" char *SCopy(char*, char*);
  721.         extern "C" void ClearScreen(void);
  722.  
  723.       or
  724.  
  725.          extern "C" {
  726.             char *SCopy(char*, char*);
  727.             void ClearScreen(void);
  728.          }
  729.  
  730.     Failure to do so will result in "Undefined symbol" errors
  731.     during link. For further examples, see the standard header
  732.     files.
  733.  
  734.   OPTIMIZATIONS
  735.  
  736.   - When Ignore Aliasing is used - Options|Compiler|Optimization|
  737.     Assume no pointer aliasing , or -Oa from the command line -
  738.     some initializations could be skipped. This applies
  739.     only when Copy propagation -Op or Options|Compiler|Optimization|
  740.     Copy propagation is used as well (which is the case when
  741.     using -O2 or Options|Compiler|Optimization|Fastest Code.) The
  742.     following case illustrates the issue:
  743.  
  744.         len = 0;
  745.         read(help_file, (char *)&len, 1);
  746.         read(help_file, (char *)title, len);
  747.  
  748.     The initializion of len to the value 0 above will probably
  749.     not be reflected in the first call to read() if aliases are
  750.     ignored. If the initialization of len were guaranteed by the
  751.     call to read(), the first line would be unnecessary, and the
  752.     value in len would be assigned and passed to the second read
  753.     correctly. We recommend that you avoid using these options
  754.     together when explicit initializations are used in code
  755.     sequences like these.
  756.  
  757.  
  758.   TURBO DEBUGGER AND TOOLS
  759.  
  760.  
  761.   Debugging Multiple Applications under Turbo Debugger for Windows
  762.   ================================================================
  763.      You can debug multiple applications under TDW as follows:
  764.  
  765.      1. Load the first program to be debugged into TDW.
  766.  
  767.      2. Once the application is loaded, press the F3 key to
  768.         display the Load Module Source or DLL Symbols dialog box.
  769.  
  770.      3. In the DLL Name text entry box, enter the name of the
  771.         .EXE or  DLL to add. If the .EXE or DLL resides in
  772.         another directory, you need to provide the full path.
  773.  
  774.      4. Press the Enter key. TDW adds the program name to the 
  775.         DLLs & Programs list box and puts the !! symbol after it.
  776.  
  777.      5. Close the Load Module Source or DLL dialog box, return to
  778.         the Module window, and set any necessary breakpoints in
  779.         the first program.
  780.  
  781.      6. Press F9 to run the first program.
  782.  
  783.      7. Switch to the Windows Program Manager while the first
  784.         program is running and run the second program in the
  785.         usual way.
  786.  
  787.      8. You see the display switch back to TDW with the CPU
  788.         window showing the start-up information of the second
  789.         application. Close the CPU window.
  790.  
  791.      9. In the Module window, set any necessary breakpoints in
  792.         the second application, then press the F9 key to run it.
  793.  
  794.      This method is useful for debugging DDE conversations or any
  795.      other inter-program communication in the Windows
  796.      environment.
  797.  
  798.  
  799.   TDW.INI, the Windows initialization file for TDW and TPROFW
  800.   ===========================================================
  801.     TDW.INI is located in your local Windows directory. It is the
  802.     Windows initialization file used by TDW, TPROFW, and WREMOTE.
  803.     TDW.INI specifies the name and location of the Debugger DLL and
  804.     the video driver DLL (if any)  in the [TurboDebugger] section.
  805.     It can also contain two other sections:
  806.  
  807.     o [VideoOptions], where you put settings for the video DLL, if any
  808.  
  809.     o [WRemote], where WRSETUP puts settings for remote debugging
  810.       and profiling
  811.  
  812.    [TurboDebugger] section
  813.    -----------------------
  814.    WINDEBUG.DLL has been replaced by TDWIN.DLL. TDWIN.DLL can be
  815.    located anywhere you wish (usually the main Windows directory).
  816.    The DebuggerDLL entry must specify the full path to TDWIN.DLL.
  817.   
  818.    For example, if TDWIN.DLL is in the WINDOWS3.1 directory, its
  819.    TDW.INI entry is
  820.   
  821.    [TurboDebugger]
  822.    DebuggerDLL=c:\windows3.1\tdwin.dll
  823.   
  824.    The VideoDLL entry indicates a video support DLL for 8514 or
  825.    Super VGA, because TDW doesn't support these video modes by
  826.    default. This entry must specify the full path to the DLL. You
  827.    can set various video options for the DLL in the
  828.    [VideoOptions] section.  See the next section for a complete
  829.    explanation of video DLL and options settings.
  830.  
  831.  
  832.   SVGA support, the VideoDLL entry, and the [VideoOptions] section
  833.   ----------------------------------------------------------------
  834.    TDW and TPROFW handle most of the popular 2, 4, 16, and 256-color
  835.    high-resolution Super VGA modes. If your card isn't supported
  836.    correctly, you need to use a special Super VGA (SVGA) DLL.
  837.  
  838.    Currently, six DLLs are supplied with your language compiler to
  839.    support various SVGA and 8514 video cards and modes. These DLLs are
  840.    described in the next section. For information on how to specify the
  841.    Video DLL or its options, see the sections "The VideoDLL entry" and
  842.    "The [VideoOptions] section," which follow the "Video DLLs" section.
  843.  
  844.  
  845.      Video DLLs
  846.      ----------
  847.      All the video DLLs described in this section are designed to work
  848.      with the most current Windows screen drivers for your video card.  If
  849.      you're not sure if you're using the latest drivers, contact your video
  850.      card manufacturer for more information.
  851.  
  852.      From time to time we have new DLLs for new video cards. These DLLs,
  853.      when available, can be downloaded from Compuserve, BIX, GEnie, and our
  854.      local BBS (408-439-9096). As new video cards and modes appear on the
  855.      market, we will be creating new DLLs for them. If the card you use
  856.      isn't supported by one of our DLLs, please contact Tech Support for
  857.      the latest video DLL information. Our main Tech Support phone number
  858.      is 408-461-9133.
  859.  
  860.  
  861.        ATI.DLL
  862.        -------
  863.        Works with the ATI VGA Wonder and XL cards in certain video modes.
  864.  
  865.        The latest ATI Drivers from ATI Technologies Inc. require the
  866.        following TDW.INI file entries:
  867.  
  868.  
  869.             Resolution   ATI.DLL  Int2FAssist
  870.           -----------------------------------
  871.           | 640X480    | Yes     |   Yes    |
  872.           -----------------------------------
  873.           | 800X600    | Yes     |   Yes    |
  874.           -----------------------------------
  875.           | 1024X768   | No      |    No    |
  876.           -----------------------------------
  877.  
  878.        EXPLANATION: ATI.DLL is required in all video modes except
  879.        1024 X 768 (this mode is directly supported by TDW and TPROFW).
  880.        When the DLL is used (VideoDLL=ATI.DLL), Int2FAssist should be
  881.        set to "yes" in the [VideoOptions] section.
  882.  
  883.  
  884.        TSENG.DLL
  885.        ---------
  886.        Supports TSENG ET-3000 /ET-4000 based cards in certain
  887.        video modes.
  888.  
  889.        The latest TSENG drivers are available from the Microsoft
  890.        Windows Driver Library on CompuServe. They require the
  891.        following TDW.INI file settings:
  892.  
  893.  
  894.            Resolution   TSENG.DLL   Int2FAssist
  895.           -------------------------------------
  896.           | 640X480    | Yes       |   Yes    |
  897.           -------------------------------------
  898.           | 800X600    | No        |    No    |
  899.           -------------------------------------
  900.           | 1024X768   | No        |    No    |
  901.           -------------------------------------
  902.  
  903.        EXPLANATION: TSENG.DLL should only be used with 640 X 480 X 256
  904.        resolution (set VideoDLL=TSENG.DLL and put a "Int2FAssist=Yes"
  905.        entry in the [VideoOptions] section). TDW and TPROFW directly
  906.        support the other TSENG resolutions.
  907.  
  908.  
  909.  
  910.        TDVESA.DLL
  911.        ----------
  912.        Supports any video card that does VESA emulation, whether
  913.        through a TSR or video card firmware. Use this DLL with
  914.        all resolution settings.
  915.  
  916.            NOTE: You can run VESATEST.EXE from either DOS or
  917.            Windows to see if your system provides the proper
  918.            VESA functions. If the emulation is not loaded, TDW
  919.            (or TPROFW) will display an error message indicating that
  920.            the video DLL isn't supported by the current configuration.
  921.  
  922.        The TDVESA.DLL has been tested with the following video
  923.        cards:
  924.  
  925.          o Video Seven VRAM II--uses V7VESA TSR supplied with card
  926.  
  927.          o Weitek Power Windows--emulates VESA with firmware.
  928.  
  929.  
  930.        DUAL8514.DLL
  931.        -------------
  932.        Supports any dual-screen 8514 cards. This DLL is only for
  933.        systems that have two-color monitors, one attached to the VGA
  934.        card and one attached to the 8415/A card. It speeds up
  935.        performance by preventing TDW (or TPROFW) from doing some
  936.        things that aren't required in dual-monitor mode.
  937.  
  938.            NOTE: Using this DLL is not the same as invoking TDW
  939.            with the -do parameter, which only specifies using a
  940.            monochrome screen.
  941.  
  942.  
  943.        STB.DLL
  944.        -------
  945.        Supports the MVP2 series of multi-screen video cards.
  946.  
  947.  
  948.        ULTRA.DLL
  949.        ---------
  950.        Supports ATI Graphics cards, 8514 Ultra and Vantage cards
  951.        (8514/Ultra, 8514/Vantage, Graphics/Ultra, and Graphics/Vantage),
  952.        and 8514-based cards configured for a single monitor (including
  953.        most IBM 8514/A cards). If you use this DLL with an IBM 8514/A
  954.        card, set "ATI=no" in the [VideoOptions] section of TDW.INI.
  955.  
  956.  
  957.    The VideoDLL entry
  958.    ------------------
  959.    To use an SVGA DLL, simply edit the TDW.INI file that the installation
  960.    program puts in your main Windows directory. You can modify TDW.INI
  961.    with any ASCII text editor. Under the section heading [TurboDebugger]
  962.    there is an option called "VideoDLL". This entry should equal the
  963.    path and filename of the DLL you want to use for SVGA support (see the
  964.    example later in this file).
  965.  
  966.    If there's an error loading the DLL or if the DLL doesn't support
  967.    the selected card or mode, TDW (or TPROFW) reports the error in a
  968.    Windows dialog box. When this happens, TDW (or TPROFW) unloads the
  969.    DLL and exits. If this situation occurs, remove the DLL's name from
  970.    the VideoDLL line in the TDW.INI file or select a video mode that is
  971.    supported by that DLL.
  972.  
  973.  
  974.    The [VideoOptions] section
  975.    --------------------------
  976.    There are options you can set for the current video DLL. You list
  977.    these options under the [VideoOptions] heading in any order you like.
  978.  
  979.    The following list shows all the video options:
  980.  
  981.      o SaveWholeScreen    --    default = no
  982.      o Int2FAssist        --    default = no
  983.      o DebugFile          --    default = <blank>
  984.      o IgnoreMode         --    default = no
  985.      o ATI                --    default = yes
  986.      o Rows               --    default = 25
  987.      o RestoreTextScreen  --    default = yes
  988.  
  989.    DebugFile can be either blank or set to a specific filename. The other
  990.    four settings must be either "yes" or "no". Rows must be 25 or 50.
  991.  
  992.  
  993.      SaveWholeScreen   (ATI, TSENG, TDVESA)
  994.      ---------------
  995.      This option, normally set to "no", determines whether the entire
  996.      screen (512k - 64k from 8 planes) is saved (the entire graphics
  997.      screen is cleared when switching to it) or if only the top 32K of
  998.      planes 0 through 3 is saved (the entire screen is NOT cleared when
  999.      switching modes.)
  1000.  
  1001.      Saving the whole screen is not usually necessary, but is provided
  1002.      in case you're using a nonstandard card that requires that the whole
  1003.      screen be saved. It also provides support for the Alt-F5 key
  1004.      combination under Int2FAssist mode.
  1005.  
  1006.  
  1007.      Int2FAssist  (ATI, TSENG)
  1008.      -----------
  1009.      This option, normally set to "no", tells the DLL to make a special
  1010.      Int 2F call before switching video modes. This call tells the current
  1011.      Windows screen driver what's happening. The desired side-effect of this
  1012.      call is to make Windows tell all its child windows to repaint
  1013.      themselves. This option is provided mainly to support some ATI Wonder
  1014.      and TSENG chip set video modes.
  1015.  
  1016.  
  1017.      DebugFile   (ALL DLLs)
  1018.      ---------
  1019.      The video DLL normally doesn't log any debugging information. If
  1020.      you're having problems using a particular DLL, you can use the
  1021.      DebugFile option to specify the path and filename of a log file.
  1022.      You can use the information logged to this file if you need to
  1023.      contact Borland's Technical Support.
  1024.  
  1025.      The information logged is:
  1026.  
  1027.        o the date and time you ran TDW or TPROFW
  1028.        o the version & location of the DLL
  1029.        o the name of the current Windows screen driver
  1030.        o the state of all TDW.INI options
  1031.        o a listing of all calls and parameters to the DLL's functions
  1032.  
  1033.  
  1034.      IgnoreMode   (ATI, TSENG)
  1035.      ----------
  1036.      This option only applies when the video DLL is ATI.DLL or TSENG.DLL.
  1037.      It tells the DLL to not do any mode or card checking and to force the
  1038.      Int2FAssist option on. This option is useful for cards that aren't
  1039.      directly supported by an official DLL yet, such as Paradise, Video-7,
  1040.      Trident, or any other video card without a graphics coprocessor.
  1041.      (With this option enabled, the functionality is identical to the
  1042.      temporary ALL.DLL that we offered in the past.)
  1043.  
  1044.  
  1045.      ATI   (ULTRA)
  1046.      ---
  1047.      This option is only used by ULTRA.DLL and is on by default. If you
  1048.      disable it, you can use ULTRA.DLL on regular IBM 8514/A cards.
  1049.  
  1050.  
  1051.      ROWS  (ALL DLLs)
  1052.      ----
  1053.      This option is only used if you use a configuration file to change
  1054.      the number of rows to 43/50 from 25. If you choose to have TDW
  1055.      start in 50-line mode, set the Rows option to 50 in the TDW.INI file.
  1056.  
  1057.  
  1058.      RestoreTextScreen   (DUAL8514, STB)
  1059.      -----------------
  1060.      This option is valid only with DUAL8514.DLL and STB.DLL. The
  1061.      settings are:
  1062.  
  1063.        o Yes    - restores TDW's (or TPROFW's) screen after exiting.
  1064.        o No     - does not touch TDW's (or TPROFW's) screen at all.
  1065.        o Clear  - forces the screen to clear upon exiting TDW (or TPROFW).
  1066.  
  1067.  
  1068.    Video DLL example
  1069.    -----------------
  1070.    If you have an ATI VGA Wonder card and you want it to save
  1071.    the entire screen and log information to a file named
  1072.    C:\WINDOWS\TDVIDEO.LOG, the TDW.INI file will look something
  1073.    like this:
  1074.  
  1075.        [TurboDebugger]
  1076.        DebuggerDLL=c:\windows3.1\tdwin.dll
  1077.        VideoDLL=c:\borlandc\bin\ati.dll
  1078.  
  1079.        [VideoOptions]
  1080.        SaveWholeScreen=yes
  1081.        DebugFile=c:\windows\tdvideo.log
  1082.  
  1083.  
  1084.    Technical information
  1085.    ---------------------
  1086.    TDW, upon loading, looks for the video DLL in the following
  1087.    locations in the following order:
  1088.  
  1089.      1. The same directory TDW (or TPROFW) is running from
  1090.  
  1091.      2. The Windows main directory
  1092.  
  1093.      3. The location specified in TDW.INI
  1094.  
  1095.  
  1096.    If it finds the file, TDW (or TPROFW) accesses the DLL as needed.
  1097.    TDW (or TPROFW) makes calls to the DLL to handle the entire video
  1098.    screen-switching context. The DLL accomplishes the screen switching
  1099.    by allocating a buffer as it gets loaded. Graphics screen contents
  1100.    are then saved to this buffer when TDW (or TPROFW)_enters text mode.
  1101.    The DLL restores the graphics screen from this buffer when TDW
  1102.    (or TPROFW) exits text mode. Memory allocated for the buffer is freed
  1103.    when the DLL is unloaded.
  1104.  
  1105.  
  1106.    Seeing the user screen of an application
  1107.    ----------------------------------------
  1108.    Some video modes might require some special handling. The Int2FAssist
  1109.    option allows these modes to work correctly on most systems. The
  1110.    behavior is as follows:
  1111.  
  1112.    When you set "Int2FAssist=yes", the DLL notifies Windows to tell
  1113.    all sub-windows on the screen to repaint themselves while the user
  1114.    application is running. This allows the user screen to be viewed
  1115.    when stepping, tracing, or running your application. It will not,
  1116.    however, switch to the user screen when you press the Alt-F5 key
  1117.    combination because TDW is still in control (TDW doesn't allow Windows
  1118.    to process any messages at this point.)
  1119.  
  1120.    If you also set "SaveWholeScreen=yes", pressing the Alt-F5 key
  1121.    combination shows the user screen. (The DLL will now copy the screen
  1122.    back for you.) The drawback to enabling SaveWholeScreen is that it
  1123.    will take longer to step or trace if TDW needs to switch back to
  1124.    the user screen for that particular instruction. Also, extra messages
  1125.    will be passed to your application that normally wouldn't be passed.
  1126.    This may affect the debugging of certain pieces of code (like finding
  1127.    a bug in an owner-draw control). In these cases, you won't want to use
  1128.    this option on the current video mode.
  1129.  
  1130.  
  1131.   Using TDW in Dual Monitor Monochrome Mode
  1132.   ----------------------------------------
  1133.    If TDW is activated using the -do switch, there is no need for
  1134.    a video DLL or a value in the VideoDLL section of TDW.INI. The
  1135.    value in VideoDLL should be removed as follows:
  1136.  
  1137.     [Debugger]
  1138.     VideoDll=
  1139.  
  1140.  
  1141.    The [WRemote] section
  1142.    ---------------------
  1143.    If you run WRSETUP to configure WREMOTE, the settings are
  1144.    saved in the WRemote section of TDW.INI. In previous versions,
  1145.    these settings were saved in the WRemote section of
  1146.    WREMOTE.INI. If you have a previous version of TDW or TPROFW
  1147.    and want to preserve your WREMOTE settings, you can append the
  1148.    contents of WREMOTE.INI into TDW.INI. Be sure to include the
  1149.    [WRemote] section heading.
  1150.  
  1151.    The settings for the [WRemote] section are described in the
  1152.    "Turbo Debugger User's Guide" in Appendix E, "Remote
  1153.    Debugging" starting on page 386.
  1154.  
  1155.  
  1156.   Known Problems
  1157.   ==============
  1158.  
  1159.   - TD386 and TF386 currently do not support machines with over
  1160.     16M of memory.  You must disable any extra memory to use
  1161.     these programs.
  1162.  
  1163.   - On page 10 in Chapter 1 of the "Turbo Profiler User's Guide,"
  1164.     there is a statement that Pascal versions of the PRIMEn.C
  1165.     programs are included on disk. Only the C versions of these
  1166.     sample programs are included on the distribution disks.
  1167.  
  1168.   - Some mouse drivers are incompatible with TD and will
  1169.     cause the mouse cursor to get scrambled when debugging DOS
  1170.     graphics applications on a second monitor (-do option).  If
  1171.     that happens, you can try a different driver or turn off the
  1172.     mouse in TD by using the -p- option on the TD command line.
  1173.     The mouse will still be active in the target application.
  1174.  
  1175.   - If you have any lines in your SYSTEM.INI that rename DLLs, such as
  1176.     "sound.dll=mysound.drv", TDW might display the error "Can't find 
  1177.     sound.dll" when it loads a program that uses the DLL.  To solve this 
  1178.     problem, use the -wd command switch to disable TDW's DLL checking when 
  1179.     you load such a program.
  1180.  
  1181.   - The first time a program is run under TDW or TPROFW, mouse
  1182.     messages are processed normally. However, on every subsequent
  1183.     execution of that program, you must press a key on the
  1184.     keyboard before mouse messages can be processed.
  1185.  
  1186.   - TSENG ET-4000 video chip set and Windows 3.1 problems
  1187.  
  1188.     Under Windows 3.1, if you use the standard Windows VGA or
  1189.     SuperVga  driver with a video card that uses the TSENG
  1190.     ET-4000 chip set, you might encounter a number of problems
  1191.     with running TDW on a single monitor.
  1192.  
  1193.     o The hardware cursor (the white cursor displayed in all
  1194.       dialog boxes that require text input) is invisible, but
  1195.       you can still debug your program.
  1196.  
  1197.     o On certain TSENG 4000-based cards (such as the Diamond
  1198.       Speedstar VGA card), when you launch TDW the default
  1199.       character set is replaced by graphic characters.
  1200.  
  1201.    To overcome this problem please contact Microsoft Corp and ask
  1202.    for the updated TSENG drivers that were NOT shipped with
  1203.    Windows 3.1. They are also located in the Microsoft Forum (GO
  1204.    MSOFT) under the Microsoft Software Library heading in
  1205.    CompuServe.
  1206.   
  1207.         Filenames      Date
  1208.         ---------      ----
  1209.  
  1210.         TSENG1.EXE     4/6/92
  1211.         TSENG2.EXE     4/6/92
  1212.         TSENG3.EXE     4/6/92
  1213.         TSENG4.EXE     4/6/92
  1214.   
  1215.   
  1216.    In the meantime, you can use one of the following alternatives:
  1217.   
  1218.    - Run Windows Setup and replace your Windows 3.1 VGA or SVGA driver
  1219.      with the Version 3.0 VGA driver supplied with Windows 3.1.
  1220.   
  1221.    - Start TDW from the DOS command line. For example,
  1222.   
  1223.      WIN TDW myprog
  1224.   
  1225.    - Each time you launch Windows, run a full screen DOS session
  1226.      and type "exit" to close it. After you do this, when you run
  1227.      TDW, it will use the correct character set.
  1228.  
  1229.  
  1230.   CLASS LIBRARY
  1231.  
  1232.   - If you used the add(), addAt(), or getItemsInContainer()
  1233.     member functions of the Array class in Borland C++ 2.0
  1234.     applications, note that their behavior has changed slightly.
  1235.     The following rules apply to these and related functions:
  1236.  
  1237.       1. add() will insert its argument at the lowest available
  1238.          location in the Array.  This location is known as the
  1239.          "insertion point".
  1240.  
  1241.       2. detach() will remove its argument from the Array, and if
  1242.          that Object is located below the insertion point, it
  1243.          will move the elements above the Object being removed
  1244.          and below the insertion point down one position, so that
  1245.          the elements below the insertion point remain
  1246.          contiguous.  The insertion point, of course, moves down
  1247.          one.
  1248.  
  1249.       3. if the location specified in a call to addAt() is below
  1250.          or at the insertion point, the elements above the
  1251.          specified location and below the insertion point are
  1252.          moved up one position, and the Object is inserted.  The
  1253.          insertion point moves up one.
  1254.  
  1255.       4. if the location specified in a call to addAt() is above
  1256.          the insertion point, the Object is inserted at that
  1257.          location, replacing any Object that may have been placed
  1258.          there previously.
  1259.  
  1260.       5. getItemsInContainer() returns the number of elements
  1261.          below the current insertion point.  If you use addAt()
  1262.          to add elements above the insertion point, they will not
  1263.          affect the value returned by getItemsInContainer(). 
  1264.          This is a change from the behavior in the previous
  1265.          version of the class library.
  1266.  
  1267.   - Two versions of the class library sources are provided; one
  1268.     using an implementation using C++ templates, and one not using
  1269.     templates. The small and dynamic link libraries are provided, and
  1270.     a makefile is provided to build other models.
  1271.  
  1272.  
  1273.   ObjectWindows Library
  1274.  
  1275.   - You must rebuild the class libraries in the appropriate model
  1276.     for the intended OWL model if they don't already exist - see
  1277.     paragraph above.
  1278.  
  1279.   - Due to restrictions on code size, compact model is no longer
  1280.     supported for OWL applications.
  1281.  
  1282.   - Note that you must use the TWindow member function AssignMenu
  1283.     to assign a window's Attr.Menu member and to load a menu for
  1284.     that window.
  1285.  
  1286.   - You must alter project files and makefiles to indicate
  1287.     compatibility with either Borland C++ version 3.0 or 3.1.
  1288.     Add WIN30 for OWL projects from Borland C++ 3.0, or WIN31
  1289.     for projects created under Borland C++ 3.1, to the defines
  1290.     under Options|Compiler|Code Generation in the IDE, or passing
  1291.     -DWIN30 or -DWIN31 to MAKE.
  1292.  
  1293.   - World of ObjectWindows video users need to make modifications
  1294.     to their Borland C++ 3.0 make or project files in order to
  1295.     successfully compile their OWL code with Borland C++ 3.1. You
  1296.     must define the WIN30 flag when compiling the OWL Video code.
  1297.     In MAKEFILE.INC add the text, "-DWIN30" to the four 'CFLAGS'/
  1298.     'CFLAGSD' lines.  In all project files, you must go to Options|
  1299.     Compiler|Code Generation and put WIN30 in the Defines combo box
  1300.     field (at the bottom of this dialog).
  1301.  
  1302.  
  1303.   Please see OWL31.DOC for additional information on ObjectWindows
  1304.   Library.
  1305.  
  1306.   TURBO VISION
  1307.  
  1308.   - For information on the Help compiler, and how to build a help
  1309.     document, please refer to the comments in the file TVHC.CPP in
  1310.     the help directory.  Also, see TVDemo for an example of how to
  1311.     add help to your applications.
  1312.  
  1313.   - Due to the complex interactions among the Turbo Vision classes,
  1314.     certain situations can arise involving deletion of objects that
  1315.     cannot be properly handled through destructors.  Therefore, we
  1316.     provide a static member function void destroy( TObject * ) to
  1317.     the class TObject.  Whenever an object of a type derived from
  1318.     TObject is to be deleted, the function destroy() should be called
  1319.     instead.  This will take care of terminating the object,
  1320.     correctly freeing the memory that it occupied.  For example:
  1321.     
  1322.              TDialog *dlg = new TDialog( ... );
  1323.              //delete dlg;    // DON'T DO THIS
  1324.              destroy( dlg );  // DO IT THIS WAY
  1325.  
  1326.   - The Turbo Vision Source Code is provided for your use and
  1327.     modification.  IMPORTANT: Borland Technical Support will not
  1328.     answer questions or provide any assistance relating to this
  1329.     product.  Essentially, the Sources are provided "as is" and you
  1330.     are on your own.
  1331.  
  1332.   - In order to build the library, you must have Tasm available.
  1333.  
  1334.   - When building or modifying the library it is better to place
  1335.     debug info in only those modules in which you are interested.
  1336.     If you place debug info all the modules, Tlink may not be able
  1337.     to link your application.
  1338.  
  1339.   - In order to build an overlayed Turbo Vision application with
  1340.     Borland C++ 3.1, make sure you observe the following:
  1341.  
  1342.       1. You need to rebuild the Turbo Vision library with
  1343.          overlays. Change to the SOURCE directory under TVISION
  1344.          and enter the command
  1345.  
  1346.                  make -DOVERLAY -B
  1347.  
  1348.          This will produce a new version of TV.LIB which will
  1349.          support overlays. It will also produce two .OBJ files,
  1350.          SYSINT.OBJ and TEVENT.OBJ.  These two files contain code
  1351.          for TV's interrupt handlers, so they cannot be 
  1352.          overlayed.
  1353.  
  1354.       2. When building an overlayed application, you must be sure
  1355.          to link with the three files SYSINT.OBJ, TEVENT.OBJ, and
  1356.          TV.LIB.  The two .OBJ files must not be in overlays.
  1357.          You also need to specify local virtual tables.
  1358.          Your command line should look something like this:
  1359.  
  1360.          bcc -ml -Vs -B -Yo myfile -Yo- sysint.obj tevent.obj -Yo tv.lib
  1361.  
  1362.          See the Programmer's Guide for details on the meanings
  1363.          of the various -Yo switches.
  1364.  
  1365.      3. To improve performance, increase the size of the global
  1366.          variable __ovrbuffer to 0x2000 or greater.
  1367.  
  1368.  
  1369.   RUNTIME LIBRARY SOURCE
  1370.  
  1371.   The Borland C++ Runtime Library Source Code is provided for
  1372.   your use and modification.  IMPORTANT: Borland Technical
  1373.   Support will not answer questions or provide any assistance
  1374.   relating to this product.  Essentially, the Sources are
  1375.   provided "as is" and you are on your own. If you find what you
  1376.   think is a genuine problem with the source code, however, we
  1377.   would like to hear about it. See "How to Get Help" above.
  1378.  
  1379.   See CRTL.DOC for more information on building the Runtime
  1380.   Library from source.
  1381.  
  1382.  5. TESTING YOUR EXPANDED MEMORY: EMSTEST.COM
  1383. ---------------------------------------------
  1384.  
  1385.   Included with Borland C++ is a program to test your Expanded
  1386.   Memory hardware and software. If you have problems using
  1387.   Borland C++ with your EMS, type EMSTEST at the DOS prompt and
  1388.   follow the instructions.
  1389.  
  1390.  
  1391.  6.  CORRECTIONS TO THE DOCUMENTS
  1392. ---------------------------------
  1393.  
  1394. Please see the MANUAL.XXX files in the DOC subdirectory for corrections
  1395. to the documents.
  1396.