1998-05-20 10:25:30 -04:00
\section { Writing a wxWindows application: a rough guide} \label { roughguide}
To set a wxWindows application going, you'll need to derive a \helpref { wxApp} { wxapp} class and
override \helpref { wxApp::OnInit} { wxapponinit} .
An application must have a top-level \helpref { wxFrame} { wxframe} window (returned by \helpref { wxApp::OnInit} { wxapponinit} ),
each frame containing one or more instances of \helpref { wxPanel} { wxpanel} , \helpref { wxSplitterWindow} { wxsplitterwindow} \rtfsp
or other windows and controls.
A frame can have a \helpref { wxMenuBar} { wxmenubar} , a status line, and a \helpref { wxIcon} { wxicon} for
when the frame is iconized.
A \helpref { wxPanel} { wxpanel} is used to place controls (classes derived from \helpref { wxControl} { wxcontrol} )
which are used for user interaction. Examples of controls are \helpref { wxButton} { wxbutton} ,
\rtfsp \helpref { wxCheckBox} { wxcheckbox} , \helpref { wxChoice} { wxchoice} , \helpref { wxListBox} { wxlistbox} ,
\rtfsp \helpref { wxRadioBox} { wxradiobox} , \helpref { wxSlider} { wxslider} .
Instances of \helpref { wxDialog} { wxdialog} can also be used for panels, items and they have
the advantage of not requiring a separate frame.
Instead of creating a dialog box and populating it with items, it is possible to choose
one of the convenient common dialog classes, such as \helpref { wxMessageDialog} { wxmessagedialog} \rtfsp
and \helpref { wxFileDialog} { wxfiledialog} .
1998-06-14 16:48:39 -04:00
You never draw directly onto a window --- you use a { \it device context} (DC). \helpref { wxDC} { wxdc} is
1998-05-20 10:25:30 -04:00
the base for \helpref { wxClientDC} { wxclientdc} , \helpref { wxPaintDC} { wxpaintdc} , \helpref { wxMemoryDC} { wxmemorydc} , \helpref { wxPostScriptDC} { wxpostscriptdc} ,
\rtfsp \helpref { wxMemoryDC} { wxmemorydc} , \helpref { wxMetaFileDC} { wxmetafiledc} and \helpref { wxPrinterDC} { wxprinterdc} .
If your drawing functions have { \bf wxDC} as a parameter, you can pass any of these DCs
to the function, and thus use the same code to draw to several different devices.
You can draw using the member functions of { \bf wxDC} , such as \helpref { wxDC::DrawLine} { wxdcdrawline} \rtfsp
1998-06-14 16:48:39 -04:00
and \helpref { wxDC::DrawText} { wxdcdrawtext} . Control colour on a window (\helpref { wxColour} { wxcolour} ) with
1998-05-20 10:25:30 -04:00
brushes (\helpref { wxBrush} { wxbrush} ) and pens (\helpref { wxPen} { wxpen} ).
To intercept events, you add a DECLARE\_ EVENT\_ TABLE macro to the window class declaration,
and put a BEGIN\_ EVENT\_ TABLE ... END\_ EVENT\_ TABLE block in the implementation file. Between these
macros, you add event macros which map the event (such as a mouse click) to a member function.
These might override predefined event handlers such as \helpref { wxWindow::OnChar} { wxwindowonchar} and
\rtfsp \helpref { wxWindow::OnMouseEvent} { wxwindowonmouseevent} .
Most modern applications will have an on-line, hypertext help system; for this, you
1998-11-17 17:44:47 -05:00
need wxHelp and the \helpref { wxHelpController} { wxhelpcontroller} class to control
wxHelp. To add sparkle, you might use the wxToolBar class
1998-05-20 10:25:30 -04:00
which makes heavy use of the \helpref { wxBitmap} { wxbitmap} .
GUI applications aren't all graphical wizardry. List and hash table needs are
catered for by \helpref { wxList} { wxlist} , \helpref { wxStringList} { wxstringlist} and \helpref { wxHashTable} { wxhashtable} .
You will undoubtedly need some platform-independent \helpref { file functions} { filefunctions} ,
and you may find it handy to maintain and search a list of paths using \helpref { wxPathList} { wxpathlist} .
There's a \helpref { miscellany} { miscellany} of operating system and other functions.
If you have several communicating applications, you can try out the DDE-like functions, by
using the three classes \helpref { wxDDEClient} { wxddeclient} , \helpref { wxDDEServer} { wxddeserver} and
\rtfsp \helpref { wxDDEConnection} { wxddeconnection} . These use DDE under Windows, and a simulation using
sockets under UNIX.