]>
Commit | Line | Data |
---|---|---|
a660d684 KB |
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 | ||
fe604ccd | 25 | You never draw directly onto a window --- you use a {\it device context} (DC). \helpref{wxDC}{wxdc} is |
a660d684 KB |
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 | |
fe604ccd | 31 | and \helpref{wxDC::DrawText}{wxdcdrawtext}. Control colour on a window (\helpref{wxColour}{wxcolour}) with |
a660d684 KB |
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 | |
6fb26ea3 JS |
41 | need wxHelp and the \helpref{wxHelpController}{wxhelpcontroller} class to control |
42 | wxHelp. To add sparkle, you might use the wxToolBar class | |
a660d684 KB |
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 |