|
Boost : |
From: Terje Slettebø (tslettebo_at_[hidden])
Date: 2003-08-02 12:39:48
>From: "Edward Diener" <eddielee_at_[hidden]>
> Add to this the fact that nearly every C++ programmer already works with a
> framework library depending on his implementation of choice. On Windows
> alone I know of WTL, ATL, MFC, OWL, VCL, wxWindows, QT, and no doubt
others
> about which I have no knowledde, each tied very closely to a particular
C++
> compiler, IDE, and implementation.
I just wanted to point out that several of these, Qt and wxWindows, are
cross-platform, so they are not tied to any specific compiler or platform.
wxWindows is also Open Source, and I've good experience with the little I've
used it. It's very easy to get up and running with it (at least it was on
Windows).
wxWindows is a wrapper for the native GUI API, while Qt emulates each GUI,
using only the low-level graphics API.
wxWindows could have been a candidate for Boost, had it not used "stone age"
C++ - no templates, exceptions and namespaces (essentially "C with Classes"
stage), to cater for a very broad range of compilers, even compilers such as
MSVC 4 (!). There are plans to change this, though
(http://www.wxwindows.org/roadmap.htm). To quote:
--- Start ---
Release 2.6.0 (stable)
Release date: end of September 2003
Release 3.0.0 (stable)
This release should finally mark the end of support for the antiquated
compilers without decent support of the modern C++ features such as
templates, exceptions and namespaces. wxWindows containers should be
replaced with the corresponding standard library classes and
std::basic_string<> should be used instead of wxString.
--- End ---
wxWindows also has 10 years of experience behind it, and an active developer
community.
Regarding what Dave Abrahams said in another posting about lack of templates
(regarding FLTK) meaning that smart pointers can't be used - well, in this
case, there are no exceptions, either, so you avoid problems with leaks from
exceptions. :)
Another note: The library is not a "lowest common denominator" library when
it comes to features. There's a core set of components, such as controls,
that are portable, but it also allows controls only available on one
platform. Thus, it's up to the user how portable, or platform-specific, they
want the application to be.
Hopefully, this may give some ideas in the debate.
Currently, Windows, Mac and Linux is supported, and an emulated version,
wxUniversal (like Qt is doing it) is also worked on, e.g. for embedded use
(http://www.wxwindows.org/wxuniv.htm).
As to the discussion of encoding the layout in code, or using some sort of
resource files, I think resource files may be preferrable for a few reasons:
- You don't have to recompile the program for every GUI change, when
designing the GUI
- It's usually easier to make GUI designing programs for resource files,
than ones generating source code. Besides, would you like "wizard-code" in
your program, a la MFCs or Javas?
- The layout and content may be changed at run-time, for example for
localisation or customisation. No need for recompiling a client's code; just
replace the resource files.
Often, someone else but the programmer, a designer, makes the GUI design,
and they should not have to be programmers. The same goes for web GUIs - a
typical way of doing it is having a designer create the HTML, which is then
used as some sort of template in the system, filling it in and transforming
it, e.g. using PHP.
Regards,
Terje
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk