Release 0.5.0 of Graphic-Forms, a Common Lisp library for Windows GUI
programming, is now available. This is an alpha release, meaning that
the feature set and API have not yet stabilized.
Here is what's new in this release:
. SBCL is now supported (specifically version 0.9.15). Graphic-Forms
includes a small patch provided to the SBCL community by
Alastair Bridgewater to enable the stdcall calling convention for
alien callbacks. Please see src/external-libraries/sbcl-callback-patch
. Implemented a plugin mechanism for integrating graphics libraries. This
means that ImageMagick is now optional -- if your application can get
by with just BMP and ICO formats, then the default plugin (which has no
external dependencies) may be used. This feature also allows applications
to integrate other graphics libraries of their choice.
. In addition to ImageMagick now being optional, external library
dependencies have been further simplified. Several small libraries
are now directly bundled with the Graphic-Forms. Cells is no longer
used in the library proper nor in the demos (but may return at a
. Implemented a class called icon-bundle which may be populated with
multiple images and then used to set icon data for window frames.
This includes the concept of there being 'large' and 'small' icon
. Simplified the argument lists for the event-*** generic functions.
Provided gfw:obtain-event-time as a substitute for passing a time
argument to every function (for which the vast majority of methods
had no use).
. Defined the following new generic functions:
* event-session GF so applications can participate in the
WM_QUERYENDSESSION / WM_ENDSESSION protocol.
* event-activate and event-deactivate GFs so applications can respond
to window activation state changes.
* GFs for querying undo and redo state. Implemented corresponding
methods for edit controls.
* GFs for configuring auto-scrolling and scrollbar visibility. Implemented
corresponding methods for edit controls.
* GFs representing text clipboard data convenience functionality.
Implemented corresponding methods for edit controls.
. Made other miscellaneous improvements to flesh out edit control
. Implemented the standard color chooser dialog and associated
convenience macro 'with-color-dialog'.
. Added the macro 'with-graphics-context' as a convenience for code that
needs to instantiate a context outside of event-paint.
. Heavily revised internal layout manager code in preparation for
supporting more sophisticated layouts. A new class called layout-managed
has been created to serve as a mix-in when defining objects (not
necessarily only windows) that have children to be sized and positioned.
. Implemented a new demo program called textedit which is essentially
a Notepad clone. Its purpose is to show off the multi-line edit
control and the standard Find/Replace dialog.
. Upgraded to the latest lisp-unit and changed test loading code so that
unit-tests are no longer compiled.
. Wrote more documentation and reorganized existing content a bit.
Added discussion of certain naming convention choices.
. Made a variety of bug fixes.
The README.txt file in the release zip file also has additional important
information about this release.
Download the release zip file here:
The project website is: