For those who are following progress on Graphic-Forms, here's another status report.
One of the major themes for 0.4.0 will be support for custom dialogs, and that is where most of my effort have been devoted since 0.3.0. One of the reasons why this feature has taken so long to appear in GF is that I put a lot of thought into whether to reuse the built-in dialog manager and dialog template mechanisms that Win32 provides.
A discussion of the tradeoffs could occupy a whole separate blog entry, which I think I will indeed write up and post sometime. I'll cut to chase for now and state that I'm using low-functionality to implement proper dialog behavior.
Some other miscellaneous development:
• implemented a layout manager called `heap-layout' whose behavior is to align all the children of a container in a single Z-order-wise column and allow the application to select which of the children are top-most at any given time. This kind of layout is useful when implementing windows with panels containing related functionality, where only one such panel should be visible at a time (think property sheets or wizard dialogs). The user can then flip between panels based on some gesture such as clicking on a tab control.
• implemented event-focus-gain/event-focus-loss for reacting to changes in focus
• fixed some bugs in key event processing that prevented repeated events for untranslateable keys (e.g., function keys F1-F12) from being delivered
• implemented background/foreground color and font customization for labels, with infrastructure put into place for other controls
• added a method to programmatically append separators to menus; this was already possible via DEFMENU but not yet supported for dynamic menu management
• rewrote timer event processing such that GF no longer uses the TimerProc callback technique, but instead each call to the Win32 SetTimer function is made with the handle to a non-visible utility window that the library creates
• fixed some problems with timer initial delays
That's it for now. Happy coding!