SmartWin - C++ Application Development made easy!

Why yet another GUI library?

There exists virtually hundreds of GUI libraries! Some are portable; others are not. Some are small; others try to perform every task from creating Widgets (GUI elements) to doing HTTP and even walking your dog!
SmartWin++ is mostly not portable, you can use it to create applications for Windows 95/95/ME, Windows NT/2000/XP/2003 and Windows CE but no native *Nix support exists. You may use WineLib in combination with SmartWin++ and have success, but for now this is an unsupported platform.


So what does SmartWin++ bring to the table that other GUI libraries don't already have? First of all type-safety! Type-safety, type-safety and yet again a little bit of type-safety! In C++ one of your biggest "features" is that you can pass an object of type "bird" into a function and rest assured that your compiler is gonna throw up if your function tries to treat that object as a "submarine".
This is a FEATURE!
A very GOOD feature too!!
While other libraries may not be as restrictive, SmartWin++ will NOT let you pass an object of type X and let you treat it as if it was of type Y instead! You might be surprised how many libraries have bad type-safety support. For instance, try this in your MFC library:
CToolbar x;
delete x;
CString y;
delete y;
It actually compiles!! ;)
SmartWin++ has few implicit conversions, uses explicit constructors where single argument constructors exist and few macros! This makes SmartWin++ type-safe!

No extra "special compilers"

SmartWin++ doesn't contains any "magical extra compilers", if it isn't in the C++ language it isn't in SmartWin++! While many other GUI libraries depend on special "extra" compilers to parse "special syntax files" or "special compiler directives" SmartWin++ uses 100% C++, nothing more and nothing less! This means the code can be read without having to learn a new "extra" language or some "special compiler directives" etc. This makes reading and debugging the code much easier!

C++ and NOT C

SmartWin++ uses C++ in as many places as it can! If some class exists in the standard or some construct exists in the language SmartWin++ uses this construct! SmartWin++ does NOT make ANY compromises towards letting your "favorite 15 years old compiler" compile its code! It uses std::string, std::vector and templates instead of macros where possible! This means that, except for GCC 3.4.x and later and VC++7.1 and later, it's difficult to compile SmartWin++ applications today! We believe that STL and Boost are good tools and should be used in favor of creating your own bug-prone classes to substitute them! If it exists in Boost or in STL it does NOT exist in SmartWin++!! :)


SmartWin++ does NOT try to solve your marriage problems. It cares only about GUI. If you need a network library, search elsewhere. SmartWin++ will not solve your TCP/IP problems or your HTTP problems or your Dijkstra's Extra problems! SmartWin++ is about GUI, nothing more, nothing less! We try to be the best in ONE area which is GUI development! This makes the library small, slick, fast and good looking! ;)


SmartWin++ is almost 100% template-based! This means it will not compile anything you don't use! If you don't use a WidgetDateTimePicker you will not pollute your executable with that specific class! This makes your final executable application small and light-weight!


SmartWin++ has extremely nice looking code, though pretty advanced since it utilizes some serious meta programming constructs like Policy Based Design and template-template arguments etc. There's twice as many lines of comment in the library as actual code! This means that we, the library developers, may easily add features and fix bugs. You as a user of SmartWin++ will gain by faster releases and faster development pace in the library! In fact the code is almost religious towards OAOO (Once And Once Only) to such an extent I doubt you'll be able to count more then 25 000 lines of code where 3 quarters are formatting and comments! Pretty impressive for a library with more then 30 Widget types and more than 100 functions on average for each Widget type!!

Modern Design

SmartWin++ is designed by the lessons learned from Andrew Koenig, Scott Meyers, Andrei Alexandrescu and the rest of the people behind the C++ In Depth Series books! It uses few macros, STL, Boost, Policy-Based Design and templates where possible and adequate!

Static Linking

There is no huge DLL to distribute if you choose to use SmartWin++! SmartWin++ uses static linking which makes it fast and free of "DLL Hell" (google for "DLL hell" if you're in doubt) Though if you want to you could create a DLL of the library and link dynamically but we advise you NOT to since it's a bad practice!

Easy to Learn

SmartWin++ is extremely easy to learn. All Widgets are automatically "collected" when they are destroyed and you don't have to explicitly delete your Widget pointers! In fact you CAN'T delete your Widget pointers since all destructors are protected! ;) In addition there are tons of helper constructs to ease the initial learning curve behind SmartWin++ in addition to tons of sample applications and documentation and tutorials for newbies!

Windows CE

SmartWin++ can build Windows CE applications! There exists not many GUI libraries today which can actually successfully build Windows CE applications. Maybe two or three other mature GUI libraries have true Windows CE capabillities today! SmartWin++ can compile the same code on Windows CE or Pocket PC as it compiles for your desktop system as long as you follow some few guidelines!
(Read the Wiki)

SmartWin++ is FREE

Free as in "Free Speech" and Free as in "Free Beer"!
Nothing more, nothing less!
SmartWin++ uses the least restrictive Open Source license which exists (BSD License) which basically means; "Do as you please"!
Most other GUI libraries either are GPL licensed, cost you big money or have some obscure license which makes it unusable for development of commercial "closed source" applications!
SmartWin++ license basically more or less says; "Do as you please"! :)

These are SOME of the features and qualities SmartWin++ brings to the table. You can see that SmartWin++ has proven its right to live and be your first choice when considering your next Windows Desktop- or CE-based application!

Happy SmartWinning! :) Logo