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