git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15779 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			145 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			145 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <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.  (Lippman 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 utility 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>
 |