home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / trialva / readme.txt < prev    next >
Text File  |  1996-03-31  |  73KB  |  1,969 lines

  1.  
  2.            IBM VisualAge for C++ for Windows - README
  3. =====================================================================
  4.  
  5. IBM* VisualAge* for C++ for Windows** Version 3.5
  6. (C) Copyrights by IBM Corp and by others 1988, 1996.
  7. All rights reserved.
  8.  
  9. US Government Users Restricted Rights - Use, duplication or disclosure
  10. restricted by GSA ADP Schedule Contract with IBM Corp.
  11.  
  12. This file contains important information about the IBM VisualAge for
  13. C++ for Windows product.  You should read the Introduction section
  14. before you install this product.
  15.  
  16.  
  17. Before You Install VisualAge for C++ for Windows
  18. ------------------------------------------------
  19.    WARNING:  The Trial copy of VisualAge for C++ on this CD-ROM,
  20.    contains a time limiting device which is activated when you first
  21.    install the program.  This device will monitor your use of the
  22.    program during the 60 day evaluation period.  At the end of the
  23.    evaluation period the device will prevent the program from
  24.    operating.  You should therefore take precautions to avoid any loss
  25.    of data that might result.
  26.  
  27.  
  28.    A copy of the License Agreement governing the use of this Trial Copy
  29.    of VisualAge for C++ for Windows, can be found in a file called
  30.    LICENSE.AGR in the root directory of this CD-ROM.
  31.  
  32. Support
  33. -------
  34. For information about support, see:
  35.  
  36. o   The "Help !!!... how to get it" card.
  37.  
  38. Or
  39.  
  40. o   The section called What If I Still Have Questions in the
  41.     Frequently Asked Question (FAQ) information in the Online
  42.     Information Notebook.
  43.  
  44. NOTE:  The User's Guide refers to a 60 day Getting Started Support
  45. Period for the U.S. and Canada.  The Getting Started Support is no
  46. longer available.  Similar technical support is available via the
  47. Personal Systems Support Line fee offering.
  48.  
  49.  
  50. Trademarks
  51. ----------
  52. The following terms are trademarks of International Business Machines
  53. Corporation in the United States or other countries or both:
  54.  
  55.     IBM
  56.     DB2
  57.     Open Class
  58.     OS/2
  59.     VisualAge
  60.     WorkFrame
  61.  
  62. Other terms used in this README, which may be denoted by a double
  63. asterisk(**), are trademarks or service marks of others.
  64.  
  65.     Excel, Windows, Windows NT, Win32, Win32s are trademarks of
  66.     Microsoft Corporation.
  67.     PostScript is a trademark of Adobe Systems Incorporated.
  68.  
  69.  
  70. Contents
  71. --------
  72. 1.0  INTRODUCTION
  73. 1.1  Contents
  74. 1.2  Prerequisites for Windows NT and Windows 95
  75. 1.3  Prerequisites for Windows 3.1
  76. 1.4  Installation
  77.   1.4.1  Important Note - Before You Install On Windows 95
  78.   1.4.2  Installing This Product
  79.   1.4.3  Known Problems During Installation
  80.   1.4.4  Known Problems During Deinstallation on Windows NT
  81.  
  82. 2.0  LATE-BREAKING NEWS
  83. 2.1  License Information Notes
  84. 2.2  General
  85.   2.2.1  Windows NT
  86.   2.2.2  Windows 95
  87. 2.3  Compiling and Linking
  88.   2.3.1  Usage Notes
  89.   2.3.2  Restrictions
  90.   2.3.3  Known Problems
  91. 2.4  Working with Resources
  92.   2.4.1  Usage Notes
  93.   2.4.2  Known Problems
  94. 2.5  Using the User Interface Class Libraries
  95.   2.5.1  Portability Differences between Windows and OS/2
  96.   2.5.2  Restrictions and Known Problems
  97.   2.5.3  Win32s Information
  98.   2.5.4  Specific Class Information
  99. 2.6  Using the Data Type and Exception Class Libraries
  100.   2.6.1  Usage Notes
  101.   2.6.2  Factors Affecting Performance With IString
  102. 2.7  Using the Collection Class Libraries
  103.   2.7.1  Restrictions
  104. 2.8  Using the Compound Document Framework Class Libraries
  105.   2.8.1  Installation On Windows NT
  106.   2.8.2  Usage Notes
  107.   2.8.3  Restrictions
  108. 2.9  Using the Editor
  109.   2.9.1  Usage Notes
  110.   2.9.2  Known Problems
  111. 2.10  Using WorkFrame
  112.   2.10.1  Differences from OS/2 and Restrictions
  113.   2.10.2  Usage Notes
  114.   2.10.3  Known Problems
  115. 2.11  Using the Visual Builder
  116.   2.11.1  Known Problems and Restrictions
  117. 2.12  Debugging
  118.   2.12.1  Prerequisites for Win32s
  119.   2.12.2  Usage Notes
  120.   2.12.3  Known Problems on Windows NT and Windows 95
  121. 2.13  Using the Performance Analyzer
  122.   2.13.1  Usage Considerations
  123.   2.13.2  Restrictions and Known Problems
  124. 2.14  Using the Data Access Builder
  125.   2.14.1  Prerequisites
  126.   2.14.2  Usage Notes
  127.   2.14.3  Creating a SOM library of Multiple Classes
  128.   2.14.4  Features
  129.   2.14.5  Known Problems
  130.   2.14.6  Known Problems on DB2 That Affect the Data Access
  131.    Builder
  132.   2.14.7  Using the Data Access Builder with the AS/400
  133. 2.15  Using the Browser
  134.   2.15.1  Known Problems
  135.   2.15.2  Permanent Restrictions
  136. 2.16  SOM
  137.   2.16.1  Known Problems
  138. 2.17  Developing Applications For Win32s
  139.   2.17.1  Building Applications for the Win32s Environment
  140.   2.17.2  Running Win32s Applications on Windows 3.1
  141.   2.17.3  Usage Notes
  142.  
  143. 3.0  SAMPLES
  144. 3.1  General Information
  145.   3.1.1  Usage Notes
  146. 3.2  Data Access Builder Samples
  147.   3.2.1  Running the Samples on Win32s
  148. 3.3  SOM/WorkStation DSOM Samples
  149.   3.3.1  Known Problems and Restrictions
  150.  
  151. 4.0  DOCUMENTATION
  152. 4.1  Printing
  153.   4.1.1  Known Problems With Printing
  154.   4.1.2  How to Print
  155.  
  156.  
  157. 1.0  Introduction
  158.  
  159. The VisualAge for C++ for Windows product runs on Windows NT** on an
  160. Intel system, and runs on Windows 95.  The product generates code that
  161. runs on Windows NT, Windows 95, and Windows 3.1 using Win32s.
  162.  
  163. Unless otherwise described, Windows refers to Windows NT and Windows
  164. 95.
  165.  
  166.  
  167.  
  168.  
  169. 1.1  Contents
  170.  
  171. The contents of this product are:
  172.  
  173. o   Compiler (ICC)
  174.  
  175. o   Linker (ILINK)
  176.  
  177. o   Tools and utilities for defining and creating Windows resources,
  178.     such as dialogs and bitmaps
  179.  
  180. o   Tools and utilities for creating and displaying online help text
  181.  
  182. o   Message compiler
  183.  
  184. o   System header files and libraries
  185.  
  186. o   Library Manager (ILIB)
  187.  
  188. o   Open Class Library, header files, and DLLs for:
  189.  
  190.     -   Data Type and Exception classes
  191.  
  192.     -   Collection classes
  193.  
  194.     -   User interface classes
  195.  
  196.     -   Compound Document Framework classes
  197.  
  198. o   Editor
  199.  
  200. o   WorkFrame
  201.  
  202. o   Visual Builder
  203.  
  204. o   Debugger
  205.  
  206. o   Performance Analyzer
  207.  
  208. o   Data Access Builder
  209.  
  210. o   Browser
  211.  
  212. o   SOM WorkStation and SOM Developer's Toolkit Version 2.1
  213.  
  214. o   Publications in online and PostScript format
  215.  
  216. o   This product also supports remote debugging to a Win32s
  217.     workstation.
  218.  
  219.  
  220. 1.2  Prerequisites for Windows NT and Windows 95
  221.  
  222. o   Windows NT 3.5.1 is required.  This product will not run on
  223.     earlier versions of Windows NT.
  224.  
  225. Or
  226.  
  227. o   Windows 95
  228.  
  229. o   The disk space required for Windows NT and Windows 95 is below.
  230.  
  231.     -   Minimal install of the product requires 48MB.
  232.  
  233.     -   The entire product including the documentation requires 370MB.
  234.         The Installation Guide incorrectly states the required disk
  235.         space.
  236.  
  237.  
  238. 1.3  Prerequisites for Windows 3.1
  239.  
  240. o   Windows 3.1 with Win32s 1.3 installed.  Win32s code is supplied
  241.     with this product.
  242.  
  243. o   Runtime files need to be copied from your Windows NT or Windows 95
  244.     system.
  245.  
  246.     Refer to the Developing Applications for Win32s section for
  247.     details about the files you need.
  248.  
  249. o   10 MB of disk space for the runtime files.
  250.  
  251.  
  252. 1.4  Installation
  253.  
  254. This section describes important information about installing the
  255. product.
  256.  
  257. For details about installation and deinstallation, refer to the
  258. Installation Guide.  The Guide is shipped in hardcopy, and it is
  259. available online in the Help pulldown from any component, such as
  260. WorkFrame or the Browser.  Select At a Glance in the Help pulldown.
  261.  
  262.  
  263. 1.4.1  Important Note - Before You Install On Windows 95
  264.  
  265. This section describes what you need to do before you install the product
  266. on Windows 95.
  267.  
  268. Required Tasks Before You Install the Product
  269. ---------------------------------------------
  270.  
  271. Before you install, you must increase the system environment size.
  272.  
  273. The VisualAge for C++ for Windows product updates a number
  274. of system environment variables during installation and
  275. the default system environment size is too small.
  276.  
  277. The required changes are described below.
  278.  
  279. C:\CONFIG.SYS change
  280. --------------------
  281.  
  282. Use the editor of choice to add the following line to your
  283. C:\CONFIG.SYS file.  Create the file with this
  284. line if the file does not exist.
  285.  
  286.   SHELL=C:\WINDOWS\COMMAND.COM /p /e:20000
  287.  
  288. This line sets the environment size to 20,000 bytes, which
  289. is sufficient for the VisualAge for C++ product.  If
  290. you have other products that use a significant amount of
  291. environment space, you may need to increase this value.  You
  292. may also want to use a smaller value on systems that are
  293. constrained by memory.
  294.  
  295. This change will set the environment size for programs run
  296. directly from folders.
  297.  
  298. NOTE:  The above assumes that Windows 95 was installed in
  299.        the C:\WINDOWS directory.  If you installed in
  300.        another directory, substitute the directory
  301.        name.
  302.  
  303. MS-DOS Prompt change
  304. --------------------
  305.  
  306. Start an MS-DOS Prompt.  If you are using the Start button,
  307. select 'Programs' and then 'MS-DOS Prompt'.  Open the
  308. MS-DOS Prompt Properties window by doing one of the following:
  309.  
  310. -   Opening the system menu by clicking on the MS-DOS icon
  311.     at the top-left corner of the MS-DOS Prompt, and then
  312.     selecting the 'Properties' item
  313. Or
  314. -   Selecting the 'Properties' icon on the Toolbar if the
  315.     Toolbar is active.
  316.  
  317. Switch to memory page by selecting the 'Memory' tab at
  318. the top.  Within the 'Conventional memory' area is a
  319. drop-down entry field.  Click on the arrow, scroll down
  320. until the '4096' entry is visible and select it.  Now
  321. click on the OK button at the bottom of the Properties
  322. sheet.
  323.  
  324. This change sets the environment size for each MS-DOS
  325. prompt started.
  326.  
  327.  
  328. 1.4.2  Installing This Product
  329.  
  330. Refer  to the Installation Guide for details.  The Guide is shipped in
  331. hardcopy, and it is available online in the  Help  pulldown  from  any
  332. component,  such  as  WorkFrame or the Browser.  Select At a Glance in
  333. the Help pulldown.
  334.  
  335. The default path where the files are installed is IBMCPPW.
  336.  
  337.  
  338. 1.4.2.1  Installing Files on Windows 3.1 for Win32s Applications
  339.  
  340. Refer to the Developing Applications for Win32s  section  for  details
  341. about the files you need.
  342.  
  343.  
  344. 1.4.2.2  Installing Files for Compound Document Framework Classes
  345.  
  346. Refer  to  the  section  called  Using the Compound Document Framework
  347. Class Libraries for information about installation.
  348.  
  349.  
  350. 1.4.3  Known Problems During Installation
  351.  
  352. o   We recommend that you do not minimize the  install  window  during
  353.     the  installation.    The  setup screen sometimes freezes if it is
  354.     minimized while the installation is running.   If the  hard  drive
  355.     runs  out  of  space,  you  cannot  continue with the installation
  356.     because when you restore the window, the error dialog is no longer
  357.     shown.
  358.  
  359.     You need to ensure you have enough hard disk space available,  and
  360.     then restart the installation.
  361.  
  362.  
  363. 1.4.4  Known Problems During Deinstallation on Windows NT
  364.  
  365. o   On  Windows  NT,  a  problem  exists when you try to deinstall the
  366.     product after you have more than one install  image  on  the  same
  367.     machine.   This applies only to a full install of the product onto
  368.     your hard disk.  You can successfully deinstall one image, and you
  369.     receive an error message when you  try  to  deinstall  the  second
  370.     image.    Some  files  needed  by  the deinstall program have been
  371.     deleted.   Copy all the files from  the  CD-ROM  directory  called
  372.     IBMCPPW\INSTALL\UTILS,  to  the  \WINNT35\VACPPINS directory where
  373.     the operating system is installed.  Run the deinstall again.
  374.  
  375.  
  376. 2.0  Late-Breaking News
  377.  
  378. This sections describes late-breaking news and restrictions.
  379.  
  380.  
  381. 2.1  License Information Notes
  382.  
  383. The IBM EVALUATION AGREEMENT contains the terms and conditions for
  384. redistributing  files.  The agreeement can be found in a file
  385. called LICENSE.AGR located in the root directory of the CD-ROM.
  386.  
  387. Note that currently you cannot rename CPPWOT3.DLL and ILIBIPF32.DLL.
  388.  
  389.  
  390. 2.2  General
  391.  
  392. This section describes news and restrictions that apply to  more  than
  393. one component in the product.
  394.  
  395. o   The   Online   Information  notebook  is  more  current  than  the
  396.     PostScript files and the printed books.
  397.  
  398.  
  399. 2.2.1  Windows NT
  400.  
  401. o   Windows NT has a known problem in screen saver  code.    When  the
  402.     used  environment  space  reaches a certain size, the WINLOGON.EXE
  403.     program traps.   When this program traps,  Windows  NT  stops  the
  404.     machine.  Only a power off/on sequence can clear this.  If you are
  405.     using  the  Screen  Saver  feature, you are strongly encouraged to
  406.     disable the Screen Saver feature  either  immediately  or  if  you
  407.     encounter this problem in the future.
  408.  
  409.  
  410. 2.2.2  Windows 95
  411.  
  412. o   Sometimes  the VisualAge for C++ tools have unpredictable behavior
  413.     when the Windows 95 system experiences  virtual  memory  problems.
  414.     Virtual memory problems such as full swap space can produce system
  415.     lockups and abnormal terminations without system notification.  It
  416.     is  recommended  that  you run the VisualAge for C++ tools with at
  417.     least 40MB of free space available for your swap file.
  418.  
  419. o   When you bring up the MS-DOS command prompt and type in the letter
  420.     of the drive where you installed the product, you are placed  into
  421.     the following path.
  422.  
  423.       drive:\IBMCPPW\IBM VA FOR C++ FOR WINDOWS
  424.  
  425.     The  path is not correct.  Change the directory to the appropriate
  426.     working directory.
  427.  
  428. o   Sometimes the Windows 95 pointer is displayed as  both  a  pointer
  429.     and an hour glass.  You can proceed to do other tasks.  It appears
  430.     that  you can not take any action until the hour glass disappears,
  431.     but this is not the case.
  432.  
  433. o   The PSTAT and WinPerf programs are not available.
  434.  
  435.  
  436. 2.3  Compiling and Linking
  437.  
  438. This  section  contains  important  information  about  compiling  and
  439. linking.
  440.  
  441.  
  442. 2.3.1  Usage Notes
  443.  
  444. o   System Header Files and Libraries
  445.  
  446.     The  system  header  files  have  been  modified  to work with the
  447.     compiler.   The libraries are shipped with  no  changes  from  the
  448.     versions supplied by Microsoft.
  449.  
  450. o   Working with NMAKE
  451.  
  452.     If  nmake  finds more than one rule in a makefile that can be used
  453.     to build a certain target, it will use the rule found last.
  454.  
  455. o   By default, VisualAge for C++ links  to  the  KERNEL32.LIB  system
  456.     import  library.  Any other system import libraries must be linked
  457.     manually.  For a list of the mapping of  Windows  APIs  to  system
  458.     import  libraries,  refer  to  the  file  called WINAPI.TXT in the
  459.     \IBMCPPW\HELP directory on the CD-ROM.
  460.  
  461.     There are entries that are identical except one ends with "A"  and
  462.     other  ends  with "W".  For example, there is a windows API called
  463.     StartService.  In  the  WINAPI  file  there  are  two  entries   -
  464.     StartServiceA and StartServiceW.  You can ignore the trailing A or
  465.     W.
  466.  
  467. o   Structured  exception  handling is not ported to VisualAge for C++
  468.     on other platforms.  You should avoid using  structured  exception
  469.     handling in applications you want to port.
  470.  
  471.  
  472. 2.3.2  Restrictions
  473.  
  474. o   In  Windows  95 only, nmake does not handle filenames that contain
  475.     spaces. You may need to use the short  version  of  the  filename,
  476.     which you can find using the "dir" command.
  477.  
  478. o   Redirection on Win32s using redirect.obj is not supported with the
  479.     subsystem library.
  480.  
  481. o   If  you  link  statically,  do  not  terminate  your  process with
  482.     ExitThread or ExitProcess APIs, because the  run-time  termination
  483.     will  not  occur,  and  buffers will not be flushed.   If you link
  484.     dynamically, the same restriction applies only to Windows  95  and
  485.     ExitThread. For portability, always use the exit library function.
  486.  
  487. o   Do  not  pass file handles between different library environments.
  488.     For example, do not open a file in the EXE (with fopen,  open,  or
  489.     any  other  library function) and then pass it to a DLL if both of
  490.     them link statically to the run time.
  491.  
  492. o   If you use Thread Local Storage in C++, a restriction  in  Windows
  493.     95  can  affect you.  No initialization or termination code is run
  494.     for variables within a thread.
  495.  
  496.       __thread int i = 5; /* OK, statically initialized */
  497.       __thread int j = f(); /* f() not called in Windows 95*/
  498.  
  499.     In both Windows NT and Windows 95, the order of thread termination
  500.     is  not  predictable.    In  a  DLL,  this  means  the  following.
  501.     PROCESS_DETACH  notification  can  occur  on  a  thread other than
  502.     thread 1.  Termination code registered with the atexit() function,
  503.     as well as destructors of static C++  objects,  will  run  on  the
  504.     thread in which the PROCESS_DETACH notification occurs.
  505.  
  506. o   The library math functions may sometimes fail to detect an invalid
  507.     input  argument,  for  example  a  negative  value  for  the log()
  508.     function.  This may cause a floating point  exception  that  would
  509.     terminate  the  program  on  Win32s.  If  you  plan  to  run  your
  510.     application on this platform, ensure that the argument is valid.
  511.  
  512.  
  513. 2.3.3  Known Problems
  514.  
  515. o   The C++ compiler may not work when you are  compiling  C++  source
  516.     that is located on the Z: drive.
  517.  
  518.     The C++ compiler may terminate with a General Protection Fault and
  519.     a Register Dump.  This problem can be avoided by moving the source
  520.     to a directory that is not located on the Z: drive or by using the
  521.     /Ft- command-line option.
  522.  
  523. o   The  ILINK  option /OPTFUNC will incorrectly remove functions that
  524.     are only referenced from a COFF object.  This is likely  to  be  a
  525.     problem when building a DLL but unlikely when building an EXE.
  526.  
  527. o   Use  of  the  ILINK option /STUB:xxx without the argument (":" and
  528.     file name) will cause a trap.
  529.  
  530. o   According to the  documentation,  ILINK  will  search  directories
  531.     given  on  the command line before searching directories specified
  532.     by the LIB environment variable.  Currently the reverse is true.
  533.  
  534.  
  535. 2.4  Working with Resources
  536.  
  537. This  section  contains  important  information  about  working   with
  538. resources.
  539.  
  540.  
  541. 2.4.1  Usage Notes
  542.  
  543. o   The additional command-line options for ibmpcnv are:
  544.  
  545.         -B      : Input file is a bitmap
  546.         -C      : Input file is a cursor
  547.         -I      : Input file is an icon
  548.         -P      : Input file is a pointer
  549.  
  550.     If  -D  is  specified,  the  above options are ignored and ibmpcnv
  551.     converts files with  .ico,  .bmp,  .cur,  .ptr  extension  in  the
  552.     "filein"  dir.    The  above  options are added because ibmpcnv is
  553.     sensitive to file suffixes.   It only  convert  files  with  .ico,
  554.     .bmp,  .cur,  .ptr suffixes.   It uses the suffix to determine the
  555.     type of resource image.
  556.  
  557. o   The IBM Resource Compiler (IRC) has the  command  line  option  -k
  558.     codepageId   to  support  compiling  resources  in  the  specified
  559.     codepage.
  560.  
  561. o   To view books in .INF format from the command line use iview which
  562.     is a 32-bit upgrade of the xview tool referenced in the IPF User's
  563.     Guide and IPF Programmer's  Guide  and  Reference.    In  addition
  564.     libipfx.dll has been upgraded to libipf32.dll.
  565.  
  566.  
  567. 2.4.2  Known Problems
  568.  
  569. o   Message Compiler Bug
  570.  
  571.     Comments  are  allowed in the input message (."mc") file. Comments
  572.     must begin with a semicolon  (;)  in  the  first  column  and  are
  573.     terminated by the end of the line.
  574.  
  575.     As the User's Guide states, comments that exist by themselves on a
  576.     line  are  copied,  as  is,  to  the  output  include (."h") file.
  577.     However, the semicolon is  not  converted  to  the  C  end-of-line
  578.     comment syntax (//).  The semicolon is stripped from the beginning
  579.     of the comment line.
  580.  
  581.     You  will  have  to  manually  update your include file to add the
  582.     slashes to indicate to the compiler that the line is a comment.
  583.  
  584. o   The resource compiler cannot decompile a binary resource file with
  585.     a MENUEX resource defined in it.  The resource workshop will treat
  586.     the resource as a MENU resource.   When you see "__VERSION 1"  and
  587.     "__OFF  4"  defined under the MENU resource, it means that it is a
  588.     MENUEX resource.  The menu items may not be  decompiled  correctly
  589.     in this case.
  590.  
  591. o   In  the DBCS environment, when you save a file as a resource file,
  592.     the resource workshop will work very slowly.  To improve this, set
  593.     the "Foreground and Background Application Equally Responsive"  in
  594.     the Tasking setup under System setup in the Control Panel.
  595.  
  596. o   If  you  install the product to the root directory of a partition,
  597.     such as E:, then the IPF Compiler will not work  unless  you  make
  598.     the following changes to your environment:
  599.  
  600.     -   On  Windows  95,  the variable "IPF_PATH32" is set to "E:\" in
  601.         the autoexec.bat file.  Remove the backslash  and  change  the
  602.         setting to "E:".
  603.     -   On  Windows  NT,  the variable "IPF_PATH32" is set to "E:\" in
  604.         the registry.  Remove the backslash and change the setting  to
  605.         "E:".  You can use System tool in the Control Panel window.
  606.  
  607. o   If  you  have coded empty help resources you need to add a line of
  608.     null terminators to ensure the proper processing  of  these  tags.
  609.     See the following examples.
  610.  
  611.       100 HELPTABLE
  612.       {
  613.         10, ID_SUBTABLE, 20
  614.       }
  615.       ID_SUBTABLE HELPSUBTABLE
  616.       {
  617.          0,0   /* Null termination string here for empty table */
  618.       }
  619.  
  620.       100 HELPTABLE
  621.       {
  622.          0,0,0 /* Null termination string here for empty table */
  623.       }
  624.  
  625.  
  626. 2.5  Using the User Interface Class Libraries
  627.  
  628. The  following  information  refers  to  the  User  Interface  Classes
  629. contained in the IBM Open Class Library.  These notes are in  addition
  630. to  what  is documented in the Open Class Library User's Guide and the
  631. Open Class Library Reference manuals.
  632.  
  633.  
  634. 2.5.1  Portability Differences between Windows and OS/2
  635.  
  636. Refer to the Portability section of  the  Open  Class  Library  User's
  637. Guide  and  the platform support information contained in the function
  638. descriptions of the Open Class Library Reference, Volumes I - IV.
  639.  
  640.  
  641. 2.5.2  Restrictions and Known Problems
  642.  
  643. This section describes the restrictions and known problems,  including
  644. documentation problems.
  645.  
  646.  
  647. 2.5.2.1  Colors
  648.  
  649. The  following  member  overrides  were  added  to  query  and set the
  650. background color of the font and file dialogs:
  651.  
  652. In ifontdlg.hpp:
  653.  
  654.     virtual IColor backgroundColor () const;
  655.     virtual IFontDialog &setBackgroundColor (Const IColor& color);
  656.  
  657. In ifiledlg.hpp:
  658.  
  659.     virtual IColor backgroundColor () const;
  660.     virtual IFileDialog &setBackgroundColor (Const IColor& color);
  661.  
  662.  
  663. 2.5.2.2  Graphics
  664.  
  665. The set of pen types, styles, and patterns that  can  be  set  through
  666. IGraphicBundle  is  limited  on  Win32s  and  Windows  95.    On these
  667. environments, the best available approximation is chosen.
  668.  
  669. Due to a limitation in the Graphic Device Interface (GDI)  on  Windows
  670. 95,    only    the    pen    patterns    IGraphicBundle::filled    and
  671. IGraphicBundle::hollow are supported.
  672.  
  673.  
  674. 2.5.2.3  Multimedia
  675.  
  676. USE OF IMMDEVICE::MODE IN NOTIFICATION HANDLERS
  677.  
  678. As part of its execution,  IMMDevice::mode  generates  a  notification
  679. event.    When writing a notification handler, you should keep this in
  680. mind.     Consider  the  following  code,   which   is   part   of   a
  681. dispatchNotificationEvent routine:
  682.  
  683.      IMMNotifyEvent* notifyEvent =
  684.         (IMMNotifyEvent*)(event.eventData().asUnsignedLong());
  685.  
  686.      if (notifyEvent->command() == IMMNotifyEvent::play)
  687.      {
  688.         panel.playbtn.unlatch();
  689.         if (panel.playerDevice == CDID)
  690.           if (panel.cdPlayer->mode() == IMMDevice::playing)
  691.           {
  692.              panel.playbtn.latch();
  693.           }
  694.      }
  695.  
  696. In  this  example,  the  mode function is called within the if clause.
  697. But consider the following, where it is moved outside:
  698.  
  699.      IMMNotifyEvent* notifyEvent =
  700.   (IMMNotifyEvent*)(event.eventData().asUnsignedLong());
  701.      if (notifyEvent->command() == IMMNotifyEvent::play)
  702.      {
  703.         panel.playbtn.unlatch();
  704.      }
  705.      if (panel.playerDevice == CDID)
  706.        if (panel.cdPlayer->mode() == IMMDevice::playing)
  707.        {
  708.           panel.playbtn.latch();
  709.        }
  710.  
  711. This causes the following set of events to occur:
  712.  
  713. 1.  The "mode()" command generates a notify event
  714. 2.  The notify event re-enters "dispatchNotificationEvent()"
  715. 3.  Since the "mode()" command is not inside  the  if  clause,  it  is
  716.     executed again
  717. 4.  Loop through steps 1-3 recursively until a stack overflow occurs
  718.  
  719. Care  should  be  taken  when  using  the  "mode()"  command  in  this
  720. situation.
  721.  
  722. RECORDING IN THE 32-BIT WINDOWS ENVIRONMENT
  723.  
  724. In  32-bit  Windows,  the  only  device  that  supports  recording  is
  725. WAVEAUDIO  (IMMWaveAudio).  In  addition, certain recording parameters
  726. can only be specified when opening a  new  data  file  for  recording.
  727. Once  recording  has begun, they cannot be altered.  This also applies
  728. when adding recorded material to an existing file.  The IBM Open Class
  729. functions that get or set these parameters are listed below:
  730.  
  731. o   IMMConfigurableAudio::setBytesPerSecond
  732. o   IMMConfigurableAudio::setBitsPerSample
  733. o   IMMConfigurableAudio::setBlockAlignment
  734. o   IMMConfigurableAudio::setChannels
  735. o   IMMConfigurableAudio::setFormat
  736. o   IMMConfigurableAudio::setSamplesPerSecond
  737. o   IMMConfigurableAudio::bytesPerSecond
  738. o   IMMConfigurableAudio::bitsPerSample
  739. o   IMMConfigurableAudio::blockAlignment
  740. o   IMMConfigurableAudio::channels
  741. o   IMMConfigurableAudio::format
  742. o   IMMConfigurableAudio::samplesPerSecond
  743.  
  744. If the setters are used on a device  that  already  contains  recorded
  745. material,  an  exception is thrown.   The use of either the setters or
  746. getters on a device that does not support recording (for example,  any
  747. device other than IMMWaveAudio in 32-bit Windows) throws an exception.
  748.  
  749. Use IMMDevice::supportsRecord to determine if the getters can be used.
  750. It  is  recommended that you maintain a "new record file" flag for use
  751. of the setters.  Once recording has initiated, this flag should be set
  752. to false and access to the setters should be disabled.
  753.  
  754. NEW MEMBER FUNCTIONS IN IMMAUDIOCD
  755.  
  756. The following functions were added to IMMAudioCD, but are not  in  the
  757. product documentation:
  758.  
  759. The following function returns the current table of contents entry.
  760.  
  761.   public:
  762.      unsigned long IMMAudioCD::currentContentsEntry() const
  763.  
  764. The following function returns the current track.
  765.  
  766.   public:
  767.      unsigned long IMMAudioCD::currentTrack() const
  768.  
  769. 32-BIT WINDOWS SUPPORTED MEMBER FUNCTIONS IN IMMPLAYABLEDEVICE
  770.  
  771. The  following  functions  in  IMMPlayableDevice  are  listed  as  not
  772. supported under 32-bit Windows, when in fact they are:
  773.  
  774.   public:
  775.   IMMPlayableDevice&
  776.     IMMPlayableDevice::startPositionTracking(const IMMTime &time,
  777.                                                          CallType call)
  778.   public:
  779.   IMMPlayableDevice&
  780.     IMMPlayableDevice::stopPositionTracking(CallType call)
  781.  
  782. USE OF IMMDIGITALVIDEO::SETDESTINATION
  783.  
  784. When  using  ICoordinateSystem::originLowerLeft,  the   setDestination
  785. rectangle specified is mapped relative to the lower-left corner of the
  786. video window.  This may cause clipping of the video image.
  787.  
  788. COMPOUND DEVICES IN 32-BIT WINDOWS
  789.  
  790. In  general, 32-bit Windows MCI compound devices (those that require a
  791. file for data, such as WAVEAUDIO, SEQUENCER,  and  DIGITALVIDEO)  have
  792. limited  function until they are loaded with a file.  Because of this,
  793. it is recommended that actions on these devices  be  limited  until  a
  794. file is loaded, using the IMMFileMedia::load member function.
  795.  
  796. MCI_LOAD EMULATION
  797.  
  798. In  32-bit Windows, a compound device's device element (data file) can
  799.                                         ______________
  800. only be specified when the device is opened.  The MCI_LOAD function is
  801. not supported, so the device element  cannot  be  changed  after  that
  802. time.
  803.  
  804. The  following  protected  virtual  functions  are used to emulate the
  805. MCI_LOAD command, allowing an IBM Open Class multimedia object  change
  806. its filename:
  807.  
  808.   virtual IMMDevice
  809.     &saveDeviceSettings     (),
  810.     &restoreDeviceSettings  (Boolean newRecordMode = false);
  811.  
  812. For compound devices, when IMMFileMedia::load is called, the following
  813. events occur to emulate MCI_LOAD:
  814.  
  815. 1.  All  classes  in  the  objects's  hierarchy  are requested to save
  816.     pertinent parameters or settings using saveDeviceSettings.
  817.  
  818. 2.  The current device associated with the object is closed.
  819.  
  820. 3.  A new device is opened with the new filename,  and  is  associated
  821.     with the object.
  822.  
  823. 4.  All  classes  in  the  object's hierarchy are requested to restore
  824.     pertinent parameters or settings using restoreDeviceSettings.
  825.  
  826. Derived classes should use  these  classes  as  necessary.  The  final
  827. statement  before  the  return  should  be a call to the parent's same
  828. function, allowing all inherited classes to save or restore settings.
  829.  
  830. IMMDEVICE::SETVOLUME LIMITATION
  831.  
  832. The 32-bit Windows  MCI  does  not  support  MCI_OVER  so  the  "over"
  833. parameter is ignored.
  834.  
  835. IMMDEVICE::SENDCOMMAND LIMITATION
  836.  
  837. The  32-bit  Windows  mciSendCommand  function  does  not  support the
  838. passing of an arbitrary user parameter,  so  this  capability  is  not
  839. available.
  840.  
  841.  
  842. 2.5.3  Win32s Information
  843.  
  844.  
  845. 2.5.3.1  Cursor Limitations on Win32s
  846.  
  847. 16-bit  Windows  supports only monochrome cursors.  If a container has
  848. monochrome icons, drag and drop uses default OLE cursors  for  a  drag
  849. image.
  850.  
  851.  
  852. 2.5.3.2  Fly-over Help Limitations on Win32s
  853.  
  854. Due to a Windows limitation, fly-over help does not work properly with
  855. any   composite   control   containing   an   entry   field,  such  as
  856. IMultiLineEdit, IEntryField, spin buttons, and combination boxes.
  857.  
  858.  
  859. 2.5.3.3  Dynamic Data Exchange (DDE) Limitations on Win32s
  860.  
  861. The following functions are not supported for DDE on Win32s platforms:
  862.  
  863. o   IDDEClientConversation::beginHotLink
  864. o   IDDEClientConversation::endHotLink
  865. o   IDDETopicServer::hotLinkUpdate
  866.  
  867. You can use these member functions to establish a  DDE  hot  link  but
  868. subsequent data requests and hot link updates may be corrupted.
  869.  
  870.  
  871. 2.5.3.4  Message Box Limitations on Win32s
  872.  
  873. Due  to  a  Windows  limitation,  specifying the desktop window as the
  874. owner of an IMessageBox  object  causes  your  desktop  window  to  be
  875. disabled.  This disables the mouse, causing any mouse button clicks to
  876. result  in  a beep.  You must reboot your computer to enable the mouse
  877. again.
  878.  
  879. Ensure the owner of your  IMessageBox  is  a  window  other  than  the
  880. desktop.
  881.  
  882.  
  883. 2.5.4  Specific Class Information
  884.  
  885.  
  886. 2.5.4.1  IAcceleratorKey and IAcceleratorTable
  887.  
  888. These classes are not supported on the Win32s platform.
  889.  
  890. Accelerator  keys  have  the  following restrictions on Windows NT and
  891. Windows 95:
  892.  
  893. o   Assigning a key to run an application command vs. a system command
  894.     is ignored.    The  distinction  on  the  type  of  command  event
  895.     generated  when  the  key  is pressed is determined by the Windows
  896.     presentation system based on  the  command  identifier.    If  the
  897.     system  menu  contains  an  item  with  the  same  identifier, the
  898.     accelerator key generates a system command event.   Otherwise,  it
  899.     generates an application command.
  900.  
  901. o   Assigning  a  key  to  generate  a  help request causes the key to
  902.     generate an  IC_ID_HELP  command.    IFrameHandler  processes  the
  903.     command as a help request.  You must do one of the following:
  904.  
  905.     -   The  accelerator  table  with  this  key must be assigned to a
  906.         canvas, container, or frame window for  the  IFrameHandler  to
  907.         process this command.
  908.     Or
  909.     -   You must create a command handler that sends the command event
  910.         up  the  chain of the owner window, and attach this handler to
  911.         the window with the accelerator table.
  912.  
  913.  
  914. 2.5.4.2  IBaseComboBox
  915.  
  916. Horizontal scrollbars are only supported for  simple  combo  boxes  in
  917. Windows NT newshell applications.  This is due to a Windows bug.  They
  918. are  supported  for  all  combo  box types in Windows 95 applications.
  919. Horizontal  scrollbars  are  not  supported  in  Windows  NT  oldshell
  920. applications.
  921.  
  922.  
  923. 2.5.4.3  IContainerControl
  924.  
  925. When      calling     IContainerControl::refresh     after     calling
  926. IContainerControl::setRefreshOff, refresh should be called with a true
  927. parameter.   This solves  any  painting  problems  that  occurr  after
  928. calling IContainerControl::setRefreshOff.
  929.  
  930.  
  931. 2.5.4.4  IContainerControl::ColumnCursor
  932.  
  933. The  documentation  for this class in the Open Class Library Reference
  934. is incorrect as the columns are iterated in the expected order.    The
  935. Windows information for this class should then read as follows:
  936.  
  937. WINDOWS  INFORMATION:   The  native  Windows  container has a required
  938. first column.  If an IContainerColumn object is not inserted for  this
  939. required   column,  the  cursor  does  not  iterate  them.    See  the
  940. IContainerColumn documentation for more details.
  941.  
  942.  
  943. 2.5.4.5  IFileDialog
  944.  
  945. The SAVE AS DIALOG fails to save a file to a network drive  under  the
  946. following circumstances:
  947.  
  948. 1.  Windows 95 environment
  949. 2.  File already exists
  950. 3.  Network drive is an HPFS drive
  951.  
  952. The  error  that  is  reported  states  that  the path does not exist.
  953. However, this scenario does work when  the  network  drive  is  a  FAT
  954. drive.
  955.  
  956. An ICommandHandler cannot be used to handle events for an IFileDialog.
  957. Currently, command and systemCommand events are not passed to handlers
  958. but are routed directly to the default file dialog procedure.
  959.  
  960.  
  961. 2.5.4.6  IFont
  962.  
  963. If an IFont object is being used for a printer, plotter, FAX, or other
  964. non-display  device,  some of the attribute-setting functions assume a
  965. display presentation space (device context) for use  in  recalculating
  966. the  font metrics.   There is no way to pass a presentation space as a
  967. parameter to the these  functions.    The  result  is  that  pointSize
  968. returns an incorrect size for the actual presentation space afterward.
  969. There  is  no problem for IFont objects used with display presentation
  970. spaces.
  971.  
  972. The IFont member functions involved are listed below:
  973.  
  974.     setBold
  975.     setItalic
  976.     setUnderscore
  977.     setAllEmphasis
  978.     useBitmapOnly
  979.     setDirection
  980.  
  981. A solution is to save the pointSize across a  call  to  one  of  these
  982. functions.  This solution is only needed if the font is not being used
  983. for a display.  For example:
  984.  
  985.     size = pointSize();
  986.     setBold();
  987.     setPointSize(size, printerPs);
  988.  
  989.  
  990. 2.5.4.7  IInfoArea
  991.  
  992. Menu  items  that have a submenu do not display text in an information
  993. area.
  994.  
  995.  
  996. 2.5.4.8  IKeyboardEvent
  997.  
  998. The IKeyboardEvent::sysRq enumerator is not supported on  the  Windows
  999. platform.
  1000.  
  1001.  
  1002. 2.5.4.9  IMultiLineEdit
  1003.  
  1004. Due  to a 16-bit Windows limitation, importing a large file into a MLE
  1005. does not work properly.  Windows 95 implements some window  management
  1006. features  in 16 bits.  The use of 16 bits imposes some restrictions on
  1007. parameters in functions and messages and places  limits  of  about  64
  1008. kilobytes of text.
  1009.  
  1010.  
  1011. 2.5.4.10  IThread
  1012.  
  1013. If   you   are   building  a  statically  linked  (Gd-)  multithreaded
  1014. application for Windows 95, restrictions apply.  You should  use  only
  1015. the  IThread  constructors  to  create  threads  that  contain IWindow
  1016. objects or are referenced using IThread.  You should avoid  using  the
  1017. CreateThread  32-bit  Windows  function  or  the beginthread C library
  1018. function to create threads.  The following IThread constructor may not
  1019.  
  1020. function  correctly  when  applied  to  a  thread  created  with   the
  1021. CreateThread or beginthread functions:
  1022.  
  1023.     IThread ( const IThreadId&     threadID,
  1024.               const IThreadHandle& threadHandle =
  1025.               IThreadHandle::noHandle );
  1026.  
  1027. This  restriction  does  not  apply  to  Windows NT applications or to
  1028. dynamically linked Windows 95 applications.
  1029.  
  1030.  
  1031. 2.6  Using the Data Type and Exception Class Libraries
  1032.  
  1033.  
  1034. 2.6.1  Usage Notes
  1035.  
  1036. A new capability has been added to ITrace to  enable  capturing  trace
  1037. output  to  a  file.    To  direct  ITrace  output  to a file, set the
  1038. following environment variables before starting the application.
  1039.  
  1040.   SET ICLUI_TRACETO=FILE       <- causes the next environment to
  1041.                                   be checked and used
  1042.   SET ICLUI_TRACEFILE=<file>   <- trace output will be place into
  1043.                                   <file>
  1044.  
  1045.  
  1046. 2.6.2  Factors Affecting Performance With IString
  1047.  
  1048. When  the  IString  class   is   enabled   for   internationalization,
  1049. performance may be degraded.  Factors that affect performance are:
  1050.  
  1051. o   Strings that are thousands of bytes long
  1052. o   Frequency of string parsing and indexing.
  1053.  
  1054.  
  1055. 2.7  Using the Collection Class Libraries
  1056.  
  1057.  
  1058. 2.7.1  Restrictions
  1059.  
  1060.  
  1061. 2.7.1.1  Copying Key Collection Class objects
  1062.  
  1063. If  you  use  your  own  copy  constructor  to  add an object to a key
  1064. collection, be sure that  the  key  of  the  object  is  not  changed.
  1065. Changing  the  key  can cause unpredictable results, including program
  1066. traps.  In general, it is recommended that you use  the  default  copy
  1067. constructor, rather than defining your own.
  1068.  
  1069. The  Key  collection  classes  can  be recognized by the word "key" in
  1070. their name.  For example IKeyBag and IKeySetAsBSTTree.
  1071.  
  1072.  
  1073. 2.8  Using the Compound Document Framework Class Libraries
  1074.  
  1075. This section describes important information about  the  the  Compound
  1076. Document Framework Class Libraries.
  1077.  
  1078.  
  1079. 2.8.1  Installation On Windows NT
  1080.  
  1081. To  insert  a  CDF  server  into an OLE container or to activate a CDF
  1082. server within an OLE container, you must do the following.    Set  the
  1083. system path to point to the DLLs in the \IBMCPPW\BIN directory.
  1084.  
  1085.  
  1086. 2.8.2  Usage Notes
  1087.  
  1088. o   You need the following program:
  1089.  
  1090.     -   UUIDGEN.EXE  from the Win32 Development Toolkit.  It is in the
  1091.         \IBMCPPW\SDK\BIN directory.
  1092.  
  1093. o   If your application model needs to stream input or output from  an
  1094.     ICLUI   or   user-defined  class  which  does  not  define  stream
  1095.     operators, you can define your own operators.    When  you  define
  1096.     operators  you  need to include a prototype statement in your .HPP
  1097.     file, or you will receive the message about INCLUDE\IBASSTRM.C.
  1098.  
  1099.     For example, if the .CPP file contains:
  1100.  
  1101.       IBaseStream& operator>>=(IPoint pt, IBaseStream& strm) {....}
  1102.  
  1103.     The .HPP file needs to contain:
  1104.  
  1105.       IBaseStream& operator>>=(IPoint pt, IBaseStream& strm);
  1106.  
  1107.  
  1108. 2.8.3  Restrictions
  1109.  
  1110. o   The Compound Document  Framework  does  not  support  building  or
  1111.     running Win32S applications.
  1112.  
  1113.  
  1114. 2.9  Using the Editor
  1115.  
  1116. This section contains important information about using the Editor.
  1117.  
  1118.  
  1119. 2.9.1  Usage Notes
  1120.  
  1121. o   In  Windows  95,  when  entering  characters  using  the Alt key +
  1122.     numeric pad, use Alt + 0 + the character code  for  the  character
  1123.     you are entering.
  1124.  
  1125. o   In  the  Font selection window, some font selections will indicate
  1126.     the availability of extended font styles, such as Italic or  Bold.
  1127.     The  Editor  ignores extended font style selections, and uses only
  1128.     the underlying (Regular) font.   To set additional  font  effects,
  1129.     use  the  Token  Attributes  window,  available  from  the Options
  1130.     pull-down menu.
  1131.  
  1132. o   If the Editor window does not appear, or it is  unusable  when  it
  1133.     does  appear,  erase  the  LPEX.ini file, then restart the Editor.
  1134.     The LPEX.ini file can be found in the directory where  Windows  is
  1135.     installed.
  1136.  
  1137.  
  1138. 2.9.2  Known Problems
  1139.  
  1140. o   When  using  the  Editor  on  Windows 95, certain character effect
  1141.     combinations such as bold and italics may not be readable in  some
  1142.     fonts or font sizes.
  1143.  
  1144. o   On  Windows  95,  you  cannot use the Save As dialog to save to an
  1145.     existing file on a remote HPFS drive.
  1146.  
  1147.  
  1148. 2.10  Using WorkFrame
  1149.  
  1150. This section contains important information about using WorkFrame.
  1151.  
  1152.  
  1153. 2.10.1  Differences from OS/2 and Restrictions
  1154.  
  1155. o   No project inheritance  or  Tool  Setup  is  available.    Actions
  1156.     (tools), and types are defined in the product solution file, which
  1157.     is called vacpp.iws.
  1158.  
  1159. o   WorkFrame does not support user defined types.
  1160.  
  1161. o   Environment  variables can be defined through the Project Settings
  1162.     notebook.
  1163.  
  1164. o   Options defined by using  the  option  dialogs  are  stored  on  a
  1165.     per-project  basis  in  the  options  file  for the project.   The
  1166.     options file has the extension .iwo.   You can access  the  option
  1167.     dialogs  using the Options pulldown menu in a project view. If you
  1168.     delete the options file, you can recover by using  the  editor  to
  1169.     create  a  new  options  file.    Use  the  same file name with an
  1170.     asterisk for the extension.  Then use the options dialogs to reset
  1171.     your options for the project.
  1172.  
  1173.     Other project specific information e.g. project settings, is  kept
  1174.     on a per-project basis in the project's project file.  The project
  1175.     file has the extension .iwp.
  1176.  
  1177. o   Note:    You  should  not  directly change the above configuration
  1178.     files, such as the *.iws, *.iwp, and *.iwo files.
  1179.  
  1180. o   No drag and drop is available
  1181.  
  1182. o   A details view of the project is not available, but icon and  tree
  1183.     views are supported.
  1184.  
  1185. o   Monitored  actions  are implemented through the Editor rather than
  1186.     WorkFrame.   The monitor is an Editor  monitor,  not  a  WorkFrame
  1187.     monitor.
  1188.  
  1189.  
  1190. 2.10.2  Usage Notes
  1191.  
  1192. o   The  IBUILD  and  IMKMK  commands  have been updated to remove the
  1193.     limit on the number of parameters they will accept. There  is  now
  1194.     NO restriction on the number of parameters for IBUILD and IMKMK.
  1195.  
  1196.  
  1197. 2.10.3  Known Problems
  1198.  
  1199. o   In notebooks, the help that is displayed from the Help pushbuttons
  1200.     may  depend  on  what  has  focus.    If a notebook tab has focus,
  1201.     sometimes no help is displayed from the Help pushbutton.  In  most
  1202.     cases  for  the  Options  notebooks,  holding  down the left mouse
  1203.     button and pressing F1 over  the  notebook  Help  pushbutton  will
  1204.     display general help.
  1205.  
  1206. o   Pressing  F1  when  focus  is  on a notebook tab sometimes changes
  1207.     notebook files instead of displaying help.
  1208.  
  1209. o   Keyboard navigation and accelerators don't work properly for  some
  1210.     dialogs.
  1211.  
  1212. o   Opening options notebooks and changing options for two projects at
  1213.     the same time may cause problems.
  1214.  
  1215. o   If  multiple  .EXE files are selected to Run Monitored at the same
  1216.     time, only one of them will be run multiple times.
  1217.  
  1218. o   If the option to create a dependency file is  specified,  not  all
  1219.     dependencies  are  put  into  this  file;  some  are  left  in the
  1220.     makefile.
  1221.  
  1222. o   Occasionally when running on Windows 95,  WorkFrame  windows  will
  1223.     not  respond  to the mouse.  To correct this, click on the desktop
  1224.     and then click on the WorkFrame window again.
  1225.  
  1226. o   When you use WorkFrame for several hours, sometimes you receive  a
  1227.     warning  about  low virtual memory.   The log file for the monitor
  1228.     operations becomes too large.  To avoid the problem, you  need  to
  1229.     exit  from  the  project  monitor  window occasionally.   The exit
  1230.     action erases the log file.
  1231.  
  1232. o   When you build and run applications that use  HLP  and  INF  files
  1233.     from  WorkFrame, a problem exists.  The application seems to build
  1234.     correctly.  When you run the application, you  receive  a  message
  1235.     saying  that  the  HLP file and the INF file cannot be found.  You
  1236.     need to do the following.  In the WorkFrame settings, set the Help
  1237.     environment variable to point to  the  HELP  subdirectory.    Then
  1238.     build and run your application again.
  1239.  
  1240.  
  1241. 2.11  Using the Visual Builder
  1242.  
  1243. This  section  contains  important  information about using the Visual
  1244. Builder.
  1245.  
  1246.  
  1247. 2.11.1  Known Problems and Restrictions
  1248.  
  1249. o   Part files (.vbb) from the OS/2 release can be  loaded  and  saved
  1250.     under this release, but part files saved in this release cannot be
  1251.     loaded in the OS/2 release.
  1252.  
  1253.     When  you  load  an OS/2 part file, Visual Builder asks you if you
  1254.     want to convert it to the Windows format.   If you answer  YES  to
  1255.     this  message, the part file is converted and it will no longer be
  1256.     readable on OS/2.  If you want to keep a copy of  your  OS/2  part
  1257.     files, back them up before loading them into the Windows release.
  1258.  
  1259. o   When  using  the  native  details-view  container,  you  will have
  1260.     problems selecting container columns other than column 1  directly
  1261.     from  the  free-form  surface.   To edit the unreachable container
  1262.     columns, do the following:
  1263.  
  1264.     1.  Select the container.
  1265.  
  1266.     2.  Click mouse button 2.    The  contextual  menu  for  the  part
  1267.         appears.
  1268.  
  1269.     3.  Select VIEW PARTS LIST.  The Parts List window appears.
  1270.  
  1271.     4.  Double-click the icon that represents the container column you
  1272.         want to edit.  The settings window opens for the part.
  1273.  
  1274. o   If  you  use  container columns in a native Windows container, set
  1275.     the container to details view only.   Using  any  other  container
  1276.     view  might cause Visual Builder to close without warning, and you
  1277.     could lose unsaved updates to your part.
  1278.  
  1279. o   Situations  exist  where  use  of  a  native  progress   indicator
  1280.     sometimes causes the Builder to shut down.  To avoid this problem,
  1281.     set  the  pmCompatible  style  to  ON  to  use  the  CUA  progress
  1282.     indicator.
  1283.  
  1284. o   Minor changes have been made to the Visual  Builder  User's  Guide
  1285.     since  it  was printed.  For the most current information, see the
  1286.     online version of the book.  The sections affected are as follows:
  1287.  
  1288.         Starting Visual Builder
  1289.         Learning to Use Parts
  1290.         Constructing Containers and Notebooks
  1291.         Hints and Tips
  1292.  
  1293. o   Minor changes have been made to the Visual Builder Parts Reference
  1294.     since it was printed.  For the most  up-to-date  information,  see
  1295.     the  online version of the book.  Portability information has been
  1296.     added to include features that are unique to Windows or ignored by
  1297.     the Windows compiler.
  1298.  
  1299.  
  1300. 2.12  Debugging
  1301.  
  1302. This section contains important information about debugging.
  1303.  
  1304.  
  1305. 2.12.1  Prerequisites for Win32s
  1306.  
  1307. o   Remote debugging on Win32s requires IBM  TCP/IP  for  DOS  Version
  1308.     2.1.1 and above.
  1309.  
  1310.  
  1311. 2.12.2  Usage Notes
  1312.  
  1313. o   To  enable  debug on demand, add the directory for your program to
  1314.     the PATH environment  variable  or  start  the  program  from  its
  1315.     directory.
  1316.  
  1317.     To run debug on demand, enter the command:
  1318.  
  1319.       DOD path_name
  1320.  
  1321.     The  User's  Guide  incorrectly  states that you need to enter DOD
  1322.     path_name \idebug.
  1323.  
  1324.  
  1325. 2.12.3  Known Problems on Windows NT and Windows 95
  1326.  
  1327. o   You cannot use the Step Over or Step Debug functions to step  into
  1328.     a structured exception handling __finally block.
  1329.  
  1330. o   Attaching to the debugger itself causes unpredictable results.
  1331.  
  1332. o   For  applications  running  under  the  debugger, asynch exception
  1333.     handling is disabled. If the application uses a signal to register
  1334.     an asynch handler, there is no way to  detect  the  exception  and
  1335.     invoke the handler.
  1336.  
  1337. o   Toggling  breakpoints  at an execution line clears all breakpoints
  1338.     on that line.
  1339.  
  1340. o   A stack entry is missed when you  single  step  into  a  one  line
  1341.     function, for example constructor code.
  1342.  
  1343. o   On Windows 95, the system hangs in one situation when a breakpoint
  1344.     is hit.  The situation is when you are debugging a GUI application
  1345.     and you resize one of the windows of the application.
  1346.  
  1347. o   On  Windows  95,  multithread  application  requires  closing  the
  1348.     debugger (F3) twice for complete clean up.
  1349.  
  1350. o   On Windows 95,  make  sure  all  change  address  breakpoints  are
  1351.     deleted  before  closing  the  debugger.  The  system hangs if any
  1352.     change address breakpoint remains on the stack  when  the  program
  1353.     being debugged runs to completion.
  1354.  
  1355. o   On  Windows  95,  not  all  exception signals are passed on to the
  1356.     debugger. For some illegal operations, the debugger is not able to
  1357.     catch the exception for the offending application.
  1358.  
  1359. o   Closing  the  application  using  the  system  menu,   while   the
  1360.     application  is  stopped  by  the debugger, produces unpredictable
  1361.     results on Windows 95.
  1362.  
  1363. o   Due to system limitation on Windows95, the debugger is not able to
  1364.     step over certain system services such as WaitForSingleObject.
  1365.  
  1366. o   Some hexadecimal values may not  be  displayed  correctly  in  the
  1367.     Character  column  of  the  Storage  window.  To fix this, set the
  1368.     LC_ALL environment variable to the ANSI  locale  (codepage)  which
  1369.     corresponds to the country/language setting of your machine.
  1370.  
  1371.     For example, for US English:
  1372.  
  1373.     SET LC_ALL=En_US.IBM-1252
  1374.  
  1375.     You  can  find  the  correct  locale name in the "Compiled locales
  1376.     supplied with VisualAge for C++" table in the  Programming  Guide.
  1377.     You  should  use  the  locale name whose number is in the range of
  1378.     1250 to 1257.
  1379.  
  1380.  
  1381. 2.13  Using the Performance Analyzer
  1382.  
  1383. This  section  contains  important   information   about   using   the
  1384. Performance Analyzer.
  1385.  
  1386.  
  1387. 2.13.1  Usage Considerations
  1388.  
  1389. o   If  you  are  running  a  multithreaded  application  that creates
  1390.     threads after existing threads of execution have been  terminated,
  1391.     the   operating   system   may   reuse  the  thread  numbers  that
  1392.     corresponded to the terminated  threads.    If  this  occurs,  the
  1393.     Performance  Analyzer  may report fewer threads than were actually
  1394.     executed.
  1395.  
  1396. o   If the object file containing the first executable function is not
  1397.     traceable, part or all of your application  will  run  before  the
  1398.     TRACE  GENERATION  window is displayed.   If this is the case, the
  1399.     Performance Analyzer will run to  the  first  traceable  function,
  1400.     halt execution, and then display the TRACE GENERATION window.
  1401.  
  1402. o   To enable the Performance Analyzer in WorkFrame do the following:
  1403.  
  1404.     -   The  best way to enable the performance analyzer is to use the
  1405.         option in Build Smarts.  This will correctly set up  both  the
  1406.         compiler and linker options.
  1407.  
  1408.     -   Enabling  the  option in the compiler dialog will only turn on
  1409.         the compiler  /Gh  option,  but  will  not  add  the  required
  1410.         CPPWPA3.OBJ at link time.
  1411.  
  1412.  
  1413. 2.13.2  Restrictions and Known Problems
  1414.  
  1415. o   File accesses cannot be traced.
  1416.  
  1417. o   The  first  function  traced  (usually  main)  cannot  be set as a
  1418.     trigger or disabled.
  1419.  
  1420. o   Six system calls used by the Performance Analyzer are  not  traced
  1421.     in  your  program  when the _KERNEL.DLL intercept library is used.
  1422.     These   are:   InitializeCriticalSection,    EnterCriticalSection,
  1423.     LeaveCriticalSection,     LoadLibrary,     GetProcAddress,     and
  1424.     GetCurrentThreadId.
  1425.  
  1426. o   After generating a trace file, you may not be  able  to  erase  or
  1427.     rebuild your executable while the Performance Analyzer is running.
  1428.     You  may  have  to  exit the Performance Analyzer and then rebuild
  1429.     your executable.
  1430.  
  1431. o   If your program contains a function preceded by an underscore (_),
  1432.     the Performance Analyzer will display  the  function  without  the
  1433.     underscore in the trace file.
  1434.  
  1435. o   The  pattern recognition feature (on the CALL NESTING diagram) has
  1436.     the following limitations:
  1437.  
  1438.     -   The Performance Analyzer only searches  for  patterns  in  the
  1439.         first 32,768 events in the selected thread.
  1440.     -   The  maximum  number  of  patterns  for  which the Performance
  1441.         Analyzer searches is 8191.
  1442.  
  1443.     When the Performance Analyzer reaches either of these  limits,  it
  1444.     stops searching for patterns.
  1445.  
  1446. o   If  your  EXE  is  not  in the current directory or in a directory
  1447.     specified by the PATH environment variable, and it uses a DLL that
  1448.     is in the current directory, then the Performance Analyzer  cannot
  1449.     __
  1450.     load  the program.  Instead the operating system displays an error
  1451.     message stating "Unable to locate DLL".  The error  message  shows
  1452.     the  path  that  the operating system searched, which includes the
  1453.     current directory.
  1454.  
  1455. o   If your DLL is not in the current  directory  or  in  a  directory
  1456.     specified  by the PATH environment variable, the functions in your
  1457.     DLL will be traced; however, they will not be resolved.    In  the
  1458.     trace file, they will appear as addresses instead of names.
  1459.  
  1460. o   The  compiler  should  only produce profile hooks for user-defined
  1461.     functions.   Currently the compiler  produces  profile  hooks  for
  1462.     several  compiler-generated  functions in addition to user-defined
  1463.     functions.  These compiler-generated functions will appear in  the
  1464.     trace file as unrecognizable names made up of random characters.
  1465.  
  1466. o   If  you  are  analyzing a C++ program in the DYNAMIC CALL GRAPH or
  1467.     STATISTICS diagram and  select  PROJECT > EDIT  FUNCTION  while  a
  1468.     class  or  an  executable is highlighted, the Performance Analyzer
  1469.     will not invoke the editor.   The Performance Analyzer  will  only
  1470.     display  source  code  in  the editor if the highlighted item is a
  1471.     function.
  1472.  
  1473.  
  1474. 2.14  Using the Data Access Builder
  1475.  
  1476. This section contains  important  information  about  using  the  Data
  1477. Access Builder.
  1478.  
  1479.  
  1480. 2.14.1  Prerequisites
  1481.  
  1482. o   There  are  no  database  prerequisites  to  run  the  Data Access
  1483.     Builder.
  1484.  
  1485.     If you want to use a DB2 database, you must install  DB2  for  the
  1486.     Windows NT or Windows 95 platform.
  1487.  
  1488.  
  1489. 2.14.2  Usage Notes
  1490.  
  1491. o   An SVGA screen is recommended to run the idata tool.
  1492.  
  1493. o   Only  32-bit  datasources  are displayed in the database selection
  1494.     list.
  1495.  
  1496. o   The 32-bit Driver manager is \WINNT35\SYSTEM32\ODBC32.DLL.
  1497.  
  1498. o   You do not have to use the "Register Database" option each time  a
  1499.     database  product  is installed or removed.  This option is needed
  1500.     if you:
  1501.  
  1502.     -   Add DB2
  1503.     -   Remove DB2
  1504.     -   Go from none to at least one ODBC data source
  1505.     -   Go from at least one ODBC data source to none
  1506.  
  1507.  
  1508. 2.14.2.1  Using the IDatastore Class in a Windows NT Application
  1509.  
  1510. You must do the following if  your  application  uses  the  IDatastore
  1511. class  on  any database other than the one which you used for the Data
  1512. Access Builder  to  generate  the  code.    You  must  bind  the  file
  1513. CPPWACL2.BND  to all the databases accessed by your application.  This
  1514. allows IDatastore to connect, disconnect,  and  complete  transactions
  1515. against the database.
  1516.  
  1517. To bind the file, enter the following commands:
  1518.  
  1519.   DB2START
  1520.   DB2 CONNECT TO database
  1521.   DB2 BIND D:\IBMCPPW\BND\CPPWACL2.BND
  1522.   DB2 TERMINATE
  1523.  
  1524. where database is the name of your database and D:\IBMCPPW is the path
  1525. where you installed the code.
  1526.  
  1527.  
  1528. 2.14.3  Creating a SOM library of Multiple Classes
  1529.  
  1530. A  C procedure called SOMInitModule is implicitly generated during SOM
  1531. code generation when you check the makefile option  or  the  automatic
  1532. link  option.  These  two options imply that a SOM DLL, which requires
  1533. the existence of this procedure, is created.  If you do  not  want  to
  1534. create  a SOM DLL, make sure that the options are not checked. If not,
  1535. you will receive multiple definition  errors  for  this  routine  when
  1536. linking multiple SOM OBJ files together.
  1537.  
  1538.  
  1539. 2.14.4  Features
  1540.  
  1541. o   Data Access Builder also supports the following ODBC drivers:
  1542.  
  1543.     -   dBase
  1544.     -   Excel
  1545.     -   SQL Server
  1546.     -   Text
  1547.  
  1548.     For  configuration information for the above drivers, use WINHLP32
  1549.     to  view  the  driver's  HLP  file,   that   is   found   in   the
  1550.     \ibmcppw\odbc32 or \ibmcppw\odbc16 directory.
  1551.  
  1552.     For example, for information on the dBase driver, type:
  1553.  
  1554.          winhlp32 ibdbf08.hlp
  1555.  
  1556. o   A  new  "Save  window  size"  option is added to the View pulldown
  1557.     menu.  The option restores the size and the position of  the  Data
  1558.     Access Builder on restart.  The option is off by default.
  1559.  
  1560. o   On   Windows  95,  use  the  'clean95'  option  in  the  generated
  1561.     makefiles, rather than the 'clean' option which should be used  on
  1562.     Windows NT.
  1563.  
  1564.  
  1565. 2.14.5  Known Problems
  1566.  
  1567. o   If  an  invalid  class  or  attribute name is entered in the class
  1568.     settings notebook, the previous value is restored as designed, but
  1569.     no warning is issued.
  1570.  
  1571. o   If a data identifier is mapped  to  a  nullable  column,  database
  1572.     operations with the data identifier set to null will not work.
  1573.  
  1574. o   The  help button on the class settings notebook does not work when
  1575.     the notebook page has focus.  Use the F1 key to  obtain  the  help
  1576.     for the page.
  1577.  
  1578. o   After  creating  a  class,  the  mouse pointer remains in the busy
  1579.     state until the mouse is moved.  Move the mouse after  creating  a
  1580.     class to exit the busy state.
  1581.  
  1582.  
  1583. 2.14.6  Known Problems on DB2 That Affect the Data Access Builder
  1584.  
  1585. o   Loading  tables  with  a  foreign  key column name greater than 15
  1586.     characters will cause the Data Access Builder to crash.
  1587.  
  1588. o   DB2 user-defined types based on character  types  are  not  mapped
  1589.     correctly.
  1590.  
  1591. o   DB2 maps DECIMAL to the C/C++ data type double which may result in
  1592.     round-off  errors and loss of precision.  Data Access Builder also
  1593.     maps DECIMAL to the date type double.
  1594.  
  1595.  
  1596. 2.14.7  Using the Data Access Builder with the AS/400
  1597.  
  1598. o   We recommend using the OWNER field while  filtering.    The  owner
  1599.     field must be specified in UPPER CASE.
  1600.  
  1601. o   AS/400  does not yet support Windows NT Japanese version code page
  1602.     943.
  1603.  
  1604.     As a work around, set the DB2CODEPAGE environment variable to  932
  1605.     before trying to connect to the AS/400.
  1606.  
  1607. o   You must create a collection named NULLID on the AS/400 system.
  1608.  
  1609. o   If  you  are using a US/ENGLISH system with code page 1252 and you
  1610.     are interacting with a V3R1 AS/400 System, then you must load  PTF
  1611.     SF24582 onto the AS/400.
  1612.  
  1613.     1252 is the default code page for US/ENGLISH systems.
  1614.  
  1615.     1252 cannot interact with AS/400s supporting V2R3.
  1616.  
  1617.     In  this  case,  you  should  change  the  DB2CODEPAGE environment
  1618.     variable to 850 before connecting to the AS/400 system.
  1619.  
  1620.  
  1621. 2.15  Using the Browser
  1622.  
  1623. This section contains important information about using the Browser.
  1624.  
  1625.  
  1626. 2.15.1  Known Problems
  1627.  
  1628. 1.  When printing on Windows 95, if you have your  printer  configured
  1629.     to print to a file, a Print To File dialog will be shown to prompt
  1630.     you  for  the  file  name.    This  dialog will show beneath other
  1631.     windows, but you can access the dialog from the Task  bar  or  you
  1632.     can  move  the  other windows aside.   Enter the file name and the
  1633.     Browser continues with the printing request.
  1634.  
  1635.  
  1636. 2.15.2  Permanent Restrictions
  1637.  
  1638. 1.  You can use PDB files generated by  the  VisualAge  C++  for  OS/2
  1639.     version  3.0  product  in this Browser.   You cannot use PDB files
  1640.     generated by VisualAge for C++ for Windows and use them  on  OS/2,
  1641.     nor can you use PDL or PDE or PDD files across systems.
  1642. 2.  If  you  browse  a program that contains .OBJ files created from C
  1643.     source files, the Browser Files Dialog informs you that  the  .PDB
  1644.     files  for  the  C files cannot be found.  Ignore this message and
  1645.     select the Load button.  Note that no Browser  information  exists
  1646.     for the C files.
  1647. 3.  If  you  choose  to  Generate  Browser  information,  the compiler
  1648.     creates a PDB file even  if  the  compilation  fails.    The  file
  1649.     sometimes  contains  incorrect  data.    The browser cannot always
  1650.     detect this problem.
  1651. 4.  In the list of file  names  that  are  fully-qualified,  the  list
  1652.     contains the names after compilation and not necessarily the names
  1653.     on  your system.  For example, if you List All Files in any of the
  1654.     VisualAge for C++ libraries, the files may appear to be located in
  1655.     C:\IBMCPPW.  If the browser cannot find the files it searches  the
  1656.     path defined in the Browser Settings notebook.
  1657. 5.  The  browser  loads  all  the  information from a program (.EXE or
  1658.     DLL), including information from any  LIB  files  used.    If  the
  1659.     project  that  builds the .EXE or DLL does not contain the project
  1660.     that builds the LIB file, the  Refresh  function  in  the  Browser
  1661.     cannot   refresh  the  information  and  the  information  is  not
  1662.     displayed.
  1663. 6.  If you load some browser information  with  QuickBrowse  and  some
  1664.     with  compiler-generated .PDB files, you sometimes get the message
  1665.     "An error occurred while loading the file filename.pdb".    Either
  1666.     delete  the  .PDB  files and load only QuickBrowse information, or
  1667.     rebuild your project to generate .PDB files for all of your source
  1668.     files.  If the problem persists, contact VisualAge for C++ Service
  1669.     and Support.
  1670. 7.  QuickBrowse does not correctly identify SOM classes.
  1671. 8.  If you try to run the Browser on  the  executable  files  for  the
  1672.     VisualAge  for  C++ sample projects, you may see the message "Will
  1673.     not QuickBrowse the following files after  analysis  of  the  make
  1674.     file."   If you see this message, choose Cancel, exit the Browser,
  1675.     and the do one of the following:
  1676.     o   Rebuild the project.
  1677.     o   Rename the target of the project.
  1678.     o   Delete the target of the project.
  1679.  
  1680.     You can then browse the project.
  1681. 9.  Due to the 16-bit GDI coordinate system used by  Windows  95,  the
  1682.     Browser  is  unable  to  render  highly complex graphs that can be
  1683.     rendered on OS/2 or Windows NT. If the Browser encounters  such  a
  1684.     situation,  a  message  is displayed, and possible workarounds are
  1685.     suggested in the on-line help for  the  message.    Unfortunately,
  1686.     there  will  be  some  complex graphs which cannot be displayed on
  1687.     Windows 95, even after all workarounds have been tried.
  1688.  
  1689.  
  1690. 2.16  SOM
  1691.  
  1692. This section contains the important information about  using  the  SOM
  1693. toolkit.
  1694.  
  1695.  
  1696. 2.16.1  Known Problems
  1697.  
  1698. o   When using the DTS hh emitter:
  1699.  
  1700.     -   Sometimes it generates duplicate constructors.
  1701.     -   Sometimes it causes a runtime heap error R6018.
  1702.  
  1703. o   The following code causes an access violation on Windows NT:
  1704.  
  1705.          SOMClass * pClass = NULL;
  1706.          somId aClassId = somIdFromString( "MyClass");
  1707.          Class = SOMClassMgrObject->somFindClsInFile(aClassId, 0, 0, "mydll");
  1708.  
  1709.  
  1710. 2.17  Developing Applications For Win32s
  1711.  
  1712. This section contains important information about building and running
  1713. Win32s applications.
  1714.  
  1715.  
  1716. 2.17.1  Building Applications for the Win32s Environment
  1717.  
  1718. Building an application to run under Win32s may involve considerations
  1719. specific  to  the  Win32s platform.   For example, an application that
  1720. shares DLLs with other applications may require special handling.
  1721.  
  1722. See the VisualAge for C++ Programming Guide for more information about
  1723. building executables and DLLs.   See the following  sections  in  this
  1724. Read  Me  for  specific  information  about  installing  and using the
  1725. VisualAge for C++ tools for Win32s applications.
  1726.  
  1727.  
  1728. 2.17.2  Running Win32s Applications on Windows 3.1
  1729.  
  1730. This section describes the files you need to run applications.
  1731.  
  1732.  
  1733. 2.17.2.1  Installing Win32s Operating Subsystem Support
  1734.  
  1735. To run applications on a machine using the Windows 3.1 or Windows 3.11
  1736. operating system, you must upgrade your system to include  the  Win32s
  1737. 1.3  subsystem.    Disk images for the Win32s subsystem are located in
  1738. the following directory:
  1739.  
  1740.     \IBMCPPW\SDK\DISKS\RETAIL\OLE32S
  1741.  
  1742. To install this subsystem on your Windows 3.1 or 3.11 machine, do  the
  1743. following:
  1744.  
  1745. o   Run the SETUP.EXE program in the DISK1 subdirectory, or,
  1746.  
  1747. o   Create diskettes from these subdirectories, then run the SETUP.EXE
  1748.     program on the diskette created from the DISK1 subdirectory.
  1749.  
  1750. This  installs  the  Win32s  3.1 subsystem with OLE support.  For more
  1751. information  on  how  to  install  the  Win32s  environment,  see  the
  1752. Installation Guide and Product Overview.
  1753.  
  1754. To  debug  programs on a Windows 3.1 or Windows 3.11 machine, copy the
  1755. "idebugp.exe" program from the "BIN" directory on  the  VisualAge  for
  1756. C++  CD-ROM.    You  can find instructions for using the "idebugp.exe"
  1757. program in the User's Guide.
  1758.  
  1759.  
  1760. 2.17.2.2  Installing Win32s Runtime Support
  1761.  
  1762. The steps are:
  1763.  
  1764. 1.  Copy the Win32s runtime DLLs from the Windows  NT  or  Windows  95
  1765.     VisualAge  for C++ \IBMCPPW\WIN32S directory to a directory in the
  1766.     path of the Windows 3.1 system.
  1767.  
  1768.     IF USE GM+ AND GD+       CPPWM35I.DLL
  1769.     IF USE GD+, GM- AND RN+  CPPWN35I.DLL
  1770.     RUNTIME MESSAGES         CPPWRTM.DLL
  1771.     RUNTIME ERROR MESSAGES   CPPWRERR.DLL
  1772.  
  1773. 2.  Copy any Win32s files specific to the type of application you have
  1774.     built, from the \IBMCPPW\WIN32S directory.
  1775.  
  1776.     o   For an Open Class Win32s application, the following  DLLs  are
  1777.         required.
  1778.  
  1779.         -   cppwob3i.dll
  1780.         -   cppwou3i.dll
  1781.         -   cppwod3i.dll
  1782.         -   cppwom3i.dll
  1783.         -   cppwor3u.dll
  1784.         -   cppwot3.dll
  1785.  
  1786.     o   For  a  Visual  Builder Win32s application, the following DLLs
  1787.         are required.
  1788.  
  1789.         -   cppwv03.dll
  1790.         -   cppwov3.dll
  1791.  
  1792.         Refer to the Visual Builder User's Guide for more information.
  1793.  
  1794.     o   For a Data Access Builder Win32s  application,  refer  to  the
  1795.         Frequently  Asked Questions document in the Online Information
  1796.         Notebook for more information.
  1797.  
  1798.     o   Win32s users who want to run your application on Windows  3.1,
  1799.         Windows        3.11,  or Windows for Workgroups must also have
  1800.         Win32s  1.30  with  OLE  support.    See  the  section  called
  1801.         Installing Win32s Support for details.
  1802.  
  1803.  
  1804. 2.17.3  Usage Notes
  1805.  
  1806. NOTE:   Be aware that your Win32s application, may not perform as well
  1807. under Windows 3.1 as it does under Windows NT or Windows  95,  due  to
  1808. the 16-bit nature of Window 3.1.
  1809.  
  1810.  
  1811. 3.0  Samples
  1812.  
  1813. This section contains important information about using the samples.
  1814.  
  1815.  
  1816. 3.1  General Information
  1817.  
  1818.  
  1819. 3.1.1  Usage Notes
  1820.  
  1821. Because  all samples are enabled for Performance Analyzer, CPPWPA3.DLL
  1822. must be present to Run the sample and CPPWPA3.OBJ must be  present  to
  1823. Build  the  sample  without  errors.   These objects are automatically
  1824. installed  if  you  install  the   Performance   Analyzer   component.
  1825. Otherwise,  copy  the  CPPWPA3.DLL  from  the  /BIN  directory and the
  1826. CPPWPA3.OBJ from the /LIB directory of the CD-ROM to the corresponding
  1827. directories on your system.
  1828.  
  1829. Copying CPPWPA3.DLL and CPPWPA3.OBJ simply allows you  to  invoke  Run
  1830. and  Build  without  errors.    To use the Performance Analyzer or any
  1831. other component with the samples, you must install those components.
  1832.  
  1833.  
  1834. 3.2  Data Access Builder Samples
  1835.  
  1836. This section contains important information about the samples.
  1837.  
  1838.  
  1839. 3.2.1  Running the Samples on Win32s
  1840.  
  1841. Follow these steps to run the Data Access Builder samples on Win32s.
  1842.  
  1843. 1.  Install the Win32s runtime environment for the Data Access Builder
  1844.     which is explained in the FAQ under the question "How Do I  Run  a
  1845.     Data Access Builder Application for Win32s on Windows 3.1?".
  1846.  
  1847. 2.  Copy  the  samples from the Windows NT or 95 machine to the Win32s
  1848.     machine. There are 4 executables and one DLL to  be  copied.  They
  1849.     are located in the following compiler subdirectories:
  1850.  
  1851.       \bin\idatasm1.exe (This must be run before the other executables
  1852.                          to initialize the database.)
  1853.  
  1854.       \samples\database\stockcpp\client.exe (Stock c++ sample)
  1855.       \samples\database\car\daxsamp\car.dll (DAX generated code DLL)
  1856.       \samples\database\car\carbrws\carbrws.exe (Car Browse sample)
  1857.       \samples\database\car\caredit\caredit.exe (Car Edit sample)
  1858.  
  1859. 3.  In  Windows 3.1 edit the ODBCINST.INI file located in the \WINDOWS
  1860.     directory. Under the section [INTERSOLV 2.11  dBASEFile  (*.dbf)],
  1861.     edit  the  'Driver='  and 'Setup=' fields to point to the location
  1862.     that the dBASEFile ODBC driver (IBDBF07.DLL) was installed.
  1863.  
  1864. 4.  In Windows 3.1 run the ODBC administrator (ODBCADM.EXE)  from  the
  1865.     Program  Manager  or File Manager. When the dialogue box comes up,
  1866.     click on the ADD  button  and  choose  'INTERSOLV  2.11  dBASEFile
  1867.     (*.dbf)' and click OK.  To configure the datasource, view the help
  1868.     file  provided  with  the  dBase  driver  (IBDBF07.HLP)  using the
  1869.     Windows help viewer (WINHELP.EXE).  Important:  The  'Data  Source
  1870.     Name'  field must be set to "daxsamp" and the 'Locking' field must
  1871.     be set to "NONE" for the samples to run.
  1872.  
  1873. 5.  Run the samples in  the  same  way  for  Windows  NT/95  with  the
  1874.     exception   of   'resettbo.bat'   which   calls   the   executable
  1875.     'IDATASM1.EXE'. Since Windows doesn't support running  executables
  1876.     from  batch  files  (unless  the  executables  can be run in a DOS
  1877.     session), the user must run  this  executable  directly  from  the
  1878.     Program Manager or File Manager by typing:
  1879.  
  1880.            IDATASM1 "WIN32S" "ODBC"
  1881.  
  1882.     As  with  any  executable  which  gives standard output on Win32s,
  1883.     redirect the output to a file.
  1884.  
  1885.  
  1886. 3.3  SOM/WorkStation DSOM Samples
  1887.  
  1888. This section contains important information about the samples.
  1889.  
  1890.  
  1891. 3.3.1  Known Problems and Restrictions
  1892.  
  1893. o   The Build Notes give you a generic description, which is different
  1894.     from the way the samples  are  built.  You  need  to  consult  the
  1895.     individual  readme.txt  files  for specific information.  Click on
  1896.     the "View Readme" selection box to  see  the  readme  file  in  an
  1897.     editor.  Also,  refer  to  the rest of this section for additional
  1898.     information.
  1899.  
  1900. o   Building and Running Samples: General Information
  1901.  
  1902.     -   Sometimes problems exist when VisualAge for C++  is  installed
  1903.         in an environment that has another compiler already installed.
  1904.         Check  your  PATH,  INCLUDE,  and LIB environment variables to
  1905.         ensure that you are using  the  correct  executables,  include
  1906.         files, and libraries.
  1907.  
  1908.     -   Selecting  the  "Project/Build  Normal"  will not work because
  1909.         WorkFrame does not currently  support rules for compiling  IDL
  1910.         files.   Instead, you need to select "Project/Make" to use the
  1911.         makefile "vac.mak" that has been supplied. Or  you  can  right
  1912.         click on "vac.mak" and choose "make" from the pop-up menu.
  1913.  
  1914.     -   Only   "Project/Make"   and  "Project/Run"  are  supported  by
  1915.         WorkFrame.
  1916.  
  1917. o   Building and Running Samples: Sample Specific Information
  1918.  
  1919.     -   ALL DSOM SAMPLES (location:  samples\som\somd\cpp\* )
  1920.  
  1921.         After running each WorkStation DSOM sample, you need  to  kill
  1922.         the  daemon  "somdd" before you can run another sample.  Close
  1923.         the window where somdd is running.
  1924.  
  1925.     -   Event (location:  samples\som\somd\event )
  1926.  
  1927.         There is a potential  race  condition  in  starting  the  four
  1928.         interacting  programs  for  this  sample.    You can start the
  1929.         programs manually by executing the commands in run.bat one  at
  1930.         a time from the Project Monitor or from the command line.
  1931.  
  1932.     -   If  the  client  for a DSOM sample is invoked without starting
  1933.         the daemon or server first, the client  hangs  and  cannot  be
  1934.         terminated by a CTRL-C.
  1935.  
  1936.         It  has  to  be  terminated explicitly from the "Task Menu" by
  1937.         invoking "End Task".
  1938.  
  1939.  
  1940. 4.0  Documentation
  1941.  
  1942. This section contains important information about the documentation.
  1943.  
  1944. NOTE:  The online versions of the documentation are more current  than
  1945. the PostScript publications.
  1946.  
  1947. To view the publications online, open the icon representing the Online
  1948. Information  Notebook,  select the radio button for a publication, and
  1949. click on the View pushbutton.
  1950.  
  1951.  
  1952. 4.1  Printing
  1953.  
  1954.  
  1955. 4.1.1  Known Problems With Printing
  1956.  
  1957. o   Problems exist with  printing  because  of  the  large  amount  of
  1958.     printer  memory  required  to load the large files.  If you do not
  1959.     have enough printer memory, you cannot print the large files.
  1960.  
  1961.  
  1962. 4.1.2  How to Print
  1963.  
  1964. To print the PostScript files on  a  workstation-connected  PostScript
  1965. printer, copy the file to the printer destination.  The required fonts
  1966. are  imbedded  in  the  files.    You  can also print these files on a
  1967. host-connected PostScript printer; make sure you upload them in binary
  1968. format.
  1969.