═══ 1. About this Book ═══ This is an introduction to the exciting new features in VisualAge C++, IBM's complete, integrated environment for object-oriented application development. With this version, C Set ++ gets a new name to go with all of its improvements and new features. These include: Visual Builder A visual application development environment Data Access Builder A graphical environment and set of classes that give you object-oriented access to relational data SOM Support The System Object Model (SOM) is an object-oriented programming technology for building, packaging, and manipulating objects in a language-neutral manner. The SOM support in VisualAge C++ includes the ability to create SOM objects directly and the ability to manipulate SOM objects in the Browser and the debugger Project Smarts Your fast path to creating your own projects Build Smarts A facility to help you quickly change the compile and link options in your project QuickBrowse A new Browser facility that lets you browse projects before they are compiled That's not all... All of these are described in more detail in this document, along with dozens of other enhancements. The description of "what's new" is divided into three parts: New VisualAge C++ Components A description of the brand-new components in this version of VisualAge C++. New Features for Existing Components A description of improvements to existing components of VisualAge C++. Integration and Information A description of improvements in the integration between components and the information that describes VisualAge C++. Important For details on late changes, features, and restrictions, please ensure you read the README file. ═══ 1.1. Notices ═══ Copyright International Business Machines Corporation, 1995. All rights reserved. Note to U.S. Government Users - Documentation related to restricted rights - Use, duplication, or disclosure is subject to restrictions set forth in GSA ADP Schedule Contract with IBM Corp. First Edition, June 1995. This edition applies to Version 3.0 of IBM VisualAge C ++ for OS/2 (30H1664, 30H1665, 30H1666) and to all subsequent releases and modifications until otherwise indicated in new editions. Make sure you are using the correct edition for the level of the product. This publication could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; any such changes will be reported in subsequent revisions. Requests for publications and for technical information about IBM products should be made to your IBM Authorized Dealer or your IBM Marketing Representative. When you send information to IBM, you grant IBM a nonexclusive right to use or distribute the information in any ways it believes appropriate without incurring any obligation to you. Any reference to an IBM licensed program in this publication is not intended to state or imply that only IBM's licensed program may be used. Any functionally equivalent product, program, or service that does not infringe any of IBM's intellectual property rights may be used instead of the IBM product, program, or service. Evaluation and verification of operation in conjunction with other products, except those expressly designated by IBM, is the user's responsibility. IBM may have patents or pending patent applications covering subject matter in this document. The furnishing of this document does not give you any license to these patents. You can send license inquiries, in writing, to the IBM Director of Licensing, IBM Corporation, 500 Columbus Avenue, Thornwood, NY, 10594, USA. This publication contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to the names and addresses used by an actual business enterprise is entirely coincidental. ═══ 1.2. Trademarks and Service Marks ═══ The following terms used in this publication are trademarks or service marks of IBM Corporation in the United States or other countries: BookManager C Set ++ DB2/2 IBM IBMLink Library Reader Operating System/2 OS/2 Personal System/2 Presentation Manager PS/2 VisualAge WorkFrame Other company, product, and service names, which may be denoted by a double asterisk(**), may be trademarks or service marks of others. ═══ 1.3. Using Online Information ═══ Before you begin to use this information, it would be helpful to understand how to navigate through it. You can use the Table of Contents and Index facility to locate topics and the Search facility to search the text of this document. You can use hypertext links to acquire related information on the current topic. Hypertext links appear in a different color (which you can customize using the OS/2 Scheme Palette). For example, here is a link to another panel: Communicating Your Comments to IBM. By double-clicking on the text of the link or by pressing Enter on a highlighted link, you will open a panel of related information. When you open a panel, the first link has the focus; to shift the focus to other links, use the Tab key. You should also understand:  How to Use the Contents  How to Obtain Additional Information  How to Use Action Bar Choices ═══ 1.4. How to Use the Contents ═══ When the Contents window first appears, some topics have a plus (+) sign beside them. The plus sign indicates that additional topics are available. To expand the Contents if you are using a mouse, click on the plus sign. If you are using the keyboard, use the Up or Down Arrow key to highlight the topic, and press the plus (+) key. For example, How to Use the Contents has a plus sign beside it. To see additional topics for that heading, click on the plus sign or highlight that topic and press the plus (+) key. To view a topic, double-click on the topic (or press the Up or Down Arrow key to highlight the topic, and then press the Enter key). ═══ 1.5. How to Obtain Additional Information ═══ After you select a topic, the information for that topic appears in a window. Highlighted words or phrases indicate that additional information is available. Certain words and phrases are highlighted in a different color from the surrounding text. These are called hypertext terms. If you are using a mouse, double-click on the highlighted word. If you are using a keyboard, press the Tab key to move to the highlighted word, and then press the Enter key. Additional information then appears in a window. ═══ 1.6. How to Use Action Bar Choices ═══ Several choices are available for managing the information presented in this document. There are three menus on the action bar: the Services menu, the Options menu, and the Help menu. The actions that are selectable from the Services menu operate on the active window currently displayed on the screen. These actions include the following: Placing Bookmarks You can set a placeholder so you can retrieve information of interest to you. Searching for Information You can find occurrences of a word or phrase in the current topic, selected topics, or all topics. Printing Information You can print one or more topics. You can also print a set of topics by first marking the topics in the Contents list. Copying Information to a File You can copy a topic that you are viewing to the System Clipboard or to a file that you can edit. This method is particularly useful for copying syntax definitions and program samples into the application that you are developing. Using the actions that are selectable from the Options menu, you can change the way your Contents list is displayed. To expand the Contents and show all levels for all topics, choose Expand all from the Options pull-down. You can also press the Ctrl, Shift, and * keys together. The actions that are selectable from the Help menu allow you to select different types of help information. For information about any of the menu choices, highlight the choice in the menu and press F1. ═══ 1.6.1. Placing Bookmarks ═══ When you place a bookmark on a topic, it is added to a list of bookmarks you have previously set. You can view the list, and you can remove one or all bookmarks from the list. If you have not set any bookmarks, the list is empty. To set a bookmark, do the following: 1. Select a topic from the Contents. 2. When that topic appears, select the Bookmark option from the Services menu. 3. If you want to change the name used for the bookmark, type the new name in the field. 4. Click on the Place radio button (or press the Up or Down Arrow key to select it). 5. Click on OK (or select it and press Enter). The bookmark is then added to the bookmark list. ═══ 1.6.2. Searching for Information ═══ You can specify a word or phrase to be searched. You can also limit the search to a set of topics by first marking the topics in the Contents list. To search for a word or phrase in all topics, do the following: 1. Select the Search option from the Services menu. 2. Type the word or words to be searched for. 3. Click on All sections (or press the Up or Down Arrow keys to select it). 4. Click on Search (or select it and press Enter) to begin the search. 5. The list of topics where the word or phrase appears is displayed. ═══ 1.6.3. Printing Information ═══ You can print one or more topics, the index, or the table of contents. Make sure that your printer is connected to the serial port, configured correctly, and ready for input. To print: 1. Select Print from the Services pull-down. 2. Select what you want to print. Note that the This section and Marked sections choices are only available if you are viewing a topic or if you have marked topics, respectively. To mark topics in the table of contents, press the Ctrl key and click on the topics, or use the arrow keys. 3. Select Print to print what you've chosen on your printer. ═══ 1.6.4. Copying Information to a File ═══ You can copy a topic that you are viewing in two ways:  Copy copies the topic that you are viewing into the System Clipboard. If you are using a Presentation Manager (PM) editor (for example, the Enhanced Editor) that copies or cuts (or both) to the System Clipboard, and pastes to the System Clipboard, you can easily add the copied information to your program source module.  Copy to file copies the topic that you are viewing into a temporary file named TEXT.TMP. You can later edit that file by using any editor. TEXT.TMP is placed in the directory where your viewable document resides. To copy a topic, do the following: 1. Expand the Contents list and select a topic. 2. When the topic appears, select Copy to file from the Services menu. 3. The system puts the text pertaining to that topic into the temporary file TEXT.TMP. ═══ 1.7. Other Information You Might Find Helpful ═══ This product provides a number of online guides and references that we hope you'll find helpful as you develop applications. This information includes User's Guides, References, and How Do I help that gives you specific instructions for performing common tasks. You can get to this online information from the Information folder inside the main product folder. You can also get to it from the Help menu in any of the components of the product. ═══ 1.8. Communicating Your Comments to IBM ═══ If there is something you like, or dislike, about this book, please let us know. You can use one of the methods listed below to send your comments to IBM. Please be sure to include the complete title of the publication that you are commenting on. The comments you send should only pertain to the information in this document and its presentation. To request additional publications or to ask questions or make comments about the functions of IBM products or systems, you should talk to your IBM representative or your authorized IBM remarketer. When you send comments to IBM, you grant IBM a nonexclusive right to use or distribute your comments in any way it believes appropriate without incurring any obligation to you. You can send your comments to IBM in the following ways:  By mail to the following address: IBM Canada Ltd. Laboratory Information Development 2G/345/1150/TOR 1150 EGLINTON AVENUE EAST NORTH YORK, ONTARIO CANADA M3C 1H7  By FAX to the following number: - United States and Canada: (416) 448-6161 - Other countries (+1) 416-448-6161  By electronic mail to one of the following IDs. Be sure to include your entire network address if you wish to get a reply. - Internet: torrcf@vnet.ibm.com - IBMLink: toribm(torrcf) - IBM/PROFS: torolab4(torrcf) - IBMMAIL: ibmmail(caibmwt9) ═══ 2. New VisualAge C++ Components ═══ We're introducing these brand-new components with this version of VisualAge C++:  Visual Builder, a graphical application builder  Data Access Builder, a graphical tool and class library for object-oriented access to relational data  An all new Browser  A faster 32-bit Linker  Project Smarts, a facility that helps you create new projects fast  Build Smarts, a facility that lets you set the compiler and linker options for your projects quickly so that they can be used with the debugger, Browser, or Performance Analyzer.  A programmable Editor ═══ 2.1. Visual Builder ═══ Visual Builder is a powerful visual composition editor that you can use to create complete object-oriented applications. In Visual Builder, you manipulate parts that represent logical elements of your program and graphical interface elements, such as pushbuttons and selection lists. You can select from an extensive library of predefined parts or create your own. By arranging these parts and setting up connections between them, you can create not only your user interface, but also the supporting application logic, often without having to write code. These parts are then mapped directly to Open Class classes during code generation. Visual Builder provides:  A powerful visual editor that enables you to create complete applications.  An extensive library of supplied parts, objects representing both graphical interface and logic, that you can use and reuse in your applications.  An editor for creating your own reusable parts, which you can then add to the Parts palette.  Support for external program logic written in C++. The interface for Visual Builder itself provides toolbars and palettes so you can easily use your mouse to select, drag, and drop objects. For more details about Visual Builder and how to get started building applications with it, see the Visual Builder User's Guide ═══ 2.2. Data Access Builder ═══ Data Access Builder is an application development tool and a class library that provide object-oriented access to DB2/2 relational databases. The application development tool allows you to map your existing relational database tables to object interfaces as either C++ or SOM IDL (the System Object Model Interface Definition Language, the standard language in which class interfaces are described in SOM). For example, in a simple case a relational database table maps to a class, and a column of a table maps to a class attribute. The C++ objects that you create can be imported into Visual Builder. In addition to the application development tool, we've also provided a set of classes to help you:  Connect to the database  Disconnect from the database  Manage transactions For details on the application development tool, see the User's Guide. For details on the class libraries that accompany the Data Access Builder, see the Open Class Library User's Guide and the Open Class Library Reference. ═══ 2.3. Browser ═══ The Browser is a tool for understanding the structure and content of your C++ applications and class libraries. You can use it to graphically and selectively display components of your program and the relationships between those components. Our new Browser is easier to use and faster than the Browser we supplied in earlier releases, and the Browser files generated by the compiler are smaller. In addition, the new Browser features:  A simpler user interface that lets you point and select from the object's context menu. You can quickly customize many aspects of this interface, including the fonts and colors.  The QuickBrowse feature which allows you to browse a project without having to compile it first  Faster loading and querying  Data type classification through a Presentation Manager (PM) container  Incremental "smart" loads of Browser files  The ability to browse a project, library, executable (.EXE), or DLL  Support for up to 8 concurrent views  A history log The Browser is described in more detail in the User's Guide. ═══ 2.4. Linker ═══ We've added a new 32-bit linker to complement our 32-bit compiler. The new linker is faster than our previous linker, LINK386, and provides additional features such as:  Template resolution independent of the compiler (meaning you no longer have to invoke the linker through the compiler when you use templates).  Linker optimization options for removing unreferenced functions and member functions. These options can significantly reduce the size of your application files.  Packing of debug information to reduce the size of your files and potentially improve debugger performance. The linker syntax is consistent with that of LINK386 to make the transition easier. It also supports most LINK386 options along with the new linker options. The library maintenance and creation utility has been improved and renamed ILIB. It has a new output format to improve link time and provide support for new features such as creating browsing information. The output format used in previous releases is still available if you need it for distribution purposes. For more information about the linker, see the User's Guide. ═══ 2.5. Project Smarts ═══ Project Smarts is a powerful tool to help you get started writing VisualAge C++ applications. With Project Smarts you select from a catalog of skeleton applications that you can use as a base with which to write your own applications. In Project Smarts, you choose from a variety of common applications, including:  Presentation Manager Application  Workplace Shell Application  Data Access Application  Visual Builder Application  C++ Dynamic Link Library (DLL)  C DLL  Information Presentation Facility (IPF) Context-Sensitive Help  IPF Document Project Smarts creates a project that has all of the settings defined for the kind of application you chose. A project is an encapsulation of all of the objects (such as C++ source files, resource files, and make files) that you need to build a single target (such as an object file, an EXE file, or a dynamic link library (DLL)). A project also has an associated set of actions, such as Edit, Compile, or Debug. The project that Project Smarts creates is complete and development-ready. You can immediately add your application-specific code to this project and customize it to meet your specific requirements without having to set up the basics every time. By giving you a convenient starting point, Project Smarts makes it easy for you to exploit the advantages of projects from the start. For more information on Project Smarts, see the User's Guide. ═══ 2.6. Build Smarts ═══ Build Smarts is a facility that lets you quickly set the options that allow your project to be used with the:  Browser  Debugger  Performance Analyzer Build Smarts sets all of the compiler and linker options that are required by these components so you don't have to change them one-by-one every time you want to examine your project with one of these components. ═══ 2.7. Editor ═══ The VisualAge C++ Editor is a programmable editor with a number of features to make editing easier. These features include:  Color highlighting for C and C++ syntax. The Editor parses your code and highlights language elements like keywords, library functions, and comments, making it easier for you to read your code and find syntax errors.  A highly flexible interface. You can customize many aspects of the Editor, including the colors used for highlighting and the definition of program function (PF) keys and shortcut key combinations.  A programmable interface that you can extend to meet your own requirements. You can also choose one of the predefined editor "personalities" to make the Editor emulate the keyboard behavior of another editor.  Direct, context-sensitive help for C and C++ keywords, language, and library elements. For more details on the Editor, see the User's Guide. ═══ 3. New Features for Existing Components ═══ Although we've added some exciting new components, we've enhanced the existing ones, including:  SOM Support  Improved Class Libraries  Improved Memory Management  Support for POSIX Locales and Functions  Optimization Improvements  New Debugger Features  New WorkFrame Features  New Performance Analyzer Features We have also made significant changes to the integration of VisualAge C++ components and to the information (hardcopy and online); these changes are described in Integration and Information. ═══ 3.1. SOM Support ═══ The IBM System Object Model (SOM) provides a common programming interface for building and using objects. The support for SOM in VisualAge C++ now includes:  Direct-to-SOM (DTS) option to create SOM classes directly in C++  Support for browsing SOM objects in the Browser  Support for debugging SOM objects in the debugger For more details on SOM support, see the Programming Guide and the User's Guide. ═══ 3.2. Improved Class Libraries ═══ The class libraries that accompany VisualAge C++ have been named IBM Open Class to reflect their breadth and flexibility. Open Class includes updates to the existing classes that support:  User Interface  Collections  Application Support In addition to these updates to the existing classes, Open Class also includes new classes for:  Data access  Multimedia  Toolbar support  2-D graphics  Mouse handling  Flyover help (that is, dynamic textual help for the interface element that the mouse pointer is currently on)  String parsing  Animated buttons  Timing  Notification support For more details on Open Class, see the Open Class Library User's Guide and the Open Class Library Reference. ═══ 3.3. Improved Memory Management ═══ In addition to improving our memory allocation methods to increase speed and reduce memory waste, we have added functions that you can use to create and manage your own heaps of memory. You can use these user heaps in addition to, or in place of, the regular runtime heap. Debug versions of memory management functions are now available for user heaps and for tiled memory, as well as for regular memory. There are also new heap-checking functions, similar to those provided by other C/C++ compilers, that you can use to debug your memory management problems. The debugger has also added heap-checking capabilities. When your application stops, you can check the dynamic variables allocated by memory management functions on the heap. Memory management is discussed in general in the Programming Guide, and the new functions are described in the C Library Reference. For more details on the debugger, see the User's Guide. ═══ 3.4. Support for POSIX Locales and Functions ═══ A locale is a collection of data that encodes information about a particular language, country, or locality. Locales provide a way to internationalize your applications by defining the language, character sets, date and time format, and other culturally-determined elements. VisualAge C++ has added support for locales based on the IEEE POSIX P1003.2 and X/Open Portability Guide standards for global locales and coded character set conversion. To support locales, we have added a number of new functions, header files, environment variables, and utilities. The functions include a number of multibyte functions proposed for addition to the ANSI/ISO C standard. For more information about locales and how to use them, see the Programming Guide. The new functions are described in the C Library Reference. ═══ 3.5. Optimization Improvements ═══ VisualAge C++ has a reputation for producing very fast executables. We've increased and enhanced the optimizations to improve your program's performance. We also realize that in some cases, the size of your executable files may be more critical than the speed they run at. For this reason, both the compiler and the linker have implemented options that reduce the size of your code, while still providing some measure of performance improvement. For more information about optimization and the options that control it, see the User's Guide. ═══ 3.6. New Debugger Features ═══ Many new features have been added to the debugger, including: Deferred breakpoints Allows you to set a breakpoint in a DLL that is not currently loaded. If your application consists of DLLs that are dynamically loaded, use this feature to set breakpoints in the dynamically loaded DLLs that have not been loaded yet. These deferred breakpoints become active once the DLL is loaded. Child process debugging Supports debugging of processes started by a parent program. Exception filtering Allows you to select the exceptions that you want the debugger to recognize. An exception occurs when your application is unable to interpret specific requests. Check heap when stopping Helps to isolate memory management problems by checking for memory overwriting each time your program stops executing. Hide debugger on Run Hides the debugger windows while your application is running. Color support Allows you to change the color of the various window elements such as executable lines, non-executable lines, and the breakpoint prefix area. SOM (System Object Model) support Allows you to debug SOM objects created with the compiler using Direct-to-SOM support or created with the SOM compiler. Support includes monitoring SOM classes in the monitor windows. Scroll to line number Allows you to scroll to a particular line number in the source code. This feature also provides the ability to set breakpoints. Autosave window positions and sizes Saves the window positions and sizes when the windows are moved or re-sized. Alternatively, you may save the window positions and sizes by position to the debugger windows on the desktop and selecting the Save window positions and sizes choice. Integration Provides quick and easy access to other tools such as an editor or the browser. This feature is available when the debugger is started from within the WorkFrame environment. Select include files Allows you to select the include files you want to view. Include files are files that are included in your source file by a compiler directive and are considered program source files. Windows menu Displays a list of all the active debugger windows. Flyover help for title bar buttons Displays the name of the title bar button when you place your mouse pointer on the button. If you move the mouse pointer across the buttons, the name in the title bar area changes to reflect the button you are on. That's not all... In addition to these new features, the following features of the debugger have been enhanced: Call stack window Provides the option of displaying a variety of information, including the remaining stack size, the stack frame size, and the return address. Breakpoint list window Displays as a window allowing you to continuously monitor the breakpoint list. You can also display the source code where the breakpoint is set. Storage window Allows you to monitor expressions in a storage window. For example, if you are monitoring a pointer, as the pointer changes, the storage window changes to show the new location referenced by the pointer. Change address breakpoint Allows you to set a change address breakpoint by typing in an expression. Enable program profiling Allows you to enable or disable the use of program profiles which restore a program's breakpoints, source windows and monitors to the same state as when last debugged. For details on the debugger, see the User's Guide. ═══ 3.7. New WorkFrame Features ═══ The WorkFrame has been completely redesigned to make it easier to use and more powerful. In particular, it now features:  A new project container with a menu bar and configurable toolbars  Project Smarts, to help you create new projects quickly  Build Smarts, to help you quickly specify the settings in your project that allow you to examine it with the debugger, Browser, and Performance Analyzer  Project hierarchies that give you greater flexibility in managing your software projects  The ability to customize projects with your own OS/2, DOS, and Windows tools  Complete, integrated interface for selecting options For more details on the WorkFrame, see the User's Guide. ═══ 3.8. New Performance Analyzer Features ═══ The component that was called EXTRA has a new name: Performance Analyzer. To go along with its new name, it has the following new features:  Number of threads supported increased to 64. This means that thread-rich programs can be more fully understood.  A window manager that ties the different display windows together.  The ability to start and stop a trace during an application, instead of tracing the program from start to finish.  Support for run-time loaded DLLs.  A Timeline diagram that displays user events. All of these features make Performance Analyzer an excellent way for you to understand how your code executes. It can help you locate the "hot spots" in your code so you can concentrate your optimization efforts where they will have the most effect. Performance Analyzer is described in more detail in the User's Guide. ═══ 4. Integration and Information ═══ In addition to the improvements that have been made to individual components, we have updated the overall characteristics of VisualAge C++ Specifically, we have improved:  Component Integration  VisualAge C++ Information ═══ 4.1. Component Integration ═══ To make the flow between different tools smoother, we've made project actions available from each component. You'll notice a new pulldown menu, Project in the debugger, Browser, Performance Analyzer, Editor, Data Access Builder, and Visual Builder. You can use this menu to access the other components in VisualAge C++. Suppose, for example, that you are editing a piece of source code in a project. You can perform a variety of operations on the project, including browsing it, debugging it, or building it, simply by selecting one of the entries in the Project menu of the Editor. All of the components of VisualAge C++ feature this kind of integration to make it easier for you to take advantage of all of the power of VisualAge C++. The integration of the components of VisualAge C++ is especially evident when you use Project Smarts. When you use Project Smarts to set up a project, all of the actions that should be associated with that particular kind of project are set up automatically. In addition to the improved integration that you see in the interface of VisualAge C++, there is also integration at other levels, including:  Open Class was used widely in the creation of the components, and the components themselves use Open Class extensively.  The parts that you can reuse in the Visual Builder are based on Open Class classes.  The Data Access Builder can create parts that can be imported into the Visual Builder environment. You may also notice that the debugger no longer features an Inheritance or Class details view. Instead, you can invoke the Browser from the debugger for even more information about classes and the class hierarchy than the debugger showed before. ═══ 4.2. VisualAge C++ Information ═══ You may not recognize all of the names of the information units (books, online references, and so on) that now come with VisualAge C++. We've reorganized our library to make it more useful. For example, we've combined the information on how to use the compiler, linker, debugger, Browser, Performance Analyzer, WorkFrame, Editor, and utilities into a single User's Guide. We've also reorganized the class library information into one reference and one user's guide, for your convenience. To get you started, we have Read Me First!, a hardcopy guide to installing VisualAge C++. The other documents are all available in the .INF online format. These documents are described in the following sections:  Hardcopy Information  Online Information with Hardcopy Available  Online Information with No Hardcopy  Toolkit Information ═══ 4.2.1. Hardcopy Information ═══ You get the following books in online format, and you also get them in hardcopy with the diskette version or the CD-ROM Pak. There are also PostScript files for them on the CD-ROM: Welcome to VisualAge C++ Gives a brief introduction to VisualAge C++ and describes its key features at a high level. Programming Guide Describes coding techniques such as multithreading, creating DLLs, using templates, signal and exception handling, managing memory, and creating programs that use 16-bit and 32-bit code. These descriptions focus mostly on the C and C++ techniques involved, rather than the lower-level OS/2 techniques that are described in the Control Program Guide and Reference that is part of the Toolkit Information. User's Guide Provides information on how to compile, link, debug, browse, and trace your program. It also describes how you can use the improved capabilities of the WorkFrame to manage your programs. Open Class Library User's Guide Describes the IBM Open Class set of class libraries and how to use them. Visual Builder User's Guide Introduces Visual Builder and how to use it to create applications. ═══ 4.2.2. Online Information with Hardcopy Available ═══ You get the following books in the .INF online format. If you wish, you can order hardcopy versions of these books. There are also PostScript files for these books on the CD-ROM: Language Reference Describes the C and C++ language elements. C Library Reference Describes the C library functions and how to use them. Open Class Library Reference Gives a comprehensive reference to the class libraries that make up IBM Open Class. Visual Builder Parts Reference Describes the reusable parts that you can use in Visual Builder to create your applications. Building VisualAge C++ Parts for Fun and Profit Describes how to create your own Visual Builder parts. ═══ 4.2.3. Online Information with No Hardcopy ═══ You get the following books in the .INF online format only: Guide to Sample Programs Guides you through all of the programming samples that come with VisualAge C++. Frequently-Asked Questions Gives a list of answers to common questions about VisualAge C++. Editor Command Reference Describes the commands for customizing and extending the Editor. In addition to these online-only documents, online help is included in all of the individual components of VisualAge C++. ═══ 4.2.4. Toolkit Information ═══ In addition to the revised information for VisualAge C++, we have also revised the online information for the Toolkit. You get the following documents in the .INF online format: Control Program Guide and Reference Describes how to write source code using Control Program functions. Presentation Manager Guide and Reference Describes how to write source code using Presentation Manager functions. Graphics Programming Guide and Reference Describes how to write source code using Graphical Programming Interface functions. Workplace Shell Programming Guide Describes the Workplace Shell, an application environment integrated with OS/2. Workplace Shell Programming Reference Describes how to write source code using Workplace classes and methods. IPF Guide and Reference Describes how to create online information using the Information Presentation Facility. Kernel Debug Reference Describes the use of the Kernel Debugger functions. OS/2 Tools Reference Describes how to use the tools in the OS/2 Toolkit. OS/2 Bidirectional Language Support Development Guide Describes the Presentation Manager support and application programming interfaces for the Arabic and Hebrew languages. SOM Programming Guide Describes how to implement class libraries that exploit the System Object Model (SOM), develop client programs that use these class libraries, and develop applications that use the SOMobjects Toolkit framework. SOM Programming Reference Describes the details of the classes, functions, and macros supplied with the SOMobjects Toolkit. Multimedia Application Programming Guide Describes application interfaces to help you select and implement functions for your OS/2 multimedia applications. Multimedia Subsystem Programming Guide Gives guidelines for creating multimedia subsystems. Multimedia Programming Reference Describes how to create OS/2 multimedia applications. REXX Reference Describes how to write source code using REXX Program functions.