SmartWin++ / News: Recent posts

New Developer!

Peter Kuemmel (I hope I'm spelling it right) has done a marvelous job in porting the code to both MSVC8 (Express Beta) and GCC/MingW.
He has fixed a TON of hidden bugs in the process (places where MSVC7.1 worked but shouldn't have compiled the library due to standard issues)
Now we are 5 active developers on the project and the library (in the CVS) is beginning to become extremely mature!
I can't guarantee that we will have a working gcc/MingW version in the 1.0 release, but we will be very much closer then ever before.
Also thanx to Wine there might actually come an xNix version of the library some day in the future since if anything compiles in gcc/MingW there is a big chance of it being compilable also in Wine with minor modifications.
This will be a priority in the future.
Next to fixing the "this null pointer" problem in event handlers for children of child and Modal Dialogs it is at least my biggest priority.
Stay tuned for more upcoming goodies!... read more

Posted by Thomas Hansen 2005-03-21

Context Sensitive Menus

Andrew submitted to the CVS support for showing Context Sensitive Menus or TrackPopupMenus!
This means that you can for instance handle the "onRightMouseDown" and show a context sensitive menu.
The library doesn't differentiate between normal menus and popup menus at all, meaning you can actually reuse the same menu as both a normal menu and as a context sensitive menu.
Also you can choose to use the already declared event handler for the menu item or you can choose to show it in "modal" style, meaning it'll return the menu identifier back to the caller when the user have done a choice.

Posted by Thomas Hansen 2005-02-26

SignSlots finished!

Sigslots is 99.9% finished in the CVS and the results are promising!
First of all it's trivially to create custom widgets with custom event handlers since you can "plug in" message handlers easily with help of sigslots.
We've in fact added another unit testing sample project which demonstrates exactly that.
You can easily extend SmartWin and handle messages which SmartWin wasn't originally made to handle!
Also lots of things have happened with the canvas classes, Andrew have been really busy here and created lots of new features in them, I figure it won't be really long before we can actually push the library into the "1.0" release.
I know I've promised this for quite some time, but the sigslot implementation was the one big missing feature and is practically finished, so now only "easy" tasks remain before we're finished to the 1.0 release.
Great things are happening, make sure to follow up on us.... read more

Posted by Thomas Hansen 2005-02-26

New Developer

Derek Graham has joined our team and will for a starter work with Modal Dialog Boxes!
He has very good knowledge of Continues Integration, Unit Testing and general XP methodology in addition to having been a member of for 10 years!
So I think he'll be a good resource for the rest of us and help drive the development of the library further!
Welcome Derek!


Posted by Thomas Hansen 2005-02-24

Sigslots XXMMXIVVII (... ;)

Sigslot code has HIT THE FENCE!
Meaning it's actually existing SigSlot code IN THE CVS!!
I've been working with Sergey on a sigslot implementation now for ages, and finally we've actually done a rudimentary implementation of them!
For now it's only one aspect which supports them (the rest are still stuck in the "gigantic switch" world) but in very little time all Aspects and Widgets will implement their message logic with sigslot code!
Me and Sergey have been working on encapsulating the aspect/widget classes with some sort of signalling logic now for more then 6 months and finally we're beginning to actually see results...
I feel Greeeaaat!... read more

Posted by Thomas Hansen 2005-02-21


I just today got some code from Sergey which will be the base for the new SigSlot implementation!
And it looks GREAT!
I've been talking about SigSlots for almost half a year now, but nothing has really been hitting the code, but finally it looks like we're gonna get somewhere within a week or two...
All though this code will probably have to stay in the CVS for some time before we can create a new release with it since it pretty drastically changes the library and I want to make sure it's stable before it hits the download area...
Anyway, thing are happening now!
With Andrew doing lots of canvas stuff and updating those classes and Sergey been really busy with SigSlots it looks like we're really staarting to pick up momentum here!... read more

Posted by Thomas Hansen 2005-02-17

New Developer on board!

Greetings to Andrew Webb which after helping me out finding a zillion bugs eventually decided to jump onto the project!
He is now a member of the developer team and we expect great things of him!
I'd also like to thank Kostas Vlahavas for using the library in his school projects and thereby helping us track down lots of bugs and give us lots of feature requests/ideas!
He was the only student in his class given the best grade (he used SmartWin for all of his projects, ring a bell anyone...? ;)
Congratulations and thank you for hanging in with us here!
I expect to start up some more developing on SmartWin within February and I will focus on getting bugs fixed and implementing a sig/slot system, expect this to come around early March...
Well, that's it for now folks!... read more

Posted by Thomas Hansen 2005-01-31


I am working with Whidbey support at the moment.
For those who don't know, Whidbey is Microsofts newest "compiler family member", it's also called Visual Studio 2005 and is a major C++ upgrade and much more conforming to the C++ standard then Visual C++ 2003!
Since SmartWin is allmost 100% conforming from before I expect "Whidbey conforming" code to hit the CVS within a day or two (I've allready done 80% of the work, and I've been working on it for two hours!!)
There will however be some changes in client code (probably) since for one you can't name a method pointer (member method or static/global) without "fully qualifying" it...
This means that if you have got for instance a class called "MyWidget" where you have an "onClosed" event handler called "closingWidget" and have defined the onClosed event handler like "this->onClosed( closingWidget );" you'll have to rewrite it to "this->onClosed( &MyWidget::closingWidget );"
And off course I can't know if you have gone havoc with the C++ standard in your own application code...
But if you haven't (gone havoc!) it'll probably be easy to update your code to be compiled in Whidbey since also the 2003 compiler is a very good and conforming compiler...
So great news, find your Whidbey beta compiler (if you have one) and start making SmartWin applications! (soon)
:)... read more

Posted by Thomas Hansen 2004-12-02

New Release!!

I HAD to release a new version since the 0.995 version was pretty buggy, the last one 0.996 has passed EVERY SINGLE test (also those I didn't run with the 0.995 version ;) so it should be way more stable and way less buggy.
The bug that made WidgetFun not run is removed for one and the bug that made applications which have a menu "hang" in release builds (the process never died in release builds) are removed.
Several other bugs are also removed and there is even a couple of NEW FEATURES...
There is now a WidgetTabSheet which is a very naive implementation of a Tab Control in which you have to do the logic of changing content yourself but you have lots of styles and events to ensure you're guided to do the right thing.
Look at the "Unit Test" called WidgetTabControl to get a perspective on how it's supposed to be used...
And SmartWin now has support for * threads *!
You can call fork on a Widget and submit your own function with a parametrized parameter (can be anything you want) and it will fork the thread of execution into two threads (one existing which you have from before and another "working" thread)
There are like in all other thread enabled libraries however several concerns to using threads, e.g. all threads must finish before application can be closed and you might experience problems if you do GUI in both threads etc...
But there is a sample project utilizing multiple threads which "does it the right way" for you people to look at if you want to do threads (the sample project even does GUI in several threads...)
However be warned, doing GUI in more then one thread is in general terms a sign of "bad design" and should be avoided unless you have VERY STRONG arguments for actually doing it!!... read more

Posted by Thomas Hansen 2004-11-29

Projects that uses SmartWin

There is now a link to a page that lists the different projects I know of which utilizes SmartWin, all though it's pretty short for now, in fact it's VERY short right now since there is no more then ONE project, but somewhere I have to start...
Anyway, Andrew has even compiled a little review of the library and has a Text Editor which shows some different aspects of SmartWin so it's worth while a look!... read more

Posted by Thomas Hansen 2004-11-29

SmartWin Mailing List...

For those who haven't discovered it yet, there is a mailing list for SmartWin in which you can subscribe for at
The list is about everything that have to do with SmartWin and is ment as a general discussion place for SmartWin related issues, here we can debate upcoming features, bugs, help eachother out and all other SmartWin related things.
There hasn't been very many postings to this list which I suspect has to do with the fact that not many users of SmartWin are aware of it's existance, I hope this can change and that users can begin to use the list for what it's worth!... read more

Posted by Thomas Hansen 2004-11-22

Signals and Slots or "the art of system architecture"...

Most people associates a working sigslot implementation with Qt signals and slots, mostly because they were the first one with a working implementation but...
While Qt certainly use signals and definitely use slots trolltech choose to build their sigslot implementation with the help of the MOC compiler.
This is far from the optimal solution and why trolltech chooses to use this approach today with so many conforming compilers or almost conforming compilers is for me a mystery.
Anyway Sergey is at this time working on a sigslot implementation for our 1.0 release without even breaking any parts of the standard whatsoever!
Basically what this means for the average SmartWin user is only increased flexibility.
First of all we're replacing every single event with a signal and every single event handler with a slot!
We will keep the existing onXXX functions to set these slots, but it will be possible to add up slots the "real" way too!
Not only that but as an extra bonus you can define your own signals and your own slots and connect with eachother and fire from any other part of the code and get your custom slot executed!
An maybe the most interesting thing for "hard core" users of SmartWin is the possibility to extend SmartWin without touching the library internals at all!
You can after this is in place create your own widget with it's own aspects and just "plug into" SmartWin and count on that their messages will be dispatched and fired once they're supposed to!
Now THAT is what I call flexibility!
Sergey, thank you!
:)... read more

Posted by Thomas Hansen 2004-11-16

Interested in projects using SmartWin!

Hello everybody, I am interested in knowing about projects which are using SmartWin.
The reason is that I want to build a "Projects which utilize SmartWin" section at the website.
So for everybody out there who have a project which is using SmartWin (and have a website for the project) please send me a link to the website which summarize the project and write some few words what the project is about and I'll (probably) add up a link to your website at the SmartWin website!... read more

Posted by Thomas Hansen 2004-11-15

WidgetTabSheet is here!

I've pushed it forward in about a years time now, but finally I got the "drive" to implement it and put it into the CVS!
There is now a class (in the CVS) called WidgetTabSheet which wraos a "naive" tab control for usage in SmartWin...


Posted by Thomas Hansen 2004-11-11

Downloadabel documentation!

Finally, downloadable docs are here, for now only in chm format (windows help file) but I'm investigating other formats, e.g. pdf and postscript.
If there are some Doxygen gurus out there which would want to contribute and get their names in the "Hall Of Fame" please toss me a note!


Posted by Thomas Hansen 2004-11-07

Release 0.995

Finally, the last release before the 1.0 version...
It's specced with features and bugfixes, to name them all would take a book, but basically it's more stable, less buggy, more intuitive, cleaner code, more example code and more features!


Posted by Thomas Hansen 2004-11-07

Status... in WidgetStatusBarSections is here for one!

Yes, there is now a class (typedefed in WidgetFactory) as WidgetStatusBarSections!
And there is lots of things happening at the moment, e.g. Sergey is looking at implementing sigslot as mesage handling system, meaning a MUCH more flexible and versatile message handling system!
For now this is only in the CVS but in some few *hours* (I hope) it will be in the latest release; "0.995".... read more

Posted by Thomas Hansen 2004-11-06


Sergey kickstarted me just recently and made me make some brushups to the library and the code.
I've added up an AspectUpdate which means you can trap update events in (for now) the WidgetTextBox...
An update event is raised when the text of the WidgetTextBox changes...

Sergey also has fixed several bugs the last days, e.g. the Unicode conversion from char to wchar_t now works thanks to Sergey and he also came up with the idea of having two functions for setting the icon, (setIconSmall and setIconLarge)...
Sergey really has ben making a difference these last days!
Good work Sergey!
:)... read more

Posted by Thomas Hansen 2004-10-22

We're looking for developers, seniors and juniors

SmartWin is recruiting!

We need:
* Skilled C++ developers
* Skilled Windows API developers
* People willing to do some logistic regarding new releases and some small updates to the website...

The two first are pretty easy to understand but the last position would be suited for a junior developer willing to do som "dirty work".
E.g. making new releases and doing som minor updates to the website etc...
Skills here would be e.g. some HTML, some knowledge about the sourceforge system and a tiny bit of xNix bash knowledge...
Your first task would be to make a new release + documentation and do some minor updates to the website.... read more

Posted by Thomas Hansen 2004-10-01

Release Version 1.0 is delayed...

I've decided to do a temporary release between the 0.99 and 1.0 version, therefor I will in some few weeks submit a 0.995 version.
This may sound funny, but I don't want to take the library into the "release" modus too early.
Also I am seriously refactoring ALOT these days and I want to be sure that it's the BEST when I finally push it into "release" modus.

Posted by Thomas Hansen 2004-08-21

CVS and WidgetMDI...

I've (finally) after more then 2 weeks of nagging at poor Burley (Burley is a technician at sourceforge) managed to get the CVS updated with the new hierarchy meaning that the CVS tree structure is totally refactored so that now it shows SmartWin as the real library (an not SmartWinNew) and also all the "deprecated" files are removed!

Also I've managed to put up a "semi solution" to the MDI problem, this one WILL be refactored so DON'T count on it being the way it is now though...... read more

Posted by Thomas Hansen 2004-08-01

MDI (Multi Document Interface) support!

SmartWin has just gotten MDI support!
A new Widget called WidgetMDIParent can add up WidgetWindows and have them as MDI children!

Coming up in 1.0 release!

Posted by Thomas Hansen 2004-07-25

Two new Wigets!

I've added up two new Wigets, Slider (TrackBar) and Spin Control.
Both Widgets are for now only on my harddrive (I'm trying to get sourceforge to change the CVS server files since I need to remove/rename files) but will make it to the 1.0 release.

Posted by Thomas Hansen 2004-07-25

CommandLine params are here!

Now you can access the CommandLine through the Application object.
The code are for now only in the CVS but will make it to the 1.0 release!

getCommandLine (accessible from Application::instance().getCommandLine() ) will return a CommandLine object which can give you both a vector of strings (containing parsed Command Line Parameters) and the "raw" command line string!

Posted by Thomas Hansen 2004-07-21

Added up a SmartWin Mailing List!

The list is supposed to be about general stuff on SmartWin (meaning ** verything ** ;) )
If you have a question about SmartWin implementation, need support or just want to keep track of the project you can subscribe to the mailing list from HERE:

Posted by Thomas Hansen 2004-07-15