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