SmartWin - C++ Application Development made easy!


SmartWin++ is an idealistic project originally made to fill the gap between MFC/WTL on one side and Qt/wxWindows on the other side.
The original idea was to create an easy way to develop both commercial and open source Windows applications without paying huge amounts of license fees to companies like Microsoft or Trolltech and at the same time be able to keep type-safety and do it in a C++ way rather then in a C way. In fact many of the big known GUI libraries today is more of C libraries then C++ and uses lots of macros and void pointers where they should have used some better constructs.
SmartWin++ philosophically really is about five things:

  • Easy to use!
    You don't have to delete most of your heaped Widgets. You can call "new" as many times as you want to without caring about calling "delete" with some few exceptions (for Widgets that is) and your heaped memory will be "collected" automagically when it's time to collect it!
    And when you create a Control from within your Window class you just call create and all the parent/child logic is automatically handled for you!
  • Easy to learn!
    Everything in SmartWin++ that's "hard" is either typedefed to become easy to understand (like most of the template instantiations) or has another level of abstraction through some helper Facade class.
    Also all the places where you have a certain logic the library does things automatically, like for instance when you create a Button or any other control, you will by default put it into the Window class you create it from!
  • Easy to extend!
    The code is there, the documentation is there and if you want to extend the library it's a walk in the park! (...well, it's pretty advanced C++, but if you're an advanced C++ user you'll pick it up pretty fast...)
    Just use one of the existing Widgets or Aspects as a reference and you can write your own Widgets in less then one day!
  • Minimal overhead!
    What you don't want to use you don't have to pay for!
    Programming is the only place you could "shop" for a network driver and be forced to also take home a Pocket PC Emulator!
    Due to SmartWin++'s template syntax you basically don't link in anything you don't need as you would in other non-template-based libraries...
    If you for instance develop an MFC hello world application you would either have to include a more then 1MB dll or you would have to statically link against MFC making the final execution image HUGE. Even the most trivial MFC application would still have to include things like networking, collections, ActiveX classes etc.
    Even a pretty advanced SmartWin++ application would usually be SIGNIFICANT smaller then the most trivial statically linked MFC application.
    And if you're saying; "Well, you could always link dynamically and add the mfcxx.dll file" then read up on what Microsoft itself itself is saying about "DLL Hell"...
  • Type-safety, type-safety and type-safety!
    SmartWin++ is extremely typesafe!
    Where you could in most other GUI libraries easy get a "Click Button Message Handler" to handle a "Check Box Dropdown Change Message Handler", or maybe find yourself passing around a List View thinking it was a Socket connection (this is a bad thing in case you wondered ;) this would be IMPOSSIBLE to do in SmartWin++! (or at least so difficult to do that you would KNOW you are out on a limb before doing it)
    SmartWin++ have truly typesafe event handler logic.
    Also SmartWin++ doesn't even TRY to be compatible with outdated compilers since this would either compromise the strong typesystem or force us to include some kind of MOC compiler. (MOC compilers is NOT a GOOD thing, it's a compromise between bad and worse!!!)

SmartWin++ is licensed under a pure BSD license which basically means it's totally free. You can develop commercial applications, you can develop non-commercial applications, you can modify it etc...

For details regarding the exact license please look at the license page. Logo