KWLib: Windows Class Library

Saturday, February 09, 2002
By keiji
This is a Windows Application Framework to develop Win32 based windows application
When I was interested in windows programming in 1993, I used OWL1.0(Object Windows Library from Borland). After short time I used the library, I got interested in how these library is implemented. I studied how to implement event-driven mechanism into C++ class library. At the same time I felt there are many inconvenience in C++. So I designed some classes such as string, file I/O, container, process/thread, etc. The "KWLib" is a summarization of my classes.
I have been developing this library for many years in my spare time. All of my software are developed using this library.

The reasons why I developed this class library from scratch are as follow:

  • To study mechanism of framework class library.
  • To experiment various implementation method.
  • To experiment various user interfaces.
  • To study various algorithms.


The latest version is kwlib3f-Feb09-2002, which has about 200KLOC (200000 lines of code).
The KWLib is consists of such components as follows:

  • Classes to extend C++
    • KStr: String Class
    • Container Classes
    • FunctionClasses
  • Numerical Computation
    • Multiple-Precision Arithmetic.
  • Process and Thread control
    • KProcess, KThread, KMutex
  • Scripting Engine (KWLib-sh)
  • Classes to develop windows application
    • Windows Class
    • Window's objects (GDI,DIB,etc.)
    • GUI Objects
    • KWLib-GUI Widgets (Button, Menu, Scrollbar, etc.)
      These controls are not wrapper class of existing window's class, but my original controls created from scratch. The reason why I developed them from scratch is to experiment various user interface requirement, which is beyond just modification of existing controls.
    • Print/Preview Component
  • UI Description Language
    • Menu/Toolbar definition
    • Dialog definition
  • Classes expanding the ability of KWLib
    • Image manipulation Class
    • 3D-Graphics Engine (KWLib-3D)