diff --git a/docs/doxygen/overviews/roughguide.h b/docs/doxygen/overviews/roughguide.h index c1904d0800..a27c6cbb1d 100644 --- a/docs/doxygen/overviews/roughguide.h +++ b/docs/doxygen/overviews/roughguide.h @@ -11,28 +11,39 @@ @tableofcontents -To set a wxWidgets application going, you will need to derive a wxApp class and -override wxApp::OnInit. +@section overview_roughguide_structure Application Structure -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. +To set a wxWidgets application going, you will need to derive a wxApp class and +override wxApp::OnInit() in which you will typically create your application +main top-level window. + +This window can be a wxFrame or a wxDialog and 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 wxStatusBar, 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, and wxSlider. +wxChoice, wxListBox, wxRadioBox, and wxSlider. Such controls need to be +positioned correctly -- and also repositioned when the top-level window is +resized by the user -- and to do this you use wxSizer-derived classes, such as +wxBoxSizer and wxFlexGridSizer, to layout everything correctly. Instances of wxDialog can also be used for controls and they have the advantage -of not requiring a separate frame. +of not requiring a separate panel inside the,. 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 device context (DC). + +@section overview_roughguide_draw Drawing on the Screen + +You never draw directly onto a window -- you use either one of the older +device context (DC) classes or the newer graphics context +(GC) one, that support features such as alpha transparency or anti-aliasing. wxDC is the base for wxClientDC, wxPaintDC, wxMemoryDC, wxPostScriptDC, wxMemoryDC, wxMetafileDC and wxPrinterDC. If your drawing functions have wxDC as a parameter, you can pass any of these DCs to the function, and thus use the @@ -40,20 +51,19 @@ same code to draw to several different devices. You can draw using the member functions of 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 wxDECLARE_EVENT_TABLE macro to the window class -declaration, and put a wxBEGIN_EVENT_TABLE ... wxEND_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. +With wxGraphicsContext, you create it using one of the methods of +wxGraphicsRenderer and then construct your drawing from wxGraphicsPath objects, +finally using wxGraphicsContext::StrokePath() or wxGraphicsContext::FillPath(). -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 group_funcmacro_file, and you may find it handy to -maintain and search a list of paths using wxPathList. There's many -@ref group_funcmacro_misc of operating system methods and other functions. +@section overview_roughguide_events Event Handling + +GUI programs spend most of their time waiting for the user-initiated events -- +and then processing them. To do it, you use wxEvtHandler::Bind() to specify the +handler for an event of the given time. Event handlers receive the object +describing the event, such as wxKeyEvent or wxMouseEvent, and perform whichever +action corresponds to it. See @ref overview_events "events handling" overview +for much more information about this subject. @see @ref group_class