This commit was manufactured by cvs2svn to create tag 'WX_2_2_9'.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/tags/WX_2_2_9@13364 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
144
docs/tech/tn0008.htm
Normal file
144
docs/tech/tn0008.htm
Normal file
@@ -0,0 +1,144 @@
|
||||
<HTML>
|
||||
|
||||
<HEAD>
|
||||
<TITLE>How to learn wxWindows programming</TITLE>
|
||||
</HEAD>
|
||||
|
||||
<BODY BGCOLOR=#FFFFFF TEXT=#000000 LINK=#FF0000 VLINK=#000000>
|
||||
|
||||
<font face="Arial, Lucida Sans, Helvetica">
|
||||
|
||||
<a name="top"></a>
|
||||
|
||||
<table align=center width=100% border=4 cellpadding=5 cellspacing=0>
|
||||
<tr>
|
||||
<td bgcolor="#660000" align=left colspan=2>
|
||||
<font size=+1 face="Arial, Lucida Sans, Helvetica" color="#FFFFFF">
|
||||
How to learn wxWindows programming
|
||||
</font>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<P>
|
||||
|
||||
The following is a response by Edward Ream to a common question,
|
||||
"What's the best way to learn wxWindows [and C++]?".<P>
|
||||
|
||||
Date: Sun, 04 Jun 2000 14:37:06 -0500<BR>
|
||||
From: "Edward K. Ream" <edream@tds.net> <BR>
|
||||
To: wx-users@wxwindows.org<BR>
|
||||
Subject: Re: [wx-users] How to learn using wx-windows <BR>
|
||||
Reply-To: wx-users@wxwindows.org<P>
|
||||
|
||||
> Reading the Linux Journal article on wxpython, and having used wxclips<BR>
|
||||
> I got interested in wxwindows as a development interface. However, the<BR>
|
||||
> programming experience I got is old, and from a former generation (For-<BR>
|
||||
> tran). I'd like to refresh my experience and start in C++. Will<BR>
|
||||
> wx-windows be a very high step to take?<P>
|
||||
|
||||
I'm new to wxWindows myself, but I'd like to answer this question
|
||||
anyway. In the past two years I've learned two similar frameworks
|
||||
(Apple's Yellow Box, aka NextStep/OpenStep and Borland's C++
|
||||
Builder/Delphi) and last year I became a C++ enthusiast after 20 years
|
||||
of using C.<P>
|
||||
|
||||
<B>About C++.</B><P>
|
||||
|
||||
The major Aha for me was that the complexity of C++ doesn't matter in
|
||||
practice. What _does_ matter is that C++ allows you to do simple things
|
||||
simply, more simply than C. With a system like wxWindows you will be
|
||||
creating objects and then using those objects to call methods. So don't
|
||||
be afraid of C++: you'll only be using the easy tip of the
|
||||
iceberg.<P>
|
||||
|
||||
Besides the C++ Programming Language, by Bjarne Stroustrup, the
|
||||
"official" guide to C++, I highly recommend Inside the C++ Object Model,
|
||||
by Stanley B. Lippman. (Lipmann was one of the C++ honchos at Bell
|
||||
Labs.) This book will tell you what _not_ to do, as well as why
|
||||
everything in C++ is as it is. If you are confused by anything in C++,
|
||||
Lippman's book is the cure.<P>
|
||||
|
||||
<B>About applications frameworks.</B><P>
|
||||
|
||||
Application frameworks such as wxWindows are organized around a set of
|
||||
cooperating classes. Take a look at the main application class, wxApp,
|
||||
some frame and panel classes, graphics classes, menu classes, control
|
||||
classes, etc. In general, to do anything in a framework involves
|
||||
creating an object of the specified type, then doing something with that
|
||||
object.<P>
|
||||
|
||||
For example, suppose you want to create a menu bar. A menu bar is
|
||||
composed of a single menu bar object of type(class) wxMenuBar that
|
||||
contains menu objects of type wxMenu. Each menu object contains menu
|
||||
item objects of type wxMenuItem. So you create the menu bar object,
|
||||
then create all the menu objects (creating the menu item objects along
|
||||
the way) and finally "attach" the menu objects to the menu bar object
|
||||
using a call to the wxMenuBar::Append method.<P>
|
||||
|
||||
As an overview I would look at the "Alphabetical class reference"
|
||||
section of the reference manual. I find the HTML version to be the
|
||||
easiest to use: you can browse very quickly through it. Here's how to
|
||||
read this (very large) reference:<P>
|
||||
|
||||
<ol>
|
||||
<li>Get an overview of the kinds of classes involved. The class names
|
||||
will tell you a lot about what each class does. Open some of the
|
||||
classes, in particular, wxApp (the main application object), wxFrame,
|
||||
wxControl (the base class for all controls) and one or two controls,
|
||||
like wxButton.
|
||||
|
||||
<li>When scanning a class for the first several times, read the
|
||||
introductory remarks and quickly scan the list of methods of the class
|
||||
to get a general idea about what kinds of operations can be done to
|
||||
objects of the class. You are not looking for detail at this stage,
|
||||
just for the big picture. In particular, what classes exist and how do
|
||||
they work together.
|
||||
|
||||
<li>Pay particular attention to the classes from which a class is
|
||||
derived. For example, a button (an object of type wxButton) is derived
|
||||
from the wxControl, wxWindow, wxEvtHandler and wxObject classes. What
|
||||
does this mean? It means that a button _is_ a control, and a button
|
||||
_is_ a window, and a button _is_ an event handler and a button _is_ an
|
||||
object. So you must understand the parent classes of an object to
|
||||
understand the object itself.
|
||||
|
||||
For example, if b is a button you can invoke b.m for any of method m of
|
||||
the wxControl, wxWindow, wxEvtHandler or wxObject classes. You are not
|
||||
limited to just the methods of wxButton! This is one of the keys of
|
||||
object oriented programming.
|
||||
</ol>
|
||||
|
||||
Some other tips:<P>
|
||||
|
||||
Read some sample code. You will find that almost none of the C++
|
||||
language is actually being used; it's just endlessly creating objects
|
||||
and then calling methods using those objects.<P>
|
||||
|
||||
Learn as much as you can about the String class; after using a good
|
||||
String class you'll never want to use C's string functions again.
|
||||
wxWindows contains other nifty utilty classes as well.<P>
|
||||
|
||||
The application class, wxApp, contains the main event loop. Learn about
|
||||
event handling and event tables (reading sample code will help). Almost
|
||||
everything in this kind of application framework happens as the result
|
||||
of an event and your app is essentially doing nothing but responding to
|
||||
events. Having the event loop written for you is a major, major
|
||||
benefit.<P>
|
||||
|
||||
I hope this helps. Perhaps we can work together in learning about
|
||||
wxWindows. Please feel free to ask me any questions you might have. If
|
||||
I've made any blunders in this posting I hope the wxWindows experts will
|
||||
correct me gently.<P>
|
||||
|
||||
Edward<BR>
|
||||
--------------------------------------------------------------------<BR>
|
||||
Edward K. Ream email: edream@tds.net<BR>
|
||||
Leo: Literate Editor with Outlines<BR>
|
||||
Leo: http://personalpages.tds.net/~edream/front.html<BR>
|
||||
--------------------------------------------------------------------<P>
|
||||
|
||||
</font>
|
||||
|
||||
</body>
|
||||
</html>
|
Reference in New Issue
Block a user