]> git.saurik.com Git - wxWidgets.git/blame - docs/html/faqgen.htm
formatting changes
[wxWidgets.git] / docs / html / faqgen.htm
CommitLineData
ce3ed50d
JS
1<HTML>
2
3<HEAD>
4<TITLE>wxWindows 2 FAQ: General</TITLE>
5</HEAD>
6
7<BODY BGCOLOR=#FFFFFF TEXT=#000000 LINK=#FF0000 VLINK=#000000>
8
9<font face="Arial, Lucida Sans, Helvetica">
10
f6bcfd97 11<table width=100% border=0 cellpadding=5 cellspacing=0>
ce3ed50d 12<tr>
f6bcfd97
BP
13<td bgcolor="#C4ECF9">
14<font size=+1 face="Arial, Lucida Sans, Helvetica" color="#000000">
ce3ed50d
JS
15wxWindows 2 FAQ: General
16</font>
17</td>
18</tr>
19</table>
20
21<P>
22
23See also <a href="faq.htm">top-level FAQ page</a>.
24<hr>
25
26<H3><a name="whatis">What is wxWindows?</a></H3>
27
28wxWindows is a class library that allows you to compile graphical C++ programs on a range of
29different platforms. wxWindows defines a common API across platforms, but uses the native graphical user interface (GUI) on each platform,
30so your program will take on the native 'look and feel' that users are familiar with.<P>
31
32Although GUI applications are mostly built programmatically, there is a dialog editor to help
51ab9400
JS
33build attractive dialogs and panels. Robert Roebling's <a href="http://www.roebling.com">wxDesigner</a>
34makes light work of resizable, portable dialogs.<P>
ce3ed50d
JS
35
36You don't have to use C++ to use wxWindows: wxWindows 1 has been interfaced to several interpreted languages,
51ab9400 37such as CLIPS, Python, Scheme, XLisp and Perl, and there is a <a href="http://wxpython.org">Python interface</a> for wxWindows 2.
ce3ed50d
JS
38<P>
39
40<h3>Can I use wxWindows 2 for both proprietary (commercial) projects, and GPL'ed projects?</h3>
41
42Yes. Please see the <a href="newlicen.htm">licence</a> for details, but basically
43you can distribute proprietary binaries without distributing any source code, and neither will wxWindows
44conflict with GPL code you may be using or developing with it.
45<P>
46The conditions for using wxWindows 2 are the same whether you are a personal, academic
47or commercial developer.
48<P>
49
50<h3>Is there support?</h3>
51
52No official support, but the mailing list is very helpful and some people say that
53wxWindows support is better than for much commercial software. The developers are
54keen to fix bugs as soon as possible, though obviously there are no guarantees.
55<P>
56
57<H3><a name="users">Who uses wxWindows?</a></H3>
58
59Many organisations - commercial, government, and academic - across the
60world. It's impossible to estimate the true number of users, since
61wxWindows is obtained by many different means, and we cannot monitor
62distribution. The mailing list contains around 300-400 entries which is
63quite large for a list of this type.<P>
64
51ab9400
JS
65See <a href="users.htm">Users</a> for a list of some users and their applications, and
66also <A href="feedback.htm">Feedback</a> for comments.<P>
b953bdc2
JS
67
68<H3>How much has the API changed since 1.xx?</H3>
69
70It's difficult to summarize, but some aspects haven't changed very much. For example, if you have some
71complex drawing code, you will mostly need to make sure it's parameterised with a device
72context (instead of obtaining one from a window or storing it). You won't have
73to completely rewrite the drawing code.<P>
74
75The way that events are handled has changed, so for example, where you overrode
76OnSize before, you now have a non-virtual OnSize with a single event class argument.
77To make this function known to wxWindows, you add an entry in an 'event table' using macros. Addition of these macros
78will eventually be made easier by a tool which will allow selection from a list
79and copy-and-paste into your editor. This is extended to button presses, listbox selection
80etc. so callbacks have gone (they may be added back for limited backward compatibility).<P>
81
82The class hierarchy has changed to allow greater flexibility but it probably won't affect your
83existing application. One exception to this is MDI applications which now use separate MDI classes instead of style
84flags. As a result, it won't be possible to switch between MDI and SDI operation at run-time
85without further coding, but a benefit is less interdependence between areas of code,
86and therefore smaller executable size.<P>
87
88Panel items (now called controls) no longer have labels associated with most of them,
89and default panel layout has been removed. The idea is that you make greater use
90of dialog resources, for better-looking dialogs.<P>
91
92<H3>What classes have disappeared?</H3>
93
94wxForm, wxTextWindow (subsumed into wxTextCtrl).
95
96<H3>Does wxWindows 2 mean that wxWindows 1.xx is dead?</H3>
97
98While wxWindows 2 is being developed, there will be further patches to wxWindows 1.xx.
99Obviously we are investing most of our energy into the new code, but we're also trying
100to fix bugs in the current version.<P>
101
51ab9400 102<H3>What platforms are supported by wxWindows 2?</H3>
b953bdc2
JS
103
104<ul>
105<li>Windows 3.1, Windows 95/98, Windows NT;
106<li>Linux and other Unix platforms with GTK+;
107<li>Unix with Motif or the free Motif clone Lesstif;
51ab9400 108<li>Mac;
b953bdc2
JS
109<li>A BeOS port is being investigated.
110<li>A Windows CE port is being investigated.
51ab9400
JS
111<li>An OS/2 port is in progress, and you can also compile wxWindows for GTK+ or Motif
112on OS/2.
b953bdc2
JS
113</ul>
114<P>
115
116<H3>How does wxWindows 2 support platform-specific features?</H3>
117
118This is a hotly-debated topic amongst the developers. My own philosophy
119is to make wxWindows as platform-independent as possible, but allow in a
120few classes (functions, window styles) that are platform-specific.
121For example, Windows metafiles and Windows 95 taskbar icons have
122their own classes on Windows, but nowhere else. Because these classes
123are provided and are wxWindows-compatible, it doesn't take much
124coding effort for an application programmer to add support for
125some functionality that the user on a particular platform might otherwise
126miss. Also, some classes that started off as platform-specific, such
127as the MDI classes, have been emulated on other platforms. I can imagine
128that even wxTaskBarIcon may be implemented for Unix desktops one day.
129<P>
130
131In other words, wxWindows is not a 'lowest common denominator' approach,
132but it will still be possible to write portable programs using the
133core API. Forbidding some platform-specific classes would be a stupid
134approach that would alienate many potential users, and encourage
135the perception that toolkits such as wxWindows are not up to the demands
136of today's sophisticated applications.<P>
137
138Currently resources such as bitmaps and icons are handled in a platform-specific
139way, but it is hoped to reduce this dependence in due course.<P>
140
141Another reason why wxWindows 2 is not a 'lowest common denominator' toolkit is that
142some functionality missing on some platform has been provided using generic,
143platform-independent code, such as the wxTreeCtrl and wxListCtrl classes.<P>
144
145<H3>Does wxWindows use STL? or the standard string class?</H3>
146
147No. This is a much-discussed topic that has (many times) ended with the conclusion that it is in
148wxWindows' best interests to avoid use of templates. Not all compilers can handle
149templates adequately so it would dramatically reduce the number of compilers
150and platforms that could be supported. It would also be undersirable to make
151wxWindows dependent on another large library that may have to be downloaded and installed.
152In addition, use of templates can lead to executable bloat, which is something
153wxWindows 2 is strenously trying to avoid.<P>
154
155The standard C++ string class is not used, again because it is not available to all compilers,
156and it is not necessarily a very efficient implementation. Also, we retain more flexibility
157by being able to modify our own string class. Some compatibility with the string class
158has been built into wxString.<P>
159
160There is nothing to stop an application using templates or the string class for its own
161purposes.<P>
162
790ad94f
JS
163<H3>Is there a rich edit/markup widget for wxWindows 2?</H3>
164
165These are the possibilities so far:<P>
166
167<ul>
168<li>The richedit sample has a text editor that does markup.
169<li>See <a href="http://www.scintilla.org" target=_top>www.scintilla.org</a> for
170a very nice syntax-highlighting editor widget. Robin Dunn is writing a wxWindows wrapper
171for this widget.
172<li>If you only need to display marked-up information, rather than edit it,
173then wxHTML will suit your needs. wxHTML is built into wxWindows - please see the reference
174manual for details, and samples/html.
175<li>There are rich edit widgets in both WIN32 and GTK+, but there is currently
176no wxWindows wrapper for these.
177</ul>
178
179<P>
180
b953bdc2
JS
181<H3>How is wxWindows 2 being developed?</H3>
182
183We are using the <a href="cvs.htm">CVS</a> system to develop and maintain wxWindows. This allows
51ab9400 184us to make alterations and upload them instantly to the SourceForge server, from
b953bdc2
JS
185which others can update their source.<P>
186
91c93c99
JS
187To build source from CVS, see the file BuildCVS.txt in the top-level wxWindows distribution
188directory.<P>
189
b953bdc2
JS
190<H3>How is wxWindows 2 distributed?</H3>
191
192By ftp, and via the <a href="cdrom2.htm">wxWindows CD-ROM</a>.<P>
193
194<H3>What are the plans for the future?</H3>
195
196Currently we're working too hard on getting wxWindows 2 finished (are GUI toolkits ever
197finished?) to think very far ahead. However, we know we want to make wxWindows as robust
198and well-publicised as possible. We also want to aim for better platform-independence of
199resources such as icons and bitmaps, standardising on the PNG for all platforms.<P>
200
91c93c99
JS
201Other possibilities include: DCOM/CORBA compatibility; a wxWindows book;
202<a href="http://wxstudio.linuxbox.com/">wxStudio</a>, an IDE;
b953bdc2
JS
203other platforms; other interface abilities such as speech output.<P>
204
205We will investigate the possibility of compiler or operating system vendors bundling wxWindows with
206their product.<P>
207
208The high-level goal of wxWindows is to be thought of as the number one C++ framework,
209for virtually any platform. Move over, MFC!<P>
210
211<H3>What about Java?</H3>
212
213The Java honeymoon period is over :-) and people are realising that it cannot
214meet all their cross-platform development needs. We don't anticipate a major threat
215from Java, and the level of interest in wxWindows is as high as ever.<P>
216
217<H3>How can I help the project?</H3>
218
30b5fc11
JS
219Please check out the <a href="http://www.wxwindows.org/develop.htm" target=main>Backroom</a> pages,
220in particular the <a href="http://www.wxwindows.org/projects.htm">suggested projects</a>, and
b953bdc2
JS
221mail <a href="mailto:julian.smart@ukonline.co.uk">Julian Smart</a> or the developers' mailing list with your own suggestions.<P>
222
ce3ed50d
JS
223</font>
224
225</BODY>
226
227</HTML>