- The VCF's Project Host
   The VCF Website Home   |   Online Discussion Forums   | Project Page   

The VCF Book 0.9.8

Jim Crafton

Legal Notice
Revision History
Revision 0.6.025 March 2003JC
Initial public release
Revision 0.6.212 December 2003JC
Updates for 0-6-3, lots of new, complete, and more improved documentation (all 'cause I remembered to eat my Wheaties!).
Revision 0.6.39 August 2003JC
Updates for 0-6-2
Revision 0.6.42 April 2004JC
Updates for 0-6-4 changes. Added a few more examples
Revision 0.6.58 August 2004JC
Updates for 0-6-5 changes. Added a few more examples. Big thanks to Ed Monjay for starting to help out with the docs. This should make it big improvement in the very near future!
Revision 0.6.616 November 2004JC
Added a few more examples
Revision 0.6.8June 23 2005JC
Added further documentation
Revision 0.9.0March 4 2006JC
Added further documentation, plus new sections for the HTMLKit, InternetKit and OpenGLKit
Revision 0.9.8March 28 2007JC
Added further documentation, plus new sections for the DatabaseKit, RegExKit and JavaScriptKit
Revision 0.9.8November 26, 2007JC
Added new section for XMLKit
Revision 0.9.8April 27, 2008JC
Documentation updates in preparation for the new 0.9.8 release

Table of Contents

1. Introduction to the Visual Component Framework
2. Why use the Visual Component Framework?
1. General
1.1. Features
1.2. Downloading the VCF
1.3. Required Tools
1.4. Installing the VCF
1.4.1. For Win32 systems
1.4.2. For Mac OSX systems
1.4.3. For Linux systems
1.4.4. Third Party Libraries Open SSL on Win32
1.5. Building the VCF
1.5.1. VCF Tools Microsoft Visual C++ 6 Microsoft Visual C++ 7/7.1 Microsoft Visual C++ 2005 8.0 (including Express edition) Apple XCode 1.x Apple XCode 2.x
1.5.2. Building the VCF Libraries Win32 Microsoft Visual C++ 6 Microsoft Visual C++ 7.0 Microsoft Visual C++ 7.1 Microsoft Visual C++ 2005 8.0 Microsoft Visual C++ 6 using the Intel C/C++ compiler Borland C++ Compiler MinGW-GCC compiler with the Code::Blocks IDE Building with Bakefiles The Bakefile utility Patching of the Bakefile utility Environment Variables Baked Make Files Baked Project Files Building Examples Using bakefiles in your own project Regenerating makefiles and VS6 project files All-in-1 VS6 project MacOSX Linux
1.5.3. Library Support by Compiler
1.6. Contributing
1.6.1. Registering at SF
1.6.2. Setting up Subversion
1.6.3. Setting up CVS
1.6.4. Developing in the main VCF source tree
1.7. Standards
1.7.1. Coding and Naming Standards
1.7.2. Documentation Standards and Generation
1.8. Bugs
1.9. Mailing lists
1.10. Forums
2. Getting Started
2.1. A very simple VCF Application
2.2. Understanding the VCF directory tree
2.3. Accessing the Source Documentation
3. Core Libraries
3.1. FoundationKit
3.1.1. Uses
3.1.2. Startup and Shutdown
3.1.3. Command line parameters
3.1.4. VCF::Object - the VCF base class
3.1.5. System Toolkit
3.1.6. Reference Counting
3.1.7. Components
3.1.8. Exceptions
3.1.9. RTTI
3.1.10. Delegates and Callbacks (aka Event Handling)
3.1.11. Multithreaded programming support Synchronization Primitives SynchObjects Waiting for ... Mutexes Semaphores Conditions Threads Thread Manager Run Loops Threaded Functions Thread Pools Asynchronous Delegates
3.1.12. Strings STL usage Data Representation Language Encoding Conversion and Text Codecs Formatting Utilty Functions Trimming Number conversion UUID generation Type ID Formatting
3.1.13. Locales Naming Numeric Formatting Date Time Formatting Collation Translation
3.1.14. Resources Accessing a resource Program Information Platform Specific Platform Neutral
3.1.15. System Functions String functions Filesystem Functions Date/Time Functions Environment Functions Resource functions Locale functions Miscellaneous functions
3.1.16. Dates and Time Data Representation Date Time Spans Iterating String Formatting
3.1.17. Streams Base Functionality Input Streams Output Streams Serializing classes Serializing Variants
3.1.18. Files File Searching
3.1.19. Dynamic Libraries Init and term functions
3.1.20. Processes Process Output
3.1.21. XML Parsing SAX style parsing DOM style parsing
3.2. GraphicsKit
3.2.1. The GraphicsContext
3.2.2. The GraphicsToolkit
3.2.3. Colors
3.2.4. Images
3.2.5. Fonts
3.2.6. Paths
3.2.7. Transforms
3.2.8. Strokes Usage Implementation
3.2.9. Fills Usage Implementation
3.2.10. Image Loading
3.2.11. Exceptions
3.2.12. Peer Classes
3.3. ApplicationKit
3.3.1. Introduction
3.3.2. Applications
3.3.3. UI Toolkit Intro UI Metrics Event Loops Timers Carets Posting Events Default Buttons Accelerators Creating Peers Miscellaneous
3.3.4. Event Loops
3.3.5. Event Types
3.3.6. Drag and Drop
3.3.7. Controls and Containers Control Listing
3.3.8. Borders
3.3.9. Layout Standard Container layout Horizontal layout
3.3.10. Frames, Dialogs, and Windows Dialog usage in VFC Standard Dialogs Custom Dialogs Frame Sizing Frame usage in the VFC Window usage in the VFC
3.3.11. Model/View/Controller Models Items Views Controls Document/View Architecture
3.3.12. Undo/Redo and Commands
3.3.13. Help Implementing Help for Win32 systems Creating the HTML Help project file Adding HTML content Adding Index/Search support Adding a Table of Contents Adding Context Sensitive entries Adding "What's This" entries Compiling the help with the HTML Help Compiler
3.3.14. Control Focus and Activation
3.3.15. Accelerator Keys ("Hot Keys")
3.3.16. Peer Classes
3.4. Component Authoring
3.4.1. Writing a Component
3.4.2. Property Editing Creating a new property editor class Attributes Storing the property's value Retreiving the property's value Sub Properties Multiple values and sorting Painting the display of a property Editing a Property Registering Property Editors
3.4.3. Component Editing Creating a new component editor class Attributes Accessing the Component Instance Providing Commands Editing a Component Registering Component Editors
3.4.4. Saving and Loading Component State
3.4.5. Registering Components Component Info Component Manager
3.4.6. Distributing your Components and Editors VPL Exported Functions VPL Initialization VPL Termination
4. Additional Libraries (usage is optional)
4.1. XML Kit
4.2. HTML Kit
4.3. Internet Kit
4.4. OpenGL Kit
4.5. NetworkKit
4.6. Database Kit
4.7. JavaScript Kit
4.8. RegEx Kit
4.8.1. Usage
4.9. RemoteObjectKit
4.10. ImageFormats
5. Tutorials
5.1. FoundationKit
5.1.1. Strings and characters Strings Concatenating Strings Finding substrings Extracting substrings Formatting with the Format class Strings and other types Extracting type names Changing case Converting types to a String Trimming a String
5.1.2. Dates and times DatesAndTime
5.1.3. Reflection and RTTI Reflection
5.1.4. Events Event Basics
5.1.5. File System handling Files and Directories
5.1.6. Streams
5.1.7. Enumerators Working With Enumerators
5.1.8. Dictionaries Dictionaries
5.1.9. Dynamic Library Loading SharedLibraries
5.1.10. Threads ThreadBasics ThreadsInGUI Conditions
5.1.11. Processes
5.1.12. Internationalization and Unicode Localization
5.1.13. Resource Loading
5.2. GraphicsKit
5.2.1. GraphicsContext GraphicsBasics
5.2.2. Text and Fonts TextLayout
5.2.3. Images ImageBasics
5.2.4. Advanced Graphics and Anti-Aliased support StrokesAndFills GraphicsAndMouseMoves
5.2.5. Affine Transformations Transformations
5.2.6. Printing Printing
5.3. ApplicationKit
5.3.1. Hello World A Hello World application Hello World Part 2 HelloWorld3
5.3.2. Heavyweight vs. Lightweight Controls HeavyAndLight
5.3.3. Alignment, Anchors, and Layouts Alignment AdvancedAlignment Anchors
5.3.4. MVC Basics MVC Basics
5.3.5. Actions Actions
5.3.6. Clipboard Copy And Paste and the VCF Clipboard
5.3.7. Drag and drop DragAndDrop
5.3.8. Cursor handling
5.3.9. Scrolling Scrolling
5.3.10. Image viewer ImageViewer
5.3.11. Lists and combos
5.3.12. Tree view control
5.3.13. Tree list control
5.3.14. Table control
5.3.15. List view control
5.3.16. Dialog Usage Dialogs
5.3.17. Common dialogs (open, browse dir, select color, select font)
5.3.18. Window handling
5.3.19. Labels Labels
5.3.20. Text fields
5.3.21. Progress bar ProgressBars
5.3.22. Menus
5.3.23. Toolbars Toolbars
5.3.24. Table Control Tables
5.3.25. Splitter controls Splitters
5.3.26. Slider Sliders
5.3.27. Application and Window icons ApplicationIcons
5.3.28. Dates and Times UI DateTimeUI
5.3.29. Visual Form Files VisualFormFiles
5.3.30. Advanced User Interface AdvancedUI
5.3.31. Basic Document/View techniques DocViewBasics
5.3.32. Advanced Document/View DocViewAdvanced
5.3.33. System Tray SysTray
5.4. NetworkKit
5.4.1. Basic TCP server
5.4.2. Basic TCP client
5.4.3. UDP
5.5. RemoteObjectKit
6. FAQ
6.1. General
6.2. Installation/Building the VCF
6.3. Contributing
6.4. Libraries
6.5. Miscellaneous
6.6. FoundationKit
6.7. GraphicsKit
6.8. ApplicationKit
6.8.1. MVC
6.9. Component Authoring
6.10. OpenGLKit
6.11. HTMLKit
6.12. InternetKit
6.13. NetworkKit
6.14. RemoteObjectKit
7. Tools
7.1. XMake
7.2. VCF Builder
8. Credits

List of Tables


List of Examples

5.1. Resources Example Code
   Comments or Suggestions?    License Information