57 lines
3.7 KiB
TeX
57 lines
3.7 KiB
TeX
|
\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}.
|
||
|
|
||
|
You never draw directly onto a canvas --- you use a {\it device context} (DC). \helpref{wxDC}{wxdc} is
|
||
|
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
|
||
|
and \helpref{wxDC::DrawText}{wxdcdrawtext}. Control colour on a canvas (\helpref{wxColour}{wxcolour}) with
|
||
|
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
|
||
|
need wxHelp and the \helpref{wxHelpInstance}{wxhelpinstance} class to control
|
||
|
wxHelp. To add sparkle, you might use the wxToolBar class (documented separately)
|
||
|
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.
|
||
|
|
||
|
|