]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/html/faqgen.htm
updated the year
[wxWidgets.git] / docs / html / faqgen.htm
index 0c14ce0fe1762007d0fcc6de2137aa2ee2533495..a0de58ca37333d3cb872edc2c7fe30083d47de95 100644 (file)
@@ -5,15 +5,15 @@
 <TITLE>wxWindows 2 FAQ: General</TITLE>
 </HEAD>
 
-<BODY BGCOLOR=#FFFFFF TEXT=#000000 LINK=#FF0000 VLINK=#000000>
+<BODY BGCOLOR=#FFFFFF TEXT=#000000 VLINK="#00376A" LINK="#00529C" ALINK="#313063">
 
 <font face="Arial, Lucida Sans, Helvetica">
 
-<table width=100% border=0 cellpadding=5 cellspacing=0>
+<table width=100% border=0 cellpadding=3 cellspacing=0>
 <tr>
-<td bgcolor="#C4ECF9">
-<font size=+1 face="Arial, Lucida Sans, Helvetica" color="#000000">
-wxWindows 2 FAQ: General
+<td bgcolor="#004080" align=left height=24 background="images/bluetitlegradient.gif">
+<font size=+1 face="Arial, Lucida Sans, Helvetica" color="#FFFFFF">
+<b>wxWindows 2 FAQ: General</b>
 </font>
 </td>
 </tr>
@@ -26,16 +26,21 @@ See also <a href="faq.htm">top-level FAQ page</a>.
 <h3>List of questions in this category</h3>
 <ul>
 <li><a href="#whatis">What is wxWindows?</a></li>
+<li><a href="#licence">Can I use wxWindows 2 for both proprietary projects, and GPL&#39;ed projects?</a></li>
+<li><a href="#support">Is there support?</a></li>
 <li><a href="#users">Who uses wxWindows?</a></li>
-<li><a href="#platforms">What platforms are supported by wxWindows 2?</a></li>
-<li><a href="#specific">How does wxWindows support platform-specific features?</a></li>
+<li><a href="#platforms">What platforms are supported by wxWindows?</a></li>
+<li><a href="#specific">How does wxWindows support platform-specific features?</a></li>
 <li><a href="#stl">Does wxWindows use STL? or the standard string class?</a></li>
-<li><a href="#richedit">Is there a rich edit/markup widget for wxWindows 2?</a></ li>
-<li><a href="#dev">How is wxWindows 2 being developed?</a></li>
-<li><a href="#distrib">How is wxWindows 2 distributed?</a></li>
+<li><a href="#richedit">Is there a rich edit/markup widget for wxWindows?</a></ li>
+<li><a href="#exceptions">How to use C++ exceptions with wxWindows?</a></ li>
+<li><a href="#dev">How is wxWindows being developed?</a></li>
+<li><a href="#distrib">How is wxWindows distributed?</a></li>
 <li><a href="#future">What are the plans for the future?</a></li>
+<li><a href="#base">What is wxBase?</a></li>
 <li><a href="#univ">What is wxUniversal?</a></li>
 <li><a href="#jave">What about Java?</a></li>
+<li><a href="#dotnet">What about .NET/Mono?</a></li>
 <li><a href="#help">How can I help the project?</a></li>
 </ul>
 <hr>
@@ -46,15 +51,16 @@ wxWindows is a class library that allows you to compile graphical C++ programs o
 different platforms. wxWindows defines a common API across platforms, but uses the native graphical user interface (GUI) on each platform,
 so your program will take on the native &#39;look and feel&#39; that users are familiar with.<P>
 
-Although GUI applications are mostly built programmatically, there is a dialog editor to help
+Although GUI applications are mostly built programmatically, there are several dialog editors to help
 build attractive dialogs and panels. Robert Roebling&#39;s <a href="http://www.roebling.com">wxDesigner</a>
-makes light work of resizable, portable dialogs.<P>
+and Anthemion Software's <a href="http://www.anthemion.co.uk/dialogblocks/" target=_new>DialogBlocks</a>
+are two commercial examples, but there are others: see the <a href="lnk_tools.htm">Useful Tools</a> page.<P>
 
 You don&#39;t have to use C++ to use wxWindows: there is a <a href="http://wxpython.org">Python interface</a> for wxWindows 2,
 and also a <a href="http://wxperl.sourceforge.net" target=_top>Perl interface</a>.
 <P>
 
-<h3>Can I use wxWindows 2 for both proprietary (commercial) projects, and GPL&#39;ed projects?</h3>
+<h3><a name="licence">Can I use wxWindows 2 for both proprietary (commercial) projects, and GPL&#39;ed projects?</a></h3>
 
 Yes. Please see the <a href="newlicen.htm">licence</a> for details, but basically
 you can distribute proprietary binaries without distributing any source code, and neither will wxWindows
@@ -64,7 +70,7 @@ The conditions for using wxWindows 2 are the same whether you are a personal, ac
 or commercial developer.
 <P>
 
-<h3>Is there support?</h3>
+<h3><a name="support">Is there support?</a></h3>
 
 No official support, but the mailing list is very helpful and some people say that
 wxWindows support is better than for much commercial software. The developers are
@@ -81,6 +87,9 @@ quite large for a list of this type.<P>
 
 See <a href="users.htm">Users</a> for a list of some users and their applications, and
 also <A href="feedback.htm">Feedback</a> for comments.<P>
+Our highest-profile user yet is industry veteran and Lotus Corp. founder Mitch Kapor
+and his <a href="http://www.osafoundation.org" target=_new>Open Source Applications Foundation</a>.
+<P>
 
 <H3><a name="platforms">What platforms are supported by wxWindows 2?</a></H3>
 
@@ -159,10 +168,9 @@ or by adding this to a header before you include any STL files:<P>
 These are the possibilities so far:<P>
 
 <ul>
-<li>The richedit sample has a text editor that does markup.
 <li>See <a href="http://www.scintilla.org" target=_top>www.scintilla.org</a> for
-a very nice syntax-highlighting editor widget. Robin Dunn is writing a wxWindows wrapper
-for this widget.
+a very nice syntax-highlighting editor widget. Robin Dunn has written a wxWindows wrapper
+for this widget, available in the wxWindows distribution under contrib/src/stc.
 <li>If you only need to display marked-up information, rather than edit it,
 then wxHTML will suit your needs. wxHTML is built into wxWindows - please see the reference
 manual for details, and samples/html.
@@ -172,29 +180,57 @@ no wxWindows wrapper for these (but text attribute functions are being added in
 
 <P>
 
-<H3><a name="dev">How is wxWindows 2 being developed?</a></H3>
+<h3><a name="exceptions">How to use C++ exceptions with wxWindows?</a></h3>
+
+wxWindows library itself is unfortunately <i>not</i> exception-safe (as its
+initial version predates, by far, the addition of the exceptions to the C++
+language). However you can still use the exceptions in your own code and use
+the other libraries using the exceptions for the error reporting together with
+wxWindows.
+
+<p>
+There are a few issues to keep in mind, though:
+<ul>
+    <li>You shouldn&#39;t let the exceptions propagate through wxWindows code,
+        in particular you should always catch the exceptions thrown by the
+        functions called from an event handler in the handler itself and not
+        let them propagate upwards to wxWindows.
+
+    <li>You may need to ensure that the compiler support for the exceptions is
+        enabled as, considering that wxWindows itself doesn&#39;t use the
+        exceptions and turning their support on results in the library size
+        augmentation of 10% to 20%, it is turned off by default for a few
+        compilers. Moreover, for gcc (or at least its mingw version) you must
+        also turn on the RTTI support to be able to use the exceptions, so you
+        should use <tt>--disable-no_rtti --disable-no_exceptions</tt> options
+        when configuring the library (attention to the double negation).
+</ul>
+
+<p>
+
+<H3><a name="dev">How is wxWindows being developed?</a></H3>
 
 We are using the <a href="cvs.htm">CVS</a> system to develop and maintain wxWindows. This allows
-us to make alterations and upload them instantly to the SourceForge server, from
+us to make alterations and upload them instantly to the server, from
 which others can update their source.<P>
 
 To build source from CVS, see the file BuildCVS.txt in the top-level wxWindows distribution
 directory.<P>
 
-<H3><a name="distrib">How is wxWindows distributed?</a></H3>
+<H3><a name="distrib">How is wxWindows distributed?</a></H3>
 
 By ftp, and via the <a href="cdrom2.htm">wxWindows CD-ROM</a>.
 <P>
 If you are feeling adventurous, you may also check out the sources directly
-from the <a href="cvs.htm">cvs</a>
+from <a href="cvs.htm">cvs</a>.
 <p>
 
 <H3><a name="future">What are the plans for the future?</a></H3>
 
-Currently we&#39;re working too hard on getting wxWindows finished (are GUI toolkits ever
+Currently we&#39;re working too hard on getting wxWindows finished (are GUI toolkits ever
 finished?) to think very far ahead. However, we know we want to make wxWindows as robust
 and well-publicised as possible. We also want to aim for better platform-independence of
-resources such as icons and bitmaps, standardising on the PNG for all platforms.<P>
+resources such as icons and bitmaps, standardising on PNG and XPM for all platforms.<P>
 
 Other possibilities include: DCOM/CORBA compatibility; a wxWindows book;
 <a href="http://wxworkshop.sourceforge.net/">wxWorkshop</a>, an IDE;
@@ -206,12 +242,24 @@ their product.<P>
 The high-level goal of wxWindows is to be thought of as the number one C++ framework,
 for virtually any platform. Move over, MFC!<P>
 
+<h3><a name="base">What is wxBase?</a></h3>
+
+wxBase is a subset of wxWindows comprised by the non-GUI classes. It includes
+wxWindows container and primitive data type classes (including wxString,
+wxDateTime and so on) and also useful wrappers for the operating system objects
+such as files, processes, threads, sockets and so on. With very minor
+exceptions wxBase may be used in exactly the same way as wxWindows but it
+doesn&#39;t require a GUI to run and so is ideal for creating console mode
+utilities or server programs. It is also possible to create a program which can
+be compiled either as a console application (using wxBase) or a GUI one (using
+a full featured wxWindows port).
+
 <H3><a name="univ">What is wxUniversal?</a></H3>
 
-wxUniversal is a new port of wxWindows being currently actively developed. The
-main difference is that wxUniversal implements all controls (or widgets) in
-wxWindows itself thus allowing to have much more flexibility (i.e. support for
-themes even under MS Windows!). It also means that it is now much easier to
+The main difference between wxUniversal-based ports (such as wxX11, wxMGL) and other ports (such as wxMSW, wxGTK+, wxMac)
+is that wxUniversal implements all controls (or widgets) in
+wxWindows itself thus allowing to have much more flexibility (for example, support for
+themes even under MS Windows). It also means that it is now much easier to
 port wxWindows to a new platform as only the low-level classes must be ported
 which make for a small part of the library.
 <p>
@@ -223,11 +271,47 @@ The Java honeymoon period is over :-) and people are realising that it cannot
 meet all their cross-platform development needs. We don&#39;t anticipate a major threat
 from Java, and the level of interest in wxWindows is as high as ever.<P>
 
+<H3><a name="dotnet">What about .NET/Mono?</a></H3>
+
+Microsoft is spending a lot on promoting the .NET initiative, which
+is a set of languages, APIs and web service components for Windows.
+Ximian has started an open source version of .NET, mostly for Linux.
+C&#35; is Microsoft's alternative to Java, supporting 'managed code',
+garbage collection and various other Java-like language features.<P>
+
+Although this may be attractive to some developers, there
+is a variety of reasons why the .NET/Mono combination is unlikely
+to make wxWindows redundant. Please note that the following comments
+are Julian Smart's opinions.<P>
+
+<ol>
+<li>Not everyone wants or needs net services.
+<li>C++ will be used for a long time to come; compared with C++, C&#35; is a recent development and its future is not certain.
+<li>Mono Forms may only target Winelib (at least to begin with), so the end result is not as native as
+wxWindows (I'm aware there is GTK&#35; for use with the C&#35; language).
+<li>C&#35; is usually byte-compiled and therefore slower. Plus, .NET adds a layer of overhead to the client computer
+that wxWindows does not require.
+<li>Mono hasn't proven its long-term viability yet (it's a complex system of components); wxWindows is ready now.
+<li>You may not wish to buy into Microsoft marketing spin and APIs.
+<li>Microsoft may at some point sue developers of non-Microsoft .NET implementations. After all,
+platform-independence is not in Microsoft's interest.
+<li>.NET might never be implemented on some platforms, especially Mac and embedded variants of Linux.
+<li>wxPython and other language variants provide further reasons for wxWindows to continue.
+<li>The same issue exists for Qt: if Qt sales remain strong, it's a good indication that
+the market for a C++-based approach is still there. (Either that, or everyone's turning to wxWindows!)
+</ol>
+
+There is nothing to stop folk from developing a C&#35; version of the wxWindows API;
+we already have bindings to Python, Perl, JavaScript, Lua, Basic, and Eiffel.
+Update: a <a href="http://wxnet.sourceforge.net/" target=_new>wx.NET</a> project is now in progress.
+
+<P>
+
 <H3><a name="help">How can I help the project?</a></H3>
 
 Please check out the <a href="http://www.wxwindows.org/develop2.htm">Community</a> pages,
 in particular the <a href="projects.htm">suggested projects</a>, and
-mail <a href="mailto:julian.smart@btopenworld.com">Julian Smart</a> or the developers&#39; mailing list with your own suggestions.<P>
+mail the developers&#39; mailing list with your own suggestions.<P>
 
 </font>