home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c085 / 1.ddi / README.DOC < prev    next >
Encoding:
Text File  |  1991-04-25  |  20.5 KB  |  473 lines

  1. Win++ Version 2.00                                                  README.DOC
  2.  
  3.  
  4.                                    Win++
  5.  
  6.                                 Version 2.00
  7.                                April 25, 1991
  8.  
  9.  
  10. This document provides information on the installation and use of Win++.   Use
  11. it  as  a  supplement  to the manual.  Please read the introduction and "Using
  12. Win++" in the manual.  Then read this file for information specific to your  C
  13. compiler and to this version of Win++.
  14.  
  15. Copyright (C) Blaise Computing Inc. 1991.  All rights reserved.
  16.  
  17. The  PACKING.LST  file  lists  the files supplied and the diskettes where they
  18. reside.
  19.  
  20. (You can find your Win++ version number as  the  three  digits  following  the
  21. decimal  point  in  your  serial  number.  The serial number is printed on the
  22. diskette labels.)
  23.  
  24.  
  25.                             OUTLINE OF THIS FILE
  26.  
  27. Installation
  28. DLL Support Awaits New Linker
  29. Compiler Versions and Memory Models Supported
  30. Manual Changes
  31. BCFile Instead of Streams
  32. Warnings and Usage Notes
  33. Troubleshooting
  34. Bulletin Board
  35. Rebuilding the Libraries
  36. Construction Notes (Including .PRJ Files)
  37. Automatic Update Program
  38.  
  39.  
  40.                                 INSTALLATION
  41.  
  42. The installation procedure conforms to the first two chapters in  the  manual:
  43. "Quick Start" and "Using Win++", except that the MANINST.BAT file now supports
  44. three  additional  categories of files:  BAT, DOC, and UTL.  Please read these
  45. chapters for installation instructions.  For further details about  using  the
  46. AUTOINST.BAT  and  MANINST.BAT  batch  files,  read  the comments in the batch
  47. files.
  48.  
  49. Here are the approximate space requirements of each category  of  Win++  files
  50. after expansion.  The sizes are listed in units of 1K (1024 bytes).
  51.  
  52.    Category  Description                        Size
  53.    --------  --------------------------------  ------
  54.    BAT       DOS batch files (.BAT)                8K
  55.    DLL       Dynamic-link libraries (.DLL)       400K
  56.    DOC       Documentation files                  45K
  57.    EXP       Example programs                    700K
  58.    INC       Header (include) files              250K
  59.    LIB       Static-link and import libraries  1,410K
  60.    SRC       Library source code                 650K
  61.    UTL       Utility programs                     43K
  62.                                                ------
  63.              Total                             3,506K
  64.  
  65.  
  66.                        DLL SUPPORT AWAITS NEW LINKER
  67.  
  68. At  the time of this release, the Borland linkers TLINK.EXE and TLINKX.EXE are
  69. unable  to  reliably  link  programs  with   the   Win++   import   libraries.
  70. Consequently it is temporarily impossible to build programs that use the Win++
  71. dynamic-link libraries (DLLs).
  72.  
  73. We  expect  that  Borland  International  will  quickly  rectify this problem.
  74. Contact Blaise Computing for the latest advice.  If you register your purchase
  75. with Blaise Computing, we will notify you when a solution is available.
  76.  
  77.  
  78.                COMPILER VERSIONS AND MEMORY MODELS SUPPORTED
  79.  
  80. This version of Win++ supports Borland C++ version 2.0.  For information about
  81. later versions of Borland C++, check the  bulletins  enclosed  with  Win++  or
  82. contact Blaise Computing.
  83.  
  84. The  only  supported  memory  models  are  M (medium) and L (large).  In the M
  85. model, you can use only the static-link libraries (that is,  the  DLL  is  not
  86. supported.)  In  the  L model, your application can use either the static-link
  87. libraries or the dynamic-link libraries (DLLs).  (As usual,  when  building  a
  88. program  for  use  with  a  DLL,  you must link it with an import library that
  89. corresponds with the DLL.)
  90.  
  91. The memory-model-specific files are listed on page 17 of the manual.
  92.  
  93.  
  94.                                MANUAL CHANGES
  95.  
  96. Page 18 --In  Table   2.3,   the   directory   \wpp\demo\hellodd   should   be
  97.    \wpp\demo\hellodll.
  98.  
  99. Page 19 --In  Table  2.4,  add  the  following  additional categories that are
  100.    supported by MANINST.BAT:
  101.  
  102.       BAT         DOS batch files (.BAT)
  103.       DOC         Documentation files
  104.       UTL         Utility programs
  105.  
  106. Page 25 -- No project  (.PRJ)  file  is  supplied  for  the  HELLODLL  example
  107.    program.
  108.  
  109. Page 26 -- Corrections and additional notes:
  110.  
  111.     - For  information about the options specified in the supplied .PRJ files,
  112.       read "Construction Notes" later in this file.
  113.  
  114.     - If you alter a resource (such as .ICO, .BMP, .CUR, or .DLG), remember to
  115.       use the Compile|Build All command in order to force the resource file to
  116.       be recompiled.
  117.  
  118.     - If you are linking with the static-link libraries, then (as  the  manual
  119.       states)  you  must  define the BC_WPP_LIB symbol in every .CPP file that
  120.       includes the Win++ header files.  (The symbol can be defined to  be  the
  121.       empty  string,  but must nevertheless be defined.)  One simple way to do
  122.       so is via the Options|Compiler|Code Generation|Defines input box.
  123.  
  124.     - You need not define the  LDATA  symbol  (contrary  to  what  the  manual
  125.       states).
  126.  
  127.     - The  Project  Manager  does  not  appear to have a way to specify the /T
  128.       option on the second pass of the RC program (that is, when  binding  the
  129.       .RES file to the .EXE file).
  130.  
  131. Page 39 -- The  LDATA symbol is no longer defined nor used.  The /s option has
  132.    been removed  from  the  definition  of  LOPTS.   Five  filenames  used  in
  133.    definitions  are  misprinted.   Here  are the correct definitions (note the
  134.    backslashes):
  135.  
  136.       WLIBDIR=c:\wpp\lib
  137.       
  138.       D_WPP_LIB1=$(WLIBDIR)\$(WPP_LIB1).lib
  139.       D_WPP_LIB2=$(WLIBDIR)\$(WPP_LIB2).lib
  140.       
  141.       D_WPP_IMP1=$(WLIBDIR)\$(WPP_IMP1).lib
  142.       D_WPP_IMP2=$(WLIBDIR)\$(WPP_IMP2).lib
  143.  
  144. Page 51 -- The following symbols used in the code fragments are misspelled:
  145.  
  146.       ICON_QUESTION   should be   BC_ICON_QUESTION
  147.       OK_ONLY         should be   BC_OK_ONLY
  148.       YES_NO          should be   BC_YES_NO
  149.       YES_REPLY       should be   BC_YES_REPLY
  150.  
  151. Page 86 -- The version number is established by the symbol  BC_VERSION_NUMBER,
  152.    which  is  defined  in  TYPE.H.  Its initial value is 200, which represents
  153.    version 2.00.
  154.  
  155. Page 424 -- Insert the following support function:
  156.  
  157.    WORD BCGetVersionNumber(VOID);
  158.  
  159.       BCGetVersionNumber returns the version number of the Win++ library.   In
  160.       the  case  of  a  program  using  the Win++ DLLs, it returns the version
  161.       number of DLL number 1.  The version number is discussed further on page
  162.       86.
  163.  
  164. Page 434 -- Three additional internal header files were omitted from the list:
  165.    DBLLNKND.H, LISTNODE.H, and SNGLNKND.H.  These files declare  the  internal
  166.    classes  BCDoubleLinkNode,  BCListNode, and BCSingleLinkNode, respectively,
  167.    which are noted briefly on page 452.
  168.  
  169. Page 437 -- Here are corrected table entries, including  one  new  entry.   In
  170.    each  of  these  the  spelling  of the class name is corrected.  Delete the
  171.    entry for BC_WIN_HASH_LIST (value 93).
  172.  
  173.       Symbol                Value  Class Name
  174.       --------------------  -----  ------------------
  175.       BC_RESID                 7   BCResID
  176.       BC_DISP_OBJ              9   BCDispObject
  177.       BC_SYSMENU              18   BCSystemMenu
  178.       BC_MULTISTRING_EDIT     39   BCMultiStringEdit
  179.       BC_SAVEAS_DIALOG        62   BCSaveAsDialog
  180.       BC_FILE_OBJ             84   BCFile         <-- New class
  181.       BC_LIST_OBJ             85   BCList
  182.       BC_SLNK_LIST            87   BCSingleLinkedList
  183.       BC_DLNK_LIST            88   BCDoubleLinkedList
  184.       BC_WIN_LIST             92   BCWindowList
  185.       BC_MDI_FRAME_WINDOW    108   BCMDIFrameWindow
  186.       BC_MDI_CLIENT_WINDOW   109   BCMDIClientWindow
  187.       BC_MDI_CHILD_WINDOW    110   BCMDIChildWindow
  188.  
  189. Page 444 -- Additional symbol for a dialog box control:
  190.  
  191.       #define IDC_DIRS_LIST       2006
  192.  
  193. Page 447 -- Two internal functions are missing from the list:   BCDLLInit  and
  194.    BCLocalInit.
  195.  
  196. Page 450 -- The BCSetFileLen function is present but does nothing.
  197.  
  198. Page 455 -- Clarification of TMR:  By means of menu choices, you can configure
  199.    the  first  timer  (called the "tester") to operate either as a stand-alone
  200.    timer (receiving timer events directly) or as a window timer (directing its
  201.    timer events to a window, in this case the application's main window).  The
  202.    second timer object (called the "counter") is a window timer as  stated  in
  203.    the manual.
  204.  
  205.  
  206.                          BCFILE INSTEAD OF STREAMS
  207.  
  208. This release of Win++ differs from the manual in an aspect of internal design:
  209. support  for I/O streams has been disabled.  Instead, file input and output is
  210. implemented via a new class called BCFile.  BCFile performs file I/O  via  the
  211. standard  I/O  functions  such  as fopen().  Read the BCFILE.DOC file for full
  212. documentation about BCFile.
  213.  
  214. The Load and Save member functions (inherited from BCObject) are available  in
  215. versions  that  use  BCFile  instead  of streams.  Usage is unchanged from the
  216. manual.  Here are the prototypes for BCObject::Load and BCObject::Save:
  217.  
  218.    virtual BOOL Load(BCFile *opFile);
  219.    virtual BOOL Save(BCFile *opFile);
  220.  
  221. For an example of writing custom Load and Save member  functions  (using  both
  222. BCFile and streams), see the ADRS example program.
  223.  
  224. It  is  to  be  hoped that future versions of Borland C++ will enable full and
  225. reliable support of streams in Windows applications.  At such time as they may
  226. do so, here is how you can reenable the stream support in Win++:
  227.  
  228.    1) Recompile the Win++ libraries and DLLs using  the  usual  makefile  (see
  229.       "Rebuilding  the  Libraries"  below).  Specify -DUSE_STREAMS on the MAKE
  230.       program command line.
  231.    2) Change your application program makefiles and project  (.PRJ)  files  to
  232.       define the preprocessor symbol BC_USE_STREAM to be 1.
  233.  
  234.  
  235.                           WARNINGS AND USAGE NOTES
  236.  
  237. PROTECTED-MODE  COMPILER AND LINKER REQUIRED -- Because of the large number of
  238.    classes and member functions provided,  Win++  applications  almost  always
  239.    exceed  the  capacity  of  the real-mode Borland compilers and linker:  BC,
  240.    BCC, and TLINK.  Therefore you  should  use  the  protected-mode  versions:
  241.    BCX, BCCX, and TLINKX.
  242.  
  243. INCLUDING  WINDOWS.H  --  There are some minor incompatibilities between Win++
  244.    and Borland's WINDOWS.H file.  To resolve these incompatibilities, use  the
  245.    WPPHOST.H file described on page 433.
  246.  
  247. CONSERVING  COMPILER SYMBOL SPACE -- If you use WPP.H and if the compiler runs
  248.    out of symbol space, you can conserve some space by  defining  one  of  the
  249.    following  symbols  before  including  WPP.H.   Each  symbol  prevents  the
  250.    inclusion of certain groups of Win++ header files.
  251.  
  252.       #define BC_NO_CONTROLS
  253.       #define BC_NO_DATA_OBJECTS
  254.       #define BC_NO_DIALOGS
  255.       #define BC_NO_LISTS
  256.       #define BC_NO_MDI
  257.       #define BC_NO_OBJECT_GRAPHICS
  258.  
  259. KEYSTROKE EVENTS -- When writing member functions KeyDown, CharKey, and  KeyUp
  260.    for  a  class  derived  from  BCWindow  or  descendant, be sure to call the
  261.    DefaultEvent member function.  This will ensure that accelerator  keys  are
  262.    handled.
  263.  
  264.    If  the window is active but doesn't have the input focus (for instance, if
  265.    the Activation member function doesn't call SetFocus), then all  keystrokes
  266.    are system key events and BCEvent::IsSystemKey will return TRUE.
  267.  
  268. PREMATURE  TERMINATION  --  BCApplication::ShutDown  is called by the internal
  269.    function BCApplication::Run after the message  loop  exits.   Therefore  if
  270.    your  program terminates abnormally so that the message loop does not exit,
  271.    then ShutDown will not be called.
  272.  
  273. ADVANCED MAKEFILE -- The WPP.MAK file provides more features and capacity than
  274.    the WPPEXP.MAK file that builds the example programs.  For instructions  on
  275.    using  WPP.MAK  to  build  your  programs, read the comments in the WPP.MAK
  276.    file.
  277.  
  278. AVOIDING PROJECT MANAGER SEARCHES IN BCX -- Sometimes BCX can  halt  when  the
  279.    Project  Manager  is  checking  whether  an  object  file  is up to date or
  280.    requires recompilation.  You can prevent this check by  deleting  the  .OBJ
  281.    file,   by   invoking   the   Compile|Build   All   command  (which  forces
  282.    recompilation), and by avoiding  the  Compile|Make  EXE  File  and  Run|Run
  283.    commands (which check all dependencies).
  284.  
  285. CHILD  WINDOW  CONTROLS  IN  MDI CHILD WINDOWS -- When creating a control as a
  286.    child window of a BCMDIChildWindow, create the  control  after  the  Create
  287.    member  function  returns.   That  is,  don't  create  the  control  inside
  288.    BCMDIChildWindow::Initialize.  (If you want  the  controls  to  be  created
  289.    before  the  BCMDIChildWindow  is  displayed,  then use the SetStyle member
  290.    function to clear the  BC_STYLE_VISIBLE  bit.   This  prevents  the  Create
  291.    member function from displaying the BCMDIChildWindow.)
  292.  
  293. MENU EVENTS IN MDI CHILD WINDOWS -- When a menu event occurs, a BCEvent object
  294.    is  passed  to  a MenuCommand member function.  Normally you can obtain the
  295.    BCMenu object for  the  corresponding  menu  by  calling  BCEvent::GetMenu.
  296.    However, in a BCMDIChildWindow the resulting BCMenu object is the MDI child
  297.    window's  own  menu  -- even if the menu event really resulted from the MDI
  298.    child window's system menu.  If you need to distinguish which  menu  caused
  299.    the  event,  then  specify the menu item ID codes differently for the child
  300.    window's own menu and its system menu.
  301.  
  302.  
  303.                               TROUBLESHOOTING
  304.  
  305. Please also read Appendix A in the manual.  Here are some additional  symptoms
  306. and explanations to consider when diagnosing problems:
  307.  
  308. Compilation warnings in library or example programs.
  309.    You  should  expect  to  see  the  warnings  that  we  have  listed  in the
  310.    WARNINGS.DOC file.  If you  get  any  other  warnings  or  error  messages,
  311.    investigate further.
  312.  
  313. BCX halts while checking dependencies.
  314.    Try  deleting  your .OBJ files or use the Compile|Build All command so that
  315.    recompilation  takes  place  unconditionally.    Or   try   disabling   the
  316.    Options|Make|Check auto-dependencies option.
  317.  
  318. Compiler error:  Cannot have a near member in a huge class.
  319.    This  can  occur  in  medium  model  if you forget to define the BC_WPP_LIB
  320.    symbol.  You  must  always  define  the  BC_WPP_LIB  symbol  (even  if  the
  321.    definition  is  empty)  in  medium  model,  because  in  medium model Win++
  322.    supports only static-link libraries (WPP_LBM?.LIB).
  323.  
  324. Linker error:  Undefined symbol.
  325.    In addition to what is discussed on page 416 of  the  manual,  here  is  an
  326.    additional possibility:
  327.  
  328.    If  you are linking modules compiled in C mode with modules compiled in C++
  329.    mode, then perhaps the C++ name mangling is making the  external  names  of
  330.    the  C functions unrecognizable.  When declaring C functions for use in C++
  331.    code, declare them like this in every  source  file  that  references  them
  332.    (better  still,  put  the  declaration  in  a  header file).  This style of
  333.    declaration works correctly in both the C and C++ languages.
  334.  
  335.       #ifdef __cplusplus
  336.       extern "C" {
  337.       #endif
  338.       
  339.       extern int my_c_function(void);      /* Example declaration. */
  340.       extern int another_c_function(int);  /* Another example.     */
  341.       
  342.       #ifdef __cplusplus
  343.       }
  344.       #endif
  345.  
  346. Runtime message:  Control does not exist.
  347.    This can occur if there is an error (such as an incorrect ID number) in the
  348.    dialog specification in the .RC file.
  349.  
  350. Unexplained crash.
  351.    In addition to the suggestions on page 418, try  the  following:   If  your
  352.    program  is  compiled  for use with the Win++ DLLs, then try recompiling it
  353.    for use with the static-link libraries.  If your program is linked with the
  354.    Win++ static-link libraries, then try recompiling it for use with the DLLs.
  355.    (Either change requires recompiling all of your source files.)
  356.  
  357.  
  358.                           REBUILDING THE LIBRARIES
  359.  
  360. To rebuild the Win++ static-link, dynamic-link, and import  libraries,  follow
  361. the  instructions  listed  in  the  MAKEFILE that is included among the source
  362. files.
  363.  
  364.  
  365.                                BULLETIN BOARD
  366.  
  367. One way to communicate with Blaise Computing is by  telephoning  our  computer
  368. bulletin  board system (BBS).  This simple interactive system provides a forum
  369. for exchanging messages and files with the Blaise technical  staff  and  other
  370. users  of  Blaise  products.  The BBS also provides the latest bulletins about
  371. Blaise products.
  372.  
  373. To access the BBS, use an ordinary modem and dial (415) 540-0760 in the United
  374. States.  The BBS supports speeds of 300, 1,200,  and  2,400  bits  per  second
  375. (bps).   Use  eight  data  bits,  no parity bit, and one stop bit.  The BBS is
  376. usually available 24 hours per day, every day of the year.
  377.  
  378. The messages and menus that greet you are self-explanatory.   No  password  is
  379. required  to  sign on initially, but you must invent your own password for use
  380. when signing on again.
  381.  
  382.  
  383.                              CONSTRUCTION NOTES
  384.  
  385. The libraries were built using the MAKEFILE that is supplied among the  source
  386. files, using each of the following command lines:
  387.   make -B                              [Large model DLLs]
  388.   make -DMAKE_DLL=0 -B                 [Large model static-link libraries]
  389.   make -DMAKE_DLL=0 -DMAKE_LARGE=0 -B  [Medium model static-link libraries]
  390.  
  391. The  .C and .CPP source files in the libraries were compiled using version 2.0
  392. of BCCX and the following command-line options:
  393.  
  394.   -c            Compile only.
  395.   -m            Memory model.
  396.   -O            Jump optimization.
  397.   -V            Smart virtual tables.
  398.   -w            All warnings enabled.
  399.  
  400.  
  401. Files in the static-link libraries were compiled with the following additional
  402. options:
  403.  
  404.   -DBC_WPP_LIB  Defined symbol.
  405.   -W            Windows executable, all functions exportable.
  406.  
  407.  
  408. Files in the DLLs were compiled with the following additional options:
  409.  
  410.   -DBC_WPP_DLL  Defined symbol.
  411.   -WDE          Windows DLL, only explicit functions exportable.
  412.  
  413.  
  414. The assembly-language file was assembled using TASM  version  2.5.   The  DLLs
  415. were  linked  with  TLINKX  version  4.0;  their resources were compiled using
  416. version 3.00 of RC, the Microsoft Resource  Compiler.   The  import  libraries
  417. were  built  with  Turbo  ImpLib  version  1.0  and  TLIB  version  3.01.  The
  418. static-link libraries were built with TLIB version 3.01.
  419.  
  420. Two of the example programs, FIRST and MDIEDIT,  are  supplied  in  executable
  421. form.   Each  of these was compiled with BCCX version 2.0 using the respective
  422. makefile's default options:
  423.  
  424.   -c             Do not combine link with compile step.
  425.   -DBC_WPP_LIB   Defined symbol.
  426.   -I             Include file directories.
  427.   -mm            Medium memory model.
  428.   -H             Precompiled headers.
  429.   -O             Jump optimization.
  430.   -V             Smart virtual tables.
  431.   -w             All warnings enabled.
  432.   -W             Windows executable, all functions exportable.
  433.  
  434. and linked with TLINKX version 4.0, using the following options:
  435.  
  436.   /c             Case-sensitive link.
  437.   /C             Case-sensitive exports.
  438.   /L             Library and object file directories.
  439.   /Tw            Windows executable.
  440.  
  441. The programs' resources were compiled using version 3.00 of RC.
  442.  
  443. Each of the example programs (except HELLODLL)  is  supplied  with  a  project
  444. (.PRJ)  file  to  rebuild  the program under the Borland Programmer's Platform
  445. (also called the Integrated Development Environment or IDE).  These .PRJ files
  446. are configured to build medium-model programs using the static-link  libraries
  447. WPP_LBM?.LIB.  The .PRJ files specify the following options in addition to the
  448. compiler's factory defaults:
  449.  
  450.    Windows executable, all functions exportable.
  451.    Medium memory model.
  452.    Smart virtual tables.
  453.    Far virtual tables disabled.
  454.    Make:  Check auto-dependencies.
  455.    Jump optimization enabled.
  456.    Precompiled headers disabled.
  457.    Preprocessor symbol defined:  BC_WPP_LIB
  458.  
  459.  
  460.                           AUTOMATIC UPDATE PROGRAM
  461.  
  462. Win++  is  eligible  for  coverage under the Blaise Computing Automatic Update
  463. Program (AUP).  The AUP guarantees that you  will  be  sent  the  most  recent
  464. version  of  the  covered product(s), as well as entitling you to discounts on
  465. the purchase of other Blaise Computing products.   For  more  details,  please
  466. consult the enclosed flyer or contact Blaise Computing.
  467.  
  468.  
  469. (For  a  list  of  supplied files and the diskettes where they reside, see the
  470. PACKING.LST file.)
  471.  
  472.                          === End of README.DOC ===
  473.