How to learn wxWidgets programming |
The following is a response by Edward Ream to a common question, "What's the best way to learn wxWidgets [and C++]?".
Date: Sun, 04 Jun 2000 14:37:06 -0500
> Reading the Linux Journal article on wxpython, and having used wxclips
I'm new to wxWidgets 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.
About C++.
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 wxWidgets 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.
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.
About applications frameworks.
Application frameworks such as wxWidgets 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.
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.
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:
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.
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.
wxWidgets contains other nifty utility classes as well.
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.
I hope this helps. Perhaps we can work together in learning about
wxWidgets. Please feel free to ask me any questions you might have. If
I've made any blunders in this posting I hope the wxWidgets experts will
correct me gently.
Edward
From: "Edward K. Ream"
To: wx-users@wxwindows.org
Subject: Re: [wx-users] How to learn using wx-windows
Reply-To: wx-users@wxwindows.org
> I got interested in wxwindows as a development interface. However, the
> programming experience I got is old, and from a former generation (For-
> tran). I'd like to refresh my experience and start in C++. Will
> wx-windows be a very high step to take?
Some other tips:
--------------------------------------------------------------------
Edward K. Ream email: edream@tds.net
Leo: Literate Editor with Outlines
Leo: http://personalpages.tds.net/~edream/front.html
--------------------------------------------------------------------