Introduction to the Open Class Library
This introduction to the Open Class Library lists the
frameworks and libraries included in this release; it specifies
the navigation route to the Open Class Library documentation and
describes graphics conventions. This documentation assumes that
you are proficient with both the C++ programming language, and
with object-oriented programming concepts and techniques.
Frameworks and Classes
To assist you in learning about the classes and to guide you
as you start developing portable applications, we have organized
the classes and frameworks into the following basic categories:
- Application Control
- Collections
- Error Handling and Testing
- Graphics
- Math
- Multimedia
- Streams and Storage
- Text and Internationalization
- User Interface
Here is a brief summary of the contents of each of these
categories:
- The Application Control classes provide support for
multi-threaded execution environments.
- Processes classes support the creation and
manipulation of processes.
- Threads classes support the creation and
manipulation of threads.
- Reference Counting classes manage thread-safe
access to multiply referenced objects.
- Notification classes support notifying interested
objects of changes in other objects.
- The Collection Classes provide a set of commonly used
abstract data types used to build collections.
Collections can have properties such as sorted or
unsorted; ordered or unordered; unique-element or
multiple-element.
- The Error Handling and Testing classes provide support
for building robust and well-behaved applications.
- Test Framework creates and runs unit tests in the
Open Class environment.
- Exceptions classes provide support for detecting
and conveying information about unusual
circumstances in applications.
- The 2D Graphics Framework supports the
platform-independent creation, manipulation, and
rendering of 2D graphic objects based on patented
mathematical algorithms. The framework includes these
class groups:
- Geometry classes define forms for path, area, and
image geometries.
- Attributes describe graphic characteristics such
as paint, pen and joints, that let you create
groups of attributes to apply to graphic objects
when rendering them.
- Transformations let you apply mathematical
transformations such as scaling, rotating, and
translating to 2D graphic objects.
- Modeling classes combine geometry objects with
attributes and transforms for rendering and
storing graphics and creating hierarchies of
graphics.
- Rendering pipeline classes implement the
rendering of 2D graphic objects.
- The Math classes define objects, operators and syntax
which create, manipulate, and translate values set into
short, int, long, float, double, complex, and scientific
formats and provide support for binary coded decimal
format. These classes will be deprecated in favor of the
new STL Class Numerics library in a future release.

The
Multimedia classes support the creation of applications
that integrate text and graphics with a combination of
audio, motion video, images, and animation. Using the
multimedia classes and the window control classes, you
can implement an interface for your application that
looks like the controls of common electronic devices,
such as stereo components and video cassette recorders
(VCRs). Your application can use these controls as
interfaces to control audio and video media that is
presented to the user. Support for media devices is
abstracted into classes that contain the data and
functions essential for the operation of the real-world
devices that they model. This framework includes these
device classes groups from which you can directly
instantiate device objects:
- An audio amplifier-mixer class
- A CD audio player class
- A CD Extended-Architecture player class
- A Digital video player class
- A Master audio class
- a MIDI sequencer class
- A Waveform audio player class
- The Streams and Storage classes implement persistent
storage mechanisms for Open Class components, and
includes:
- Streaming classes that support streaming data in
C++ objects in and out of persistent storage.
- The IOStreams Classes create and manage
predefined and user-defined streams objects,
which transfer data among files, buffers and
peripherals. These classes will be deprecated in
favor of the new STL Class library in a future
release
- File System classes, which provide portable
abstractions that allow you to manipulate
physical file system entities such as volumes,
directories, and files.
- The Text and International Frameworks provide support for
Unicode text strings and for building easily localizable
components. These frameworks include the following
components:
- The Unicode support classes, which support
inquiries about the stylistic and symantic
properties of characters, character sets, and
scripts (writing systems).
- The Text display classes support user editing,
and display and storage of text.
- The International frameworks support the creation
of international applications and manipulation of
international text, including language-sensitive
comparison of text strings, conversion between
character sets, and a locale mechanism for access
to portable and host-specific resources.
- The User Interface classes provide support for building
the graphical user interface of an application.
- Base Window, Menu, Handler, and Event classes
provide support for the basic windows, handlers,
events, and menus used by the applications you
develop. These classes encapsulate the basic
graphical building blocks that are used to
construct application windows. This encapsulation
allows window position and appearance (windows
and menus) to be separated from event-handling
(handlers and events).
- Standard Control Classes provide support for the
standard controls such as entry field, static
text, and buttons used by the applications you
develop.
- Advanced Control, Dialog, and Handlers Classes
provide support for the advanced controls such as
container, notebook, tool bar, and the font and
file dialogs used by the applications you
develop.
- Direct Manipulation Classes provide support for
the direct manipulation used by the applications
you develop.