///////////////////////////////////////////////////////////////////////////// // Name: roughguide // Purpose: topic overview // Author: wxWidgets team // RCS-ID: $Id$ // Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// /*! @page roughguide_overview Writing a wxWidgets application: a rough guide To set a wxWidgets application going, you will need to derive a #wxApp class and override wxApp::OnInit. An application must have a top-level #wxFrame or #wxDialog window. Each frame may contain one or more instances of classes such as #wxPanel, #wxSplitterWindow or other windows and controls. A frame can have a #wxMenuBar, a #wxToolBar, a status line, and a #wxIcon for when the frame is iconized. A #wxPanel is used to place controls (classes derived from #wxControl) which are used for user interaction. Examples of controls are #wxButton, #wxCheckBox, #wxChoice, #wxListBox, #wxRadioBox, #wxSlider. Instances of #wxDialog can also be used for controls 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 #wxMessageDialog and #wxFileDialog. You never draw directly onto a window - you use a @e device context (DC). #wxDC is the base for #wxClientDC, #wxPaintDC, #wxMemoryDC, #wxPostScriptDC, #wxMemoryDC, #wxMetafileDC and #wxPrinterDC. If your drawing functions have @b 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 @b wxDC, such as wxDC::DrawLine and wxDC::DrawText. Control colour on a window (#wxColour) with brushes (#wxBrush) and pens (#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 for #wxKeyEvent and #wxMouseEvent. Most modern applications will have an on-line, hypertext help system; for this, you need wxHelp and the #wxHelpController class to control wxHelp. GUI applications aren't all graphical wizardry. List and hash table needs are catered for by #wxList and #wxHashMap. You will undoubtedly need some platform-independent @ref filefunctions_overview, and you may find it handy to maintain and search a list of paths using #wxPathList. There's a #miscellany of operating system and other functions. See also @ref classesbycat_overview for a list of classes. */