home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power GUI Programming with VisualAge C++
/
powergui.iso
/
trialva
/
readme.txt
< prev
next >
Wrap
Text File
|
1996-03-31
|
73KB
|
1,969 lines
IBM VisualAge for C++ for Windows - README
=====================================================================
IBM* VisualAge* for C++ for Windows** Version 3.5
(C) Copyrights by IBM Corp and by others 1988, 1996.
All rights reserved.
US Government Users Restricted Rights - Use, duplication or disclosure
restricted by GSA ADP Schedule Contract with IBM Corp.
This file contains important information about the IBM VisualAge for
C++ for Windows product. You should read the Introduction section
before you install this product.
Before You Install VisualAge for C++ for Windows
------------------------------------------------
WARNING: The Trial copy of VisualAge for C++ on this CD-ROM,
contains a time limiting device which is activated when you first
install the program. This device will monitor your use of the
program during the 60 day evaluation period. At the end of the
evaluation period the device will prevent the program from
operating. You should therefore take precautions to avoid any loss
of data that might result.
A copy of the License Agreement governing the use of this Trial Copy
of VisualAge for C++ for Windows, can be found in a file called
LICENSE.AGR in the root directory of this CD-ROM.
Support
-------
For information about support, see:
o The "Help !!!... how to get it" card.
Or
o The section called What If I Still Have Questions in the
Frequently Asked Question (FAQ) information in the Online
Information Notebook.
NOTE: The User's Guide refers to a 60 day Getting Started Support
Period for the U.S. and Canada. The Getting Started Support is no
longer available. Similar technical support is available via the
Personal Systems Support Line fee offering.
Trademarks
----------
The following terms are trademarks of International Business Machines
Corporation in the United States or other countries or both:
IBM
DB2
Open Class
OS/2
VisualAge
WorkFrame
Other terms used in this README, which may be denoted by a double
asterisk(**), are trademarks or service marks of others.
Excel, Windows, Windows NT, Win32, Win32s are trademarks of
Microsoft Corporation.
PostScript is a trademark of Adobe Systems Incorporated.
Contents
--------
1.0 INTRODUCTION
1.1 Contents
1.2 Prerequisites for Windows NT and Windows 95
1.3 Prerequisites for Windows 3.1
1.4 Installation
1.4.1 Important Note - Before You Install On Windows 95
1.4.2 Installing This Product
1.4.3 Known Problems During Installation
1.4.4 Known Problems During Deinstallation on Windows NT
2.0 LATE-BREAKING NEWS
2.1 License Information Notes
2.2 General
2.2.1 Windows NT
2.2.2 Windows 95
2.3 Compiling and Linking
2.3.1 Usage Notes
2.3.2 Restrictions
2.3.3 Known Problems
2.4 Working with Resources
2.4.1 Usage Notes
2.4.2 Known Problems
2.5 Using the User Interface Class Libraries
2.5.1 Portability Differences between Windows and OS/2
2.5.2 Restrictions and Known Problems
2.5.3 Win32s Information
2.5.4 Specific Class Information
2.6 Using the Data Type and Exception Class Libraries
2.6.1 Usage Notes
2.6.2 Factors Affecting Performance With IString
2.7 Using the Collection Class Libraries
2.7.1 Restrictions
2.8 Using the Compound Document Framework Class Libraries
2.8.1 Installation On Windows NT
2.8.2 Usage Notes
2.8.3 Restrictions
2.9 Using the Editor
2.9.1 Usage Notes
2.9.2 Known Problems
2.10 Using WorkFrame
2.10.1 Differences from OS/2 and Restrictions
2.10.2 Usage Notes
2.10.3 Known Problems
2.11 Using the Visual Builder
2.11.1 Known Problems and Restrictions
2.12 Debugging
2.12.1 Prerequisites for Win32s
2.12.2 Usage Notes
2.12.3 Known Problems on Windows NT and Windows 95
2.13 Using the Performance Analyzer
2.13.1 Usage Considerations
2.13.2 Restrictions and Known Problems
2.14 Using the Data Access Builder
2.14.1 Prerequisites
2.14.2 Usage Notes
2.14.3 Creating a SOM library of Multiple Classes
2.14.4 Features
2.14.5 Known Problems
2.14.6 Known Problems on DB2 That Affect the Data Access
Builder
2.14.7 Using the Data Access Builder with the AS/400
2.15 Using the Browser
2.15.1 Known Problems
2.15.2 Permanent Restrictions
2.16 SOM
2.16.1 Known Problems
2.17 Developing Applications For Win32s
2.17.1 Building Applications for the Win32s Environment
2.17.2 Running Win32s Applications on Windows 3.1
2.17.3 Usage Notes
3.0 SAMPLES
3.1 General Information
3.1.1 Usage Notes
3.2 Data Access Builder Samples
3.2.1 Running the Samples on Win32s
3.3 SOM/WorkStation DSOM Samples
3.3.1 Known Problems and Restrictions
4.0 DOCUMENTATION
4.1 Printing
4.1.1 Known Problems With Printing
4.1.2 How to Print
1.0 Introduction
The VisualAge for C++ for Windows product runs on Windows NT** on an
Intel system, and runs on Windows 95. The product generates code that
runs on Windows NT, Windows 95, and Windows 3.1 using Win32s.
Unless otherwise described, Windows refers to Windows NT and Windows
95.
1.1 Contents
The contents of this product are:
o Compiler (ICC)
o Linker (ILINK)
o Tools and utilities for defining and creating Windows resources,
such as dialogs and bitmaps
o Tools and utilities for creating and displaying online help text
o Message compiler
o System header files and libraries
o Library Manager (ILIB)
o Open Class Library, header files, and DLLs for:
- Data Type and Exception classes
- Collection classes
- User interface classes
- Compound Document Framework classes
o Editor
o WorkFrame
o Visual Builder
o Debugger
o Performance Analyzer
o Data Access Builder
o Browser
o SOM WorkStation and SOM Developer's Toolkit Version 2.1
o Publications in online and PostScript format
o This product also supports remote debugging to a Win32s
workstation.
1.2 Prerequisites for Windows NT and Windows 95
o Windows NT 3.5.1 is required. This product will not run on
earlier versions of Windows NT.
Or
o Windows 95
o The disk space required for Windows NT and Windows 95 is below.
- Minimal install of the product requires 48MB.
- The entire product including the documentation requires 370MB.
The Installation Guide incorrectly states the required disk
space.
1.3 Prerequisites for Windows 3.1
o Windows 3.1 with Win32s 1.3 installed. Win32s code is supplied
with this product.
o Runtime files need to be copied from your Windows NT or Windows 95
system.
Refer to the Developing Applications for Win32s section for
details about the files you need.
o 10 MB of disk space for the runtime files.
1.4 Installation
This section describes important information about installing the
product.
For details about installation and deinstallation, refer to the
Installation Guide. The Guide is shipped in hardcopy, and it is
available online in the Help pulldown from any component, such as
WorkFrame or the Browser. Select At a Glance in the Help pulldown.
1.4.1 Important Note - Before You Install On Windows 95
This section describes what you need to do before you install the product
on Windows 95.
Required Tasks Before You Install the Product
---------------------------------------------
Before you install, you must increase the system environment size.
The VisualAge for C++ for Windows product updates a number
of system environment variables during installation and
the default system environment size is too small.
The required changes are described below.
C:\CONFIG.SYS change
--------------------
Use the editor of choice to add the following line to your
C:\CONFIG.SYS file. Create the file with this
line if the file does not exist.
SHELL=C:\WINDOWS\COMMAND.COM /p /e:20000
This line sets the environment size to 20,000 bytes, which
is sufficient for the VisualAge for C++ product. If
you have other products that use a significant amount of
environment space, you may need to increase this value. You
may also want to use a smaller value on systems that are
constrained by memory.
This change will set the environment size for programs run
directly from folders.
NOTE: The above assumes that Windows 95 was installed in
the C:\WINDOWS directory. If you installed in
another directory, substitute the directory
name.
MS-DOS Prompt change
--------------------
Start an MS-DOS Prompt. If you are using the Start button,
select 'Programs' and then 'MS-DOS Prompt'. Open the
MS-DOS Prompt Properties window by doing one of the following:
- Opening the system menu by clicking on the MS-DOS icon
at the top-left corner of the MS-DOS Prompt, and then
selecting the 'Properties' item
Or
- Selecting the 'Properties' icon on the Toolbar if the
Toolbar is active.
Switch to memory page by selecting the 'Memory' tab at
the top. Within the 'Conventional memory' area is a
drop-down entry field. Click on the arrow, scroll down
until the '4096' entry is visible and select it. Now
click on the OK button at the bottom of the Properties
sheet.
This change sets the environment size for each MS-DOS
prompt started.
1.4.2 Installing This Product
Refer to the Installation Guide for details. The Guide is shipped in
hardcopy, and it is available online in the Help pulldown from any
component, such as WorkFrame or the Browser. Select At a Glance in
the Help pulldown.
The default path where the files are installed is IBMCPPW.
1.4.2.1 Installing Files on Windows 3.1 for Win32s Applications
Refer to the Developing Applications for Win32s section for details
about the files you need.
1.4.2.2 Installing Files for Compound Document Framework Classes
Refer to the section called Using the Compound Document Framework
Class Libraries for information about installation.
1.4.3 Known Problems During Installation
o We recommend that you do not minimize the install window during
the installation. The setup screen sometimes freezes if it is
minimized while the installation is running. If the hard drive
runs out of space, you cannot continue with the installation
because when you restore the window, the error dialog is no longer
shown.
You need to ensure you have enough hard disk space available, and
then restart the installation.
1.4.4 Known Problems During Deinstallation on Windows NT
o On Windows NT, a problem exists when you try to deinstall the
product after you have more than one install image on the same
machine. This applies only to a full install of the product onto
your hard disk. You can successfully deinstall one image, and you
receive an error message when you try to deinstall the second
image. Some files needed by the deinstall program have been
deleted. Copy all the files from the CD-ROM directory called
IBMCPPW\INSTALL\UTILS, to the \WINNT35\VACPPINS directory where
the operating system is installed. Run the deinstall again.
2.0 Late-Breaking News
This sections describes late-breaking news and restrictions.
2.1 License Information Notes
The IBM EVALUATION AGREEMENT contains the terms and conditions for
redistributing files. The agreeement can be found in a file
called LICENSE.AGR located in the root directory of the CD-ROM.
Note that currently you cannot rename CPPWOT3.DLL and ILIBIPF32.DLL.
2.2 General
This section describes news and restrictions that apply to more than
one component in the product.
o The Online Information notebook is more current than the
PostScript files and the printed books.
2.2.1 Windows NT
o Windows NT has a known problem in screen saver code. When the
used environment space reaches a certain size, the WINLOGON.EXE
program traps. When this program traps, Windows NT stops the
machine. Only a power off/on sequence can clear this. If you are
using the Screen Saver feature, you are strongly encouraged to
disable the Screen Saver feature either immediately or if you
encounter this problem in the future.
2.2.2 Windows 95
o Sometimes the VisualAge for C++ tools have unpredictable behavior
when the Windows 95 system experiences virtual memory problems.
Virtual memory problems such as full swap space can produce system
lockups and abnormal terminations without system notification. It
is recommended that you run the VisualAge for C++ tools with at
least 40MB of free space available for your swap file.
o When you bring up the MS-DOS command prompt and type in the letter
of the drive where you installed the product, you are placed into
the following path.
drive:\IBMCPPW\IBM VA FOR C++ FOR WINDOWS
The path is not correct. Change the directory to the appropriate
working directory.
o Sometimes the Windows 95 pointer is displayed as both a pointer
and an hour glass. You can proceed to do other tasks. It appears
that you can not take any action until the hour glass disappears,
but this is not the case.
o The PSTAT and WinPerf programs are not available.
2.3 Compiling and Linking
This section contains important information about compiling and
linking.
2.3.1 Usage Notes
o System Header Files and Libraries
The system header files have been modified to work with the
compiler. The libraries are shipped with no changes from the
versions supplied by Microsoft.
o Working with NMAKE
If nmake finds more than one rule in a makefile that can be used
to build a certain target, it will use the rule found last.
o By default, VisualAge for C++ links to the KERNEL32.LIB system
import library. Any other system import libraries must be linked
manually. For a list of the mapping of Windows APIs to system
import libraries, refer to the file called WINAPI.TXT in the
\IBMCPPW\HELP directory on the CD-ROM.
There are entries that are identical except one ends with "A" and
other ends with "W". For example, there is a windows API called
StartService. In the WINAPI file there are two entries -
StartServiceA and StartServiceW. You can ignore the trailing A or
W.
o Structured exception handling is not ported to VisualAge for C++
on other platforms. You should avoid using structured exception
handling in applications you want to port.
2.3.2 Restrictions
o In Windows 95 only, nmake does not handle filenames that contain
spaces. You may need to use the short version of the filename,
which you can find using the "dir" command.
o Redirection on Win32s using redirect.obj is not supported with the
subsystem library.
o If you link statically, do not terminate your process with
ExitThread or ExitProcess APIs, because the run-time termination
will not occur, and buffers will not be flushed. If you link
dynamically, the same restriction applies only to Windows 95 and
ExitThread. For portability, always use the exit library function.
o Do not pass file handles between different library environments.
For example, do not open a file in the EXE (with fopen, open, or
any other library function) and then pass it to a DLL if both of
them link statically to the run time.
o If you use Thread Local Storage in C++, a restriction in Windows
95 can affect you. No initialization or termination code is run
for variables within a thread.
__thread int i = 5; /* OK, statically initialized */
__thread int j = f(); /* f() not called in Windows 95*/
In both Windows NT and Windows 95, the order of thread termination
is not predictable. In a DLL, this means the following.
PROCESS_DETACH notification can occur on a thread other than
thread 1. Termination code registered with the atexit() function,
as well as destructors of static C++ objects, will run on the
thread in which the PROCESS_DETACH notification occurs.
o The library math functions may sometimes fail to detect an invalid
input argument, for example a negative value for the log()
function. This may cause a floating point exception that would
terminate the program on Win32s. If you plan to run your
application on this platform, ensure that the argument is valid.
2.3.3 Known Problems
o The C++ compiler may not work when you are compiling C++ source
that is located on the Z: drive.
The C++ compiler may terminate with a General Protection Fault and
a Register Dump. This problem can be avoided by moving the source
to a directory that is not located on the Z: drive or by using the
/Ft- command-line option.
o The ILINK option /OPTFUNC will incorrectly remove functions that
are only referenced from a COFF object. This is likely to be a
problem when building a DLL but unlikely when building an EXE.
o Use of the ILINK option /STUB:xxx without the argument (":" and
file name) will cause a trap.
o According to the documentation, ILINK will search directories
given on the command line before searching directories specified
by the LIB environment variable. Currently the reverse is true.
2.4 Working with Resources
This section contains important information about working with
resources.
2.4.1 Usage Notes
o The additional command-line options for ibmpcnv are:
-B : Input file is a bitmap
-C : Input file is a cursor
-I : Input file is an icon
-P : Input file is a pointer
If -D is specified, the above options are ignored and ibmpcnv
converts files with .ico, .bmp, .cur, .ptr extension in the
"filein" dir. The above options are added because ibmpcnv is
sensitive to file suffixes. It only convert files with .ico,
.bmp, .cur, .ptr suffixes. It uses the suffix to determine the
type of resource image.
o The IBM Resource Compiler (IRC) has the command line option -k
codepageId to support compiling resources in the specified
codepage.
o To view books in .INF format from the command line use iview which
is a 32-bit upgrade of the xview tool referenced in the IPF User's
Guide and IPF Programmer's Guide and Reference. In addition
libipfx.dll has been upgraded to libipf32.dll.
2.4.2 Known Problems
o Message Compiler Bug
Comments are allowed in the input message (."mc") file. Comments
must begin with a semicolon (;) in the first column and are
terminated by the end of the line.
As the User's Guide states, comments that exist by themselves on a
line are copied, as is, to the output include (."h") file.
However, the semicolon is not converted to the C end-of-line
comment syntax (//). The semicolon is stripped from the beginning
of the comment line.
You will have to manually update your include file to add the
slashes to indicate to the compiler that the line is a comment.
o The resource compiler cannot decompile a binary resource file with
a MENUEX resource defined in it. The resource workshop will treat
the resource as a MENU resource. When you see "__VERSION 1" and
"__OFF 4" defined under the MENU resource, it means that it is a
MENUEX resource. The menu items may not be decompiled correctly
in this case.
o In the DBCS environment, when you save a file as a resource file,
the resource workshop will work very slowly. To improve this, set
the "Foreground and Background Application Equally Responsive" in
the Tasking setup under System setup in the Control Panel.
o If you install the product to the root directory of a partition,
such as E:, then the IPF Compiler will not work unless you make
the following changes to your environment:
- On Windows 95, the variable "IPF_PATH32" is set to "E:\" in
the autoexec.bat file. Remove the backslash and change the
setting to "E:".
- On Windows NT, the variable "IPF_PATH32" is set to "E:\" in
the registry. Remove the backslash and change the setting to
"E:". You can use System tool in the Control Panel window.
o If you have coded empty help resources you need to add a line of
null terminators to ensure the proper processing of these tags.
See the following examples.
100 HELPTABLE
{
10, ID_SUBTABLE, 20
}
ID_SUBTABLE HELPSUBTABLE
{
0,0 /* Null termination string here for empty table */
}
100 HELPTABLE
{
0,0,0 /* Null termination string here for empty table */
}
2.5 Using the User Interface Class Libraries
The following information refers to the User Interface Classes
contained in the IBM Open Class Library. These notes are in addition
to what is documented in the Open Class Library User's Guide and the
Open Class Library Reference manuals.
2.5.1 Portability Differences between Windows and OS/2
Refer to the Portability section of the Open Class Library User's
Guide and the platform support information contained in the function
descriptions of the Open Class Library Reference, Volumes I - IV.
2.5.2 Restrictions and Known Problems
This section describes the restrictions and known problems, including
documentation problems.
2.5.2.1 Colors
The following member overrides were added to query and set the
background color of the font and file dialogs:
In ifontdlg.hpp:
virtual IColor backgroundColor () const;
virtual IFontDialog &setBackgroundColor (Const IColor& color);
In ifiledlg.hpp:
virtual IColor backgroundColor () const;
virtual IFileDialog &setBackgroundColor (Const IColor& color);
2.5.2.2 Graphics
The set of pen types, styles, and patterns that can be set through
IGraphicBundle is limited on Win32s and Windows 95. On these
environments, the best available approximation is chosen.
Due to a limitation in the Graphic Device Interface (GDI) on Windows
95, only the pen patterns IGraphicBundle::filled and
IGraphicBundle::hollow are supported.
2.5.2.3 Multimedia
USE OF IMMDEVICE::MODE IN NOTIFICATION HANDLERS
As part of its execution, IMMDevice::mode generates a notification
event. When writing a notification handler, you should keep this in
mind. Consider the following code, which is part of a
dispatchNotificationEvent routine:
IMMNotifyEvent* notifyEvent =
(IMMNotifyEvent*)(event.eventData().asUnsignedLong());
if (notifyEvent->command() == IMMNotifyEvent::play)
{
panel.playbtn.unlatch();
if (panel.playerDevice == CDID)
if (panel.cdPlayer->mode() == IMMDevice::playing)
{
panel.playbtn.latch();
}
}
In this example, the mode function is called within the if clause.
But consider the following, where it is moved outside:
IMMNotifyEvent* notifyEvent =
(IMMNotifyEvent*)(event.eventData().asUnsignedLong());
if (notifyEvent->command() == IMMNotifyEvent::play)
{
panel.playbtn.unlatch();
}
if (panel.playerDevice == CDID)
if (panel.cdPlayer->mode() == IMMDevice::playing)
{
panel.playbtn.latch();
}
This causes the following set of events to occur:
1. The "mode()" command generates a notify event
2. The notify event re-enters "dispatchNotificationEvent()"
3. Since the "mode()" command is not inside the if clause, it is
executed again
4. Loop through steps 1-3 recursively until a stack overflow occurs
Care should be taken when using the "mode()" command in this
situation.
RECORDING IN THE 32-BIT WINDOWS ENVIRONMENT
In 32-bit Windows, the only device that supports recording is
WAVEAUDIO (IMMWaveAudio). In addition, certain recording parameters
can only be specified when opening a new data file for recording.
Once recording has begun, they cannot be altered. This also applies
when adding recorded material to an existing file. The IBM Open Class
functions that get or set these parameters are listed below:
o IMMConfigurableAudio::setBytesPerSecond
o IMMConfigurableAudio::setBitsPerSample
o IMMConfigurableAudio::setBlockAlignment
o IMMConfigurableAudio::setChannels
o IMMConfigurableAudio::setFormat
o IMMConfigurableAudio::setSamplesPerSecond
o IMMConfigurableAudio::bytesPerSecond
o IMMConfigurableAudio::bitsPerSample
o IMMConfigurableAudio::blockAlignment
o IMMConfigurableAudio::channels
o IMMConfigurableAudio::format
o IMMConfigurableAudio::samplesPerSecond
If the setters are used on a device that already contains recorded
material, an exception is thrown. The use of either the setters or
getters on a device that does not support recording (for example, any
device other than IMMWaveAudio in 32-bit Windows) throws an exception.
Use IMMDevice::supportsRecord to determine if the getters can be used.
It is recommended that you maintain a "new record file" flag for use
of the setters. Once recording has initiated, this flag should be set
to false and access to the setters should be disabled.
NEW MEMBER FUNCTIONS IN IMMAUDIOCD
The following functions were added to IMMAudioCD, but are not in the
product documentation:
The following function returns the current table of contents entry.
public:
unsigned long IMMAudioCD::currentContentsEntry() const
The following function returns the current track.
public:
unsigned long IMMAudioCD::currentTrack() const
32-BIT WINDOWS SUPPORTED MEMBER FUNCTIONS IN IMMPLAYABLEDEVICE
The following functions in IMMPlayableDevice are listed as not
supported under 32-bit Windows, when in fact they are:
public:
IMMPlayableDevice&
IMMPlayableDevice::startPositionTracking(const IMMTime &time,
CallType call)
public:
IMMPlayableDevice&
IMMPlayableDevice::stopPositionTracking(CallType call)
USE OF IMMDIGITALVIDEO::SETDESTINATION
When using ICoordinateSystem::originLowerLeft, the setDestination
rectangle specified is mapped relative to the lower-left corner of the
video window. This may cause clipping of the video image.
COMPOUND DEVICES IN 32-BIT WINDOWS
In general, 32-bit Windows MCI compound devices (those that require a
file for data, such as WAVEAUDIO, SEQUENCER, and DIGITALVIDEO) have
limited function until they are loaded with a file. Because of this,
it is recommended that actions on these devices be limited until a
file is loaded, using the IMMFileMedia::load member function.
MCI_LOAD EMULATION
In 32-bit Windows, a compound device's device element (data file) can
______________
only be specified when the device is opened. The MCI_LOAD function is
not supported, so the device element cannot be changed after that
time.
The following protected virtual functions are used to emulate the
MCI_LOAD command, allowing an IBM Open Class multimedia object change
its filename:
virtual IMMDevice
&saveDeviceSettings (),
&restoreDeviceSettings (Boolean newRecordMode = false);
For compound devices, when IMMFileMedia::load is called, the following
events occur to emulate MCI_LOAD:
1. All classes in the objects's hierarchy are requested to save
pertinent parameters or settings using saveDeviceSettings.
2. The current device associated with the object is closed.
3. A new device is opened with the new filename, and is associated
with the object.
4. All classes in the object's hierarchy are requested to restore
pertinent parameters or settings using restoreDeviceSettings.
Derived classes should use these classes as necessary. The final
statement before the return should be a call to the parent's same
function, allowing all inherited classes to save or restore settings.
IMMDEVICE::SETVOLUME LIMITATION
The 32-bit Windows MCI does not support MCI_OVER so the "over"
parameter is ignored.
IMMDEVICE::SENDCOMMAND LIMITATION
The 32-bit Windows mciSendCommand function does not support the
passing of an arbitrary user parameter, so this capability is not
available.
2.5.3 Win32s Information
2.5.3.1 Cursor Limitations on Win32s
16-bit Windows supports only monochrome cursors. If a container has
monochrome icons, drag and drop uses default OLE cursors for a drag
image.
2.5.3.2 Fly-over Help Limitations on Win32s
Due to a Windows limitation, fly-over help does not work properly with
any composite control containing an entry field, such as
IMultiLineEdit, IEntryField, spin buttons, and combination boxes.
2.5.3.3 Dynamic Data Exchange (DDE) Limitations on Win32s
The following functions are not supported for DDE on Win32s platforms:
o IDDEClientConversation::beginHotLink
o IDDEClientConversation::endHotLink
o IDDETopicServer::hotLinkUpdate
You can use these member functions to establish a DDE hot link but
subsequent data requests and hot link updates may be corrupted.
2.5.3.4 Message Box Limitations on Win32s
Due to a Windows limitation, specifying the desktop window as the
owner of an IMessageBox object causes your desktop window to be
disabled. This disables the mouse, causing any mouse button clicks to
result in a beep. You must reboot your computer to enable the mouse
again.
Ensure the owner of your IMessageBox is a window other than the
desktop.
2.5.4 Specific Class Information
2.5.4.1 IAcceleratorKey and IAcceleratorTable
These classes are not supported on the Win32s platform.
Accelerator keys have the following restrictions on Windows NT and
Windows 95:
o Assigning a key to run an application command vs. a system command
is ignored. The distinction on the type of command event
generated when the key is pressed is determined by the Windows
presentation system based on the command identifier. If the
system menu contains an item with the same identifier, the
accelerator key generates a system command event. Otherwise, it
generates an application command.
o Assigning a key to generate a help request causes the key to
generate an IC_ID_HELP command. IFrameHandler processes the
command as a help request. You must do one of the following:
- The accelerator table with this key must be assigned to a
canvas, container, or frame window for the IFrameHandler to
process this command.
Or
- You must create a command handler that sends the command event
up the chain of the owner window, and attach this handler to
the window with the accelerator table.
2.5.4.2 IBaseComboBox
Horizontal scrollbars are only supported for simple combo boxes in
Windows NT newshell applications. This is due to a Windows bug. They
are supported for all combo box types in Windows 95 applications.
Horizontal scrollbars are not supported in Windows NT oldshell
applications.
2.5.4.3 IContainerControl
When calling IContainerControl::refresh after calling
IContainerControl::setRefreshOff, refresh should be called with a true
parameter. This solves any painting problems that occurr after
calling IContainerControl::setRefreshOff.
2.5.4.4 IContainerControl::ColumnCursor
The documentation for this class in the Open Class Library Reference
is incorrect as the columns are iterated in the expected order. The
Windows information for this class should then read as follows:
WINDOWS INFORMATION: The native Windows container has a required
first column. If an IContainerColumn object is not inserted for this
required column, the cursor does not iterate them. See the
IContainerColumn documentation for more details.
2.5.4.5 IFileDialog
The SAVE AS DIALOG fails to save a file to a network drive under the
following circumstances:
1. Windows 95 environment
2. File already exists
3. Network drive is an HPFS drive
The error that is reported states that the path does not exist.
However, this scenario does work when the network drive is a FAT
drive.
An ICommandHandler cannot be used to handle events for an IFileDialog.
Currently, command and systemCommand events are not passed to handlers
but are routed directly to the default file dialog procedure.
2.5.4.6 IFont
If an IFont object is being used for a printer, plotter, FAX, or other
non-display device, some of the attribute-setting functions assume a
display presentation space (device context) for use in recalculating
the font metrics. There is no way to pass a presentation space as a
parameter to the these functions. The result is that pointSize
returns an incorrect size for the actual presentation space afterward.
There is no problem for IFont objects used with display presentation
spaces.
The IFont member functions involved are listed below:
setBold
setItalic
setUnderscore
setAllEmphasis
useBitmapOnly
setDirection
A solution is to save the pointSize across a call to one of these
functions. This solution is only needed if the font is not being used
for a display. For example:
size = pointSize();
setBold();
setPointSize(size, printerPs);
2.5.4.7 IInfoArea
Menu items that have a submenu do not display text in an information
area.
2.5.4.8 IKeyboardEvent
The IKeyboardEvent::sysRq enumerator is not supported on the Windows
platform.
2.5.4.9 IMultiLineEdit
Due to a 16-bit Windows limitation, importing a large file into a MLE
does not work properly. Windows 95 implements some window management
features in 16 bits. The use of 16 bits imposes some restrictions on
parameters in functions and messages and places limits of about 64
kilobytes of text.
2.5.4.10 IThread
If you are building a statically linked (Gd-) multithreaded
application for Windows 95, restrictions apply. You should use only
the IThread constructors to create threads that contain IWindow
objects or are referenced using IThread. You should avoid using the
CreateThread 32-bit Windows function or the beginthread C library
function to create threads. The following IThread constructor may not
function correctly when applied to a thread created with the
CreateThread or beginthread functions:
IThread ( const IThreadId& threadID,
const IThreadHandle& threadHandle =
IThreadHandle::noHandle );
This restriction does not apply to Windows NT applications or to
dynamically linked Windows 95 applications.
2.6 Using the Data Type and Exception Class Libraries
2.6.1 Usage Notes
A new capability has been added to ITrace to enable capturing trace
output to a file. To direct ITrace output to a file, set the
following environment variables before starting the application.
SET ICLUI_TRACETO=FILE <- causes the next environment to
be checked and used
SET ICLUI_TRACEFILE=<file> <- trace output will be place into
<file>
2.6.2 Factors Affecting Performance With IString
When the IString class is enabled for internationalization,
performance may be degraded. Factors that affect performance are:
o Strings that are thousands of bytes long
o Frequency of string parsing and indexing.
2.7 Using the Collection Class Libraries
2.7.1 Restrictions
2.7.1.1 Copying Key Collection Class objects
If you use your own copy constructor to add an object to a key
collection, be sure that the key of the object is not changed.
Changing the key can cause unpredictable results, including program
traps. In general, it is recommended that you use the default copy
constructor, rather than defining your own.
The Key collection classes can be recognized by the word "key" in
their name. For example IKeyBag and IKeySetAsBSTTree.
2.8 Using the Compound Document Framework Class Libraries
This section describes important information about the the Compound
Document Framework Class Libraries.
2.8.1 Installation On Windows NT
To insert a CDF server into an OLE container or to activate a CDF
server within an OLE container, you must do the following. Set the
system path to point to the DLLs in the \IBMCPPW\BIN directory.
2.8.2 Usage Notes
o You need the following program:
- UUIDGEN.EXE from the Win32 Development Toolkit. It is in the
\IBMCPPW\SDK\BIN directory.
o If your application model needs to stream input or output from an
ICLUI or user-defined class which does not define stream
operators, you can define your own operators. When you define
operators you need to include a prototype statement in your .HPP
file, or you will receive the message about INCLUDE\IBASSTRM.C.
For example, if the .CPP file contains:
IBaseStream& operator>>=(IPoint pt, IBaseStream& strm) {....}
The .HPP file needs to contain:
IBaseStream& operator>>=(IPoint pt, IBaseStream& strm);
2.8.3 Restrictions
o The Compound Document Framework does not support building or
running Win32S applications.
2.9 Using the Editor
This section contains important information about using the Editor.
2.9.1 Usage Notes
o In Windows 95, when entering characters using the Alt key +
numeric pad, use Alt + 0 + the character code for the character
you are entering.
o In the Font selection window, some font selections will indicate
the availability of extended font styles, such as Italic or Bold.
The Editor ignores extended font style selections, and uses only
the underlying (Regular) font. To set additional font effects,
use the Token Attributes window, available from the Options
pull-down menu.
o If the Editor window does not appear, or it is unusable when it
does appear, erase the LPEX.ini file, then restart the Editor.
The LPEX.ini file can be found in the directory where Windows is
installed.
2.9.2 Known Problems
o When using the Editor on Windows 95, certain character effect
combinations such as bold and italics may not be readable in some
fonts or font sizes.
o On Windows 95, you cannot use the Save As dialog to save to an
existing file on a remote HPFS drive.
2.10 Using WorkFrame
This section contains important information about using WorkFrame.
2.10.1 Differences from OS/2 and Restrictions
o No project inheritance or Tool Setup is available. Actions
(tools), and types are defined in the product solution file, which
is called vacpp.iws.
o WorkFrame does not support user defined types.
o Environment variables can be defined through the Project Settings
notebook.
o Options defined by using the option dialogs are stored on a
per-project basis in the options file for the project. The
options file has the extension .iwo. You can access the option
dialogs using the Options pulldown menu in a project view. If you
delete the options file, you can recover by using the editor to
create a new options file. Use the same file name with an
asterisk for the extension. Then use the options dialogs to reset
your options for the project.
Other project specific information e.g. project settings, is kept
on a per-project basis in the project's project file. The project
file has the extension .iwp.
o Note: You should not directly change the above configuration
files, such as the *.iws, *.iwp, and *.iwo files.
o No drag and drop is available
o A details view of the project is not available, but icon and tree
views are supported.
o Monitored actions are implemented through the Editor rather than
WorkFrame. The monitor is an Editor monitor, not a WorkFrame
monitor.
2.10.2 Usage Notes
o The IBUILD and IMKMK commands have been updated to remove the
limit on the number of parameters they will accept. There is now
NO restriction on the number of parameters for IBUILD and IMKMK.
2.10.3 Known Problems
o In notebooks, the help that is displayed from the Help pushbuttons
may depend on what has focus. If a notebook tab has focus,
sometimes no help is displayed from the Help pushbutton. In most
cases for the Options notebooks, holding down the left mouse
button and pressing F1 over the notebook Help pushbutton will
display general help.
o Pressing F1 when focus is on a notebook tab sometimes changes
notebook files instead of displaying help.
o Keyboard navigation and accelerators don't work properly for some
dialogs.
o Opening options notebooks and changing options for two projects at
the same time may cause problems.
o If multiple .EXE files are selected to Run Monitored at the same
time, only one of them will be run multiple times.
o If the option to create a dependency file is specified, not all
dependencies are put into this file; some are left in the
makefile.
o Occasionally when running on Windows 95, WorkFrame windows will
not respond to the mouse. To correct this, click on the desktop
and then click on the WorkFrame window again.
o When you use WorkFrame for several hours, sometimes you receive a
warning about low virtual memory. The log file for the monitor
operations becomes too large. To avoid the problem, you need to
exit from the project monitor window occasionally. The exit
action erases the log file.
o When you build and run applications that use HLP and INF files
from WorkFrame, a problem exists. The application seems to build
correctly. When you run the application, you receive a message
saying that the HLP file and the INF file cannot be found. You
need to do the following. In the WorkFrame settings, set the Help
environment variable to point to the HELP subdirectory. Then
build and run your application again.
2.11 Using the Visual Builder
This section contains important information about using the Visual
Builder.
2.11.1 Known Problems and Restrictions
o Part files (.vbb) from the OS/2 release can be loaded and saved
under this release, but part files saved in this release cannot be
loaded in the OS/2 release.
When you load an OS/2 part file, Visual Builder asks you if you
want to convert it to the Windows format. If you answer YES to
this message, the part file is converted and it will no longer be
readable on OS/2. If you want to keep a copy of your OS/2 part
files, back them up before loading them into the Windows release.
o When using the native details-view container, you will have
problems selecting container columns other than column 1 directly
from the free-form surface. To edit the unreachable container
columns, do the following:
1. Select the container.
2. Click mouse button 2. The contextual menu for the part
appears.
3. Select VIEW PARTS LIST. The Parts List window appears.
4. Double-click the icon that represents the container column you
want to edit. The settings window opens for the part.
o If you use container columns in a native Windows container, set
the container to details view only. Using any other container
view might cause Visual Builder to close without warning, and you
could lose unsaved updates to your part.
o Situations exist where use of a native progress indicator
sometimes causes the Builder to shut down. To avoid this problem,
set the pmCompatible style to ON to use the CUA progress
indicator.
o Minor changes have been made to the Visual Builder User's Guide
since it was printed. For the most current information, see the
online version of the book. The sections affected are as follows:
Starting Visual Builder
Learning to Use Parts
Constructing Containers and Notebooks
Hints and Tips
o Minor changes have been made to the Visual Builder Parts Reference
since it was printed. For the most up-to-date information, see
the online version of the book. Portability information has been
added to include features that are unique to Windows or ignored by
the Windows compiler.
2.12 Debugging
This section contains important information about debugging.
2.12.1 Prerequisites for Win32s
o Remote debugging on Win32s requires IBM TCP/IP for DOS Version
2.1.1 and above.
2.12.2 Usage Notes
o To enable debug on demand, add the directory for your program to
the PATH environment variable or start the program from its
directory.
To run debug on demand, enter the command:
DOD path_name
The User's Guide incorrectly states that you need to enter DOD
path_name \idebug.
2.12.3 Known Problems on Windows NT and Windows 95
o You cannot use the Step Over or Step Debug functions to step into
a structured exception handling __finally block.
o Attaching to the debugger itself causes unpredictable results.
o For applications running under the debugger, asynch exception
handling is disabled. If the application uses a signal to register
an asynch handler, there is no way to detect the exception and
invoke the handler.
o Toggling breakpoints at an execution line clears all breakpoints
on that line.
o A stack entry is missed when you single step into a one line
function, for example constructor code.
o On Windows 95, the system hangs in one situation when a breakpoint
is hit. The situation is when you are debugging a GUI application
and you resize one of the windows of the application.
o On Windows 95, multithread application requires closing the
debugger (F3) twice for complete clean up.
o On Windows 95, make sure all change address breakpoints are
deleted before closing the debugger. The system hangs if any
change address breakpoint remains on the stack when the program
being debugged runs to completion.
o On Windows 95, not all exception signals are passed on to the
debugger. For some illegal operations, the debugger is not able to
catch the exception for the offending application.
o Closing the application using the system menu, while the
application is stopped by the debugger, produces unpredictable
results on Windows 95.
o Due to system limitation on Windows95, the debugger is not able to
step over certain system services such as WaitForSingleObject.
o Some hexadecimal values may not be displayed correctly in the
Character column of the Storage window. To fix this, set the
LC_ALL environment variable to the ANSI locale (codepage) which
corresponds to the country/language setting of your machine.
For example, for US English:
SET LC_ALL=En_US.IBM-1252
You can find the correct locale name in the "Compiled locales
supplied with VisualAge for C++" table in the Programming Guide.
You should use the locale name whose number is in the range of
1250 to 1257.
2.13 Using the Performance Analyzer
This section contains important information about using the
Performance Analyzer.
2.13.1 Usage Considerations
o If you are running a multithreaded application that creates
threads after existing threads of execution have been terminated,
the operating system may reuse the thread numbers that
corresponded to the terminated threads. If this occurs, the
Performance Analyzer may report fewer threads than were actually
executed.
o If the object file containing the first executable function is not
traceable, part or all of your application will run before the
TRACE GENERATION window is displayed. If this is the case, the
Performance Analyzer will run to the first traceable function,
halt execution, and then display the TRACE GENERATION window.
o To enable the Performance Analyzer in WorkFrame do the following:
- The best way to enable the performance analyzer is to use the
option in Build Smarts. This will correctly set up both the
compiler and linker options.
- Enabling the option in the compiler dialog will only turn on
the compiler /Gh option, but will not add the required
CPPWPA3.OBJ at link time.
2.13.2 Restrictions and Known Problems
o File accesses cannot be traced.
o The first function traced (usually main) cannot be set as a
trigger or disabled.
o Six system calls used by the Performance Analyzer are not traced
in your program when the _KERNEL.DLL intercept library is used.
These are: InitializeCriticalSection, EnterCriticalSection,
LeaveCriticalSection, LoadLibrary, GetProcAddress, and
GetCurrentThreadId.
o After generating a trace file, you may not be able to erase or
rebuild your executable while the Performance Analyzer is running.
You may have to exit the Performance Analyzer and then rebuild
your executable.
o If your program contains a function preceded by an underscore (_),
the Performance Analyzer will display the function without the
underscore in the trace file.
o The pattern recognition feature (on the CALL NESTING diagram) has
the following limitations:
- The Performance Analyzer only searches for patterns in the
first 32,768 events in the selected thread.
- The maximum number of patterns for which the Performance
Analyzer searches is 8191.
When the Performance Analyzer reaches either of these limits, it
stops searching for patterns.
o If your EXE is not in the current directory or in a directory
specified by the PATH environment variable, and it uses a DLL that
is in the current directory, then the Performance Analyzer cannot
__
load the program. Instead the operating system displays an error
message stating "Unable to locate DLL". The error message shows
the path that the operating system searched, which includes the
current directory.
o If your DLL is not in the current directory or in a directory
specified by the PATH environment variable, the functions in your
DLL will be traced; however, they will not be resolved. In the
trace file, they will appear as addresses instead of names.
o The compiler should only produce profile hooks for user-defined
functions. Currently the compiler produces profile hooks for
several compiler-generated functions in addition to user-defined
functions. These compiler-generated functions will appear in the
trace file as unrecognizable names made up of random characters.
o If you are analyzing a C++ program in the DYNAMIC CALL GRAPH or
STATISTICS diagram and select PROJECT > EDIT FUNCTION while a
class or an executable is highlighted, the Performance Analyzer
will not invoke the editor. The Performance Analyzer will only
display source code in the editor if the highlighted item is a
function.
2.14 Using the Data Access Builder
This section contains important information about using the Data
Access Builder.
2.14.1 Prerequisites
o There are no database prerequisites to run the Data Access
Builder.
If you want to use a DB2 database, you must install DB2 for the
Windows NT or Windows 95 platform.
2.14.2 Usage Notes
o An SVGA screen is recommended to run the idata tool.
o Only 32-bit datasources are displayed in the database selection
list.
o The 32-bit Driver manager is \WINNT35\SYSTEM32\ODBC32.DLL.
o You do not have to use the "Register Database" option each time a
database product is installed or removed. This option is needed
if you:
- Add DB2
- Remove DB2
- Go from none to at least one ODBC data source
- Go from at least one ODBC data source to none
2.14.2.1 Using the IDatastore Class in a Windows NT Application
You must do the following if your application uses the IDatastore
class on any database other than the one which you used for the Data
Access Builder to generate the code. You must bind the file
CPPWACL2.BND to all the databases accessed by your application. This
allows IDatastore to connect, disconnect, and complete transactions
against the database.
To bind the file, enter the following commands:
DB2START
DB2 CONNECT TO database
DB2 BIND D:\IBMCPPW\BND\CPPWACL2.BND
DB2 TERMINATE
where database is the name of your database and D:\IBMCPPW is the path
where you installed the code.
2.14.3 Creating a SOM library of Multiple Classes
A C procedure called SOMInitModule is implicitly generated during SOM
code generation when you check the makefile option or the automatic
link option. These two options imply that a SOM DLL, which requires
the existence of this procedure, is created. If you do not want to
create a SOM DLL, make sure that the options are not checked. If not,
you will receive multiple definition errors for this routine when
linking multiple SOM OBJ files together.
2.14.4 Features
o Data Access Builder also supports the following ODBC drivers:
- dBase
- Excel
- SQL Server
- Text
For configuration information for the above drivers, use WINHLP32
to view the driver's HLP file, that is found in the
\ibmcppw\odbc32 or \ibmcppw\odbc16 directory.
For example, for information on the dBase driver, type:
winhlp32 ibdbf08.hlp
o A new "Save window size" option is added to the View pulldown
menu. The option restores the size and the position of the Data
Access Builder on restart. The option is off by default.
o On Windows 95, use the 'clean95' option in the generated
makefiles, rather than the 'clean' option which should be used on
Windows NT.
2.14.5 Known Problems
o If an invalid class or attribute name is entered in the class
settings notebook, the previous value is restored as designed, but
no warning is issued.
o If a data identifier is mapped to a nullable column, database
operations with the data identifier set to null will not work.
o The help button on the class settings notebook does not work when
the notebook page has focus. Use the F1 key to obtain the help
for the page.
o After creating a class, the mouse pointer remains in the busy
state until the mouse is moved. Move the mouse after creating a
class to exit the busy state.
2.14.6 Known Problems on DB2 That Affect the Data Access Builder
o Loading tables with a foreign key column name greater than 15
characters will cause the Data Access Builder to crash.
o DB2 user-defined types based on character types are not mapped
correctly.
o DB2 maps DECIMAL to the C/C++ data type double which may result in
round-off errors and loss of precision. Data Access Builder also
maps DECIMAL to the date type double.
2.14.7 Using the Data Access Builder with the AS/400
o We recommend using the OWNER field while filtering. The owner
field must be specified in UPPER CASE.
o AS/400 does not yet support Windows NT Japanese version code page
943.
As a work around, set the DB2CODEPAGE environment variable to 932
before trying to connect to the AS/400.
o You must create a collection named NULLID on the AS/400 system.
o If you are using a US/ENGLISH system with code page 1252 and you
are interacting with a V3R1 AS/400 System, then you must load PTF
SF24582 onto the AS/400.
1252 is the default code page for US/ENGLISH systems.
1252 cannot interact with AS/400s supporting V2R3.
In this case, you should change the DB2CODEPAGE environment
variable to 850 before connecting to the AS/400 system.
2.15 Using the Browser
This section contains important information about using the Browser.
2.15.1 Known Problems
1. When printing on Windows 95, if you have your printer configured
to print to a file, a Print To File dialog will be shown to prompt
you for the file name. This dialog will show beneath other
windows, but you can access the dialog from the Task bar or you
can move the other windows aside. Enter the file name and the
Browser continues with the printing request.
2.15.2 Permanent Restrictions
1. You can use PDB files generated by the VisualAge C++ for OS/2
version 3.0 product in this Browser. You cannot use PDB files
generated by VisualAge for C++ for Windows and use them on OS/2,
nor can you use PDL or PDE or PDD files across systems.
2. If you browse a program that contains .OBJ files created from C
source files, the Browser Files Dialog informs you that the .PDB
files for the C files cannot be found. Ignore this message and
select the Load button. Note that no Browser information exists
for the C files.
3. If you choose to Generate Browser information, the compiler
creates a PDB file even if the compilation fails. The file
sometimes contains incorrect data. The browser cannot always
detect this problem.
4. In the list of file names that are fully-qualified, the list
contains the names after compilation and not necessarily the names
on your system. For example, if you List All Files in any of the
VisualAge for C++ libraries, the files may appear to be located in
C:\IBMCPPW. If the browser cannot find the files it searches the
path defined in the Browser Settings notebook.
5. The browser loads all the information from a program (.EXE or
DLL), including information from any LIB files used. If the
project that builds the .EXE or DLL does not contain the project
that builds the LIB file, the Refresh function in the Browser
cannot refresh the information and the information is not
displayed.
6. If you load some browser information with QuickBrowse and some
with compiler-generated .PDB files, you sometimes get the message
"An error occurred while loading the file filename.pdb". Either
delete the .PDB files and load only QuickBrowse information, or
rebuild your project to generate .PDB files for all of your source
files. If the problem persists, contact VisualAge for C++ Service
and Support.
7. QuickBrowse does not correctly identify SOM classes.
8. If you try to run the Browser on the executable files for the
VisualAge for C++ sample projects, you may see the message "Will
not QuickBrowse the following files after analysis of the make
file." If you see this message, choose Cancel, exit the Browser,
and the do one of the following:
o Rebuild the project.
o Rename the target of the project.
o Delete the target of the project.
You can then browse the project.
9. Due to the 16-bit GDI coordinate system used by Windows 95, the
Browser is unable to render highly complex graphs that can be
rendered on OS/2 or Windows NT. If the Browser encounters such a
situation, a message is displayed, and possible workarounds are
suggested in the on-line help for the message. Unfortunately,
there will be some complex graphs which cannot be displayed on
Windows 95, even after all workarounds have been tried.
2.16 SOM
This section contains the important information about using the SOM
toolkit.
2.16.1 Known Problems
o When using the DTS hh emitter:
- Sometimes it generates duplicate constructors.
- Sometimes it causes a runtime heap error R6018.
o The following code causes an access violation on Windows NT:
SOMClass * pClass = NULL;
somId aClassId = somIdFromString( "MyClass");
Class = SOMClassMgrObject->somFindClsInFile(aClassId, 0, 0, "mydll");
2.17 Developing Applications For Win32s
This section contains important information about building and running
Win32s applications.
2.17.1 Building Applications for the Win32s Environment
Building an application to run under Win32s may involve considerations
specific to the Win32s platform. For example, an application that
shares DLLs with other applications may require special handling.
See the VisualAge for C++ Programming Guide for more information about
building executables and DLLs. See the following sections in this
Read Me for specific information about installing and using the
VisualAge for C++ tools for Win32s applications.
2.17.2 Running Win32s Applications on Windows 3.1
This section describes the files you need to run applications.
2.17.2.1 Installing Win32s Operating Subsystem Support
To run applications on a machine using the Windows 3.1 or Windows 3.11
operating system, you must upgrade your system to include the Win32s
1.3 subsystem. Disk images for the Win32s subsystem are located in
the following directory:
\IBMCPPW\SDK\DISKS\RETAIL\OLE32S
To install this subsystem on your Windows 3.1 or 3.11 machine, do the
following:
o Run the SETUP.EXE program in the DISK1 subdirectory, or,
o Create diskettes from these subdirectories, then run the SETUP.EXE
program on the diskette created from the DISK1 subdirectory.
This installs the Win32s 3.1 subsystem with OLE support. For more
information on how to install the Win32s environment, see the
Installation Guide and Product Overview.
To debug programs on a Windows 3.1 or Windows 3.11 machine, copy the
"idebugp.exe" program from the "BIN" directory on the VisualAge for
C++ CD-ROM. You can find instructions for using the "idebugp.exe"
program in the User's Guide.
2.17.2.2 Installing Win32s Runtime Support
The steps are:
1. Copy the Win32s runtime DLLs from the Windows NT or Windows 95
VisualAge for C++ \IBMCPPW\WIN32S directory to a directory in the
path of the Windows 3.1 system.
IF USE GM+ AND GD+ CPPWM35I.DLL
IF USE GD+, GM- AND RN+ CPPWN35I.DLL
RUNTIME MESSAGES CPPWRTM.DLL
RUNTIME ERROR MESSAGES CPPWRERR.DLL
2. Copy any Win32s files specific to the type of application you have
built, from the \IBMCPPW\WIN32S directory.
o For an Open Class Win32s application, the following DLLs are
required.
- cppwob3i.dll
- cppwou3i.dll
- cppwod3i.dll
- cppwom3i.dll
- cppwor3u.dll
- cppwot3.dll
o For a Visual Builder Win32s application, the following DLLs
are required.
- cppwv03.dll
- cppwov3.dll
Refer to the Visual Builder User's Guide for more information.
o For a Data Access Builder Win32s application, refer to the
Frequently Asked Questions document in the Online Information
Notebook for more information.
o Win32s users who want to run your application on Windows 3.1,
Windows 3.11, or Windows for Workgroups must also have
Win32s 1.30 with OLE support. See the section called
Installing Win32s Support for details.
2.17.3 Usage Notes
NOTE: Be aware that your Win32s application, may not perform as well
under Windows 3.1 as it does under Windows NT or Windows 95, due to
the 16-bit nature of Window 3.1.
3.0 Samples
This section contains important information about using the samples.
3.1 General Information
3.1.1 Usage Notes
Because all samples are enabled for Performance Analyzer, CPPWPA3.DLL
must be present to Run the sample and CPPWPA3.OBJ must be present to
Build the sample without errors. These objects are automatically
installed if you install the Performance Analyzer component.
Otherwise, copy the CPPWPA3.DLL from the /BIN directory and the
CPPWPA3.OBJ from the /LIB directory of the CD-ROM to the corresponding
directories on your system.
Copying CPPWPA3.DLL and CPPWPA3.OBJ simply allows you to invoke Run
and Build without errors. To use the Performance Analyzer or any
other component with the samples, you must install those components.
3.2 Data Access Builder Samples
This section contains important information about the samples.
3.2.1 Running the Samples on Win32s
Follow these steps to run the Data Access Builder samples on Win32s.
1. Install the Win32s runtime environment for the Data Access Builder
which is explained in the FAQ under the question "How Do I Run a
Data Access Builder Application for Win32s on Windows 3.1?".
2. Copy the samples from the Windows NT or 95 machine to the Win32s
machine. There are 4 executables and one DLL to be copied. They
are located in the following compiler subdirectories:
\bin\idatasm1.exe (This must be run before the other executables
to initialize the database.)
\samples\database\stockcpp\client.exe (Stock c++ sample)
\samples\database\car\daxsamp\car.dll (DAX generated code DLL)
\samples\database\car\carbrws\carbrws.exe (Car Browse sample)
\samples\database\car\caredit\caredit.exe (Car Edit sample)
3. In Windows 3.1 edit the ODBCINST.INI file located in the \WINDOWS
directory. Under the section [INTERSOLV 2.11 dBASEFile (*.dbf)],
edit the 'Driver=' and 'Setup=' fields to point to the location
that the dBASEFile ODBC driver (IBDBF07.DLL) was installed.
4. In Windows 3.1 run the ODBC administrator (ODBCADM.EXE) from the
Program Manager or File Manager. When the dialogue box comes up,
click on the ADD button and choose 'INTERSOLV 2.11 dBASEFile
(*.dbf)' and click OK. To configure the datasource, view the help
file provided with the dBase driver (IBDBF07.HLP) using the
Windows help viewer (WINHELP.EXE). Important: The 'Data Source
Name' field must be set to "daxsamp" and the 'Locking' field must
be set to "NONE" for the samples to run.
5. Run the samples in the same way for Windows NT/95 with the
exception of 'resettbo.bat' which calls the executable
'IDATASM1.EXE'. Since Windows doesn't support running executables
from batch files (unless the executables can be run in a DOS
session), the user must run this executable directly from the
Program Manager or File Manager by typing:
IDATASM1 "WIN32S" "ODBC"
As with any executable which gives standard output on Win32s,
redirect the output to a file.
3.3 SOM/WorkStation DSOM Samples
This section contains important information about the samples.
3.3.1 Known Problems and Restrictions
o The Build Notes give you a generic description, which is different
from the way the samples are built. You need to consult the
individual readme.txt files for specific information. Click on
the "View Readme" selection box to see the readme file in an
editor. Also, refer to the rest of this section for additional
information.
o Building and Running Samples: General Information
- Sometimes problems exist when VisualAge for C++ is installed
in an environment that has another compiler already installed.
Check your PATH, INCLUDE, and LIB environment variables to
ensure that you are using the correct executables, include
files, and libraries.
- Selecting the "Project/Build Normal" will not work because
WorkFrame does not currently support rules for compiling IDL
files. Instead, you need to select "Project/Make" to use the
makefile "vac.mak" that has been supplied. Or you can right
click on "vac.mak" and choose "make" from the pop-up menu.
- Only "Project/Make" and "Project/Run" are supported by
WorkFrame.
o Building and Running Samples: Sample Specific Information
- ALL DSOM SAMPLES (location: samples\som\somd\cpp\* )
After running each WorkStation DSOM sample, you need to kill
the daemon "somdd" before you can run another sample. Close
the window where somdd is running.
- Event (location: samples\som\somd\event )
There is a potential race condition in starting the four
interacting programs for this sample. You can start the
programs manually by executing the commands in run.bat one at
a time from the Project Monitor or from the command line.
- If the client for a DSOM sample is invoked without starting
the daemon or server first, the client hangs and cannot be
terminated by a CTRL-C.
It has to be terminated explicitly from the "Task Menu" by
invoking "End Task".
4.0 Documentation
This section contains important information about the documentation.
NOTE: The online versions of the documentation are more current than
the PostScript publications.
To view the publications online, open the icon representing the Online
Information Notebook, select the radio button for a publication, and
click on the View pushbutton.
4.1 Printing
4.1.1 Known Problems With Printing
o Problems exist with printing because of the large amount of
printer memory required to load the large files. If you do not
have enough printer memory, you cannot print the large files.
4.1.2 How to Print
To print the PostScript files on a workstation-connected PostScript
printer, copy the file to the printer destination. The required fonts
are imbedded in the files. You can also print these files on a
host-connected PostScript printer; make sure you upload them in binary
format.