SOL9 C++ Class Library


1 What is SOL9?

SOL9 is one of the simplest C++ class libraries for Windows Vista/XP developers. It is based on author's previous version SOL++2000. A static library compiled on Microsoft Visual Studio 2008 is available, and a lot of sample programs are included.
One of the striking features of SOL9 is the simplicity of handling of Windows events.
Historically, the author started to develop the original SOL++ library about ten years ago. And now here is a new version of SOL9 for Windows Vista/XP on Visual Studio 2008. The SOL9 library is based on the previous SOL++2000. For original SOL++ library, see author's book(Windows95 Super class library, SOFTBANK Japan:ISBN4-7973-0018-3).
The hierarchy of SOL9 is quite similar to that of SOL++2000. But We have introduced a namespace 'SOL' to avoid collision of some class names in Windows API. But basic implementation of SOL9 is same with old SOL++2000. Note that complete compatibility between SOL9 and SOL++2000 is lost on namespace .



2 Download SOL9 Library

SOL9 C++ Class Library for Windows and sample programs are now available. This is a free C++ class library for all Windows programmers.

You can download the latest library and samples:
  • SOL9 C++ Class Library for Windows (sol.zip 1.4MB: #2009.01.03)
  • SOL9 Samples (solsamples.zip 7.4MB: #2009.01.03)



  • 3 Revision History
    10 Oct 2008 Added the following new classes to include\sol:
  • QPEncoder
  • QPDecoder
  • Base64FileEncoder
  • Base64FileDecoder
  • HTMLFileEncoder

  • Added the following new class to include\sol\ole:
  • HTMLParser

  • Updated the following class in include\sol:
  • LogWriter:
  • Modifed the LogWriter class to be able to write binary data in a hex-decimal format.
    Added the following new class to include\sol\net:
  • IPAddressChangeNotifier
  • 17 Sep 2008 Added the following new classes to include\sol:
  • Hyperlink
  • FolderWatcher

  • Added the following new class to include\sol\ole:
  • BrowserEvent

  • Updated the following classes in include\sol:
  • ApplicationView:
  • Added Profile instance variable to store user's application setting such as a window's geometry, a file folder selected in FileDialog. Added two methods saveFileFolder/restoreFileFolder, and modified savePlacement and restorePlacement methods not to take any arguments.
  • FileDialog:
  • Fixed a bug in setValues method.
    06 Sep 2008 Added the following new classes to include\sol:
    MessageFont, CounrierFont, UnderlineFont, HexView ZipFileParser
    11 Aug 2008 Added WindowsFirewall class in include\sol\net.
    Added IHTMLView, HTMLView, COleStorage, COleSite, COleInPlaceFrame classes in include\sol\ole.
    Added HTMLEncoder, HTMLDecoder, SmartPtr, SmartPtrs classes in include\sol.
    29 Jul 2008 Added IPAdapterAddresses class and NetworkInterfaceInfo class in include\sol\net.
    14 Jul 2008 New version SOL9 based on SOL++2000.
    02 Apr 2001 Added ScrolledText.obj and ScrolledRichText.obj to bsol32.lib for Borland C++ Compiler.
    01 Apr 2001 Added getPreferredSize methods to ComboBox and modified setValues and setValues of ListBox and ComboBox. And added a public static variable DEFAULT_WIN_CLASS_STYLE to Application.
    11 Mar 2001 Added new create methods to View, Composite and PopupView to fix bugs in create methods in ModalDialog, ModelessDialog and AboutDialog.
    18 Nov 2000 Updated String and StringBuffer classes.
    27 Jul 2000 Updated some classes to be compiled on Borland C++ Compiler 5.5. Updated AffineTransform and DIBSection classes. Added SpecialFolder, ImageFilter, GrayScaleFilter and HighlightFiler classes.
    02 Jul 2000 Added SystemImageList, IconedFileList and IconedDirTree classes.
    19 Jun 2000 Added a new AffineTransform class.
    16 Jun 2000 Updated DC, Menu and MemoryDC classes and added a new DIBSection class.
    30 May 2000 Fixed a bug on justifyScrollRagne method of Composite class.
    04 May 2000 Added Performance, ProcessList, ProcessInfo and ToolHelp classes.
    20 Feb 2000 Added a constructor without arguments and a create method for View and its subclasses.
    05 Feb 2000 Added LogFile class and DiskSpace class.
    09 Jan 2000 Modified subclasses of CommonDialog to fix a getValues problem.
    05 Jan 2000 Added MediaControlView class for MCIWindow.
    10 Oct 1999 Modified Composite class and PopupView class to fix a layout problem.
    25 Sep 1999 Added DoublyLinkedList class and updated ExtendedComboBox, Thread, ListEntry and ListBox.
    05 Sep 1999 Added Date class and updated InetAddress, Text, RichText, String, StringList and QuickSorter.
    26 Aug 1999 Added Process class and Pipe class.



    4 How to install the SOL9.
    You can get a zip file sol2008.zip by downloading, so you simply unzipp it by WinZip program. For example, by unzipping on the root directory on C drive, you get the three directories:
    C:\usr\include\sol
    - includes all C++ header files for SOL9

    C:\usr\lib
    - includes a static library sol32.lib for Miscrosoft Visual Studio 2008

    C:\usr\src\sol32
    - includes all C++ source files for SOL9, a project file sol32.sln for Microsoft Visual Studio 2008



    5 How to create a new project.

    When you create a new project and compile the program on SOL9 in Microsoft Visual Studio(VS) environment, please note the following rules.

    5.1 You have to specifiy [Multithreaded] runtime library in C/C++ Code generation pane.
    (1) Select [Project] item in the menubar of VS.
    (2) Select [Setting] item in the pulldown menu dispayed by (1).
    (3) Select [C/C++] tab in the rightside pane of the dialogbox displayed by (2)
    (4) Select [Code generation] item in the combobox for [Category] item in the pane displayed by (3).
    (5) Select [Multithreaded] item in the combobox for [Runtime Library] item in the pane displayed by (4).

    5.2 You have to set correct paths for include files and a library file of SOL9.
    (1) Select [Tool] item in the menubar of VS.
    (2) Select [Option] item in the pulldown menu displayed by (1)
    (3) Select [Directory] pane the dialogbox displayed by (2).
    (4) Add the path for SOL9 include files in th listbox displayed by selecting [include files] item in the combobox of [Directories]. Maybe you add a line something like this.
        c:\usr\include
    (5) Add the path for a SOL9 library file in th listbox displayed by selecting [library files] item in the combobox of [Directories]. Maybe you add a line something like this.
        c:\usr\lib

    5.3 You have to specifiy the libraries [sol32.lib comctl32.lib ws2_32.lib version.lib] in linking.
    (1) Select [Project] item in the menubar of VS.
    (2) Select [Setting] item in the pulldown menu dispayed by (1).
    (3) Select [Link] tab in the rightside pane of the dialogbox displayed by (2).
    (4) Select [General] item in the combobox for [Category] item in the pane displayed by (3).
    (5) Insert the libraies [sol32.lib comctl32.lib ws2_32.lib version.lib] into the text field of name [Object/Libray/Module].

    Please don't forget to write Main (not main) function in your program, because it is a program entry point of SOL9.


    Last modified: 12 Jan 2009