The (VCF) is an
Open Source project for development under
Microsoft Windows and
Apple Macintosh that is distributed under the
BSD License . It is an advanced
C++ application framework that makes it easy to produce powerful C++ applications. The framework is based on a thoroughly modern C++ design and has built in support for
Rapid Application Development . The framework is designed to be portable over multiple
Platforms and
Compilers .
The framework runs under Windows and
Mac OS X , but the OS X port is still ongoing as of this writing. Current efforts are also underway to port it to
Linux .
The project has made a large effort to support a variety of compilers and
Integrated Development Enviroment s (IDE), allowing the developer to work in whatever IDE/compiler they prefer. Compiler support on Windows covers Microsoft's
Visual C++ versions 6, 7, 7.1, and 8, along with
Borlands C++ Compiler, the
Intel C++ Compiler, and
GCC . On Mac OS X GCC is supported using the
XCode IDE. A CodeWarrior port was completed, but stopped due to CodeWarrior dropping support for their x86 version of the compiler, and later for their PowerPC version as well.
The framework is licensed under the
BSD License for any platform it runs on.
The framework is designed with several goals in mind. One is the ability to be ported to other platforms beyond
Windows , such as
Mac OS X ,
BeOS , or possibly even embedded operating systems like
Windows CE .
The next goal is to provide solid support for dynamic programming such as that found in languages like
Borland 's
Object Pascal ,
Java , or
Objective C . This included
RTTI or
Reflection like classes that allow the developer to query all sorts of information about a given class instance at runtime.
Another goal was to design the
UI classes so that visual programming or
RAD was possible, again similar to what is found in
Delphi . This includes support for property editors, component editors, persistance of the UI state to and from an external text file, and making use of the dynamic features to create class instances on the fly and get and set the instance's registered properties.
In addition to this, the last goal was to provide support for a large number of common programming tasks when developing an application, particularly for larger scale applications. This includes support for various kinds of IO (in memory, file/disk, and so forth), thread support and various synchronization primitives like mutexs, semaphores, and conditions, Unicode string support, locale and internationalizion support including localizing string resources, comprehensive resource support, and basic XML parsing. Graphics features include anti-aliased graphics using the Anti-Grain Graphics Library, full affine transformation support, images with direct access to the image's pixel bits. Additional application support features also include undo/redo classes, advanced support for
Model View Controller .
As a general rule, the framework makes as much use as possible of the
Standard Template Library , avoiding duplication of work on things like container classes, or string handling.
Where possible the framework builds on top of the native C++ RTTI support such as using
Dynamic_cast and
Typeid , as opposed to simply re-implementing it.
Most OS objects, such as files, threads, graphics devices, and window controls (or widgets), and so on, are implemented using a thin layer that talks directly to the specific native object. UI controls are not emulated for the most part, instead the framework uses native widgets in most places. Direct access to the underlying OS "handle" is allowed in cases where platform specific functionality is needed, allowing the developer to easily call the platform's native APIs.