- @class wxSizer
-
- wxSizer is the abstract base class used for laying out subwindows in a window.
- You cannot use wxSizer directly; instead, you will have to use one of the sizer
- classes derived from it. Currently there are wxBoxSizer, wxStaticBoxSizer,
- wxGridSizer, wxFlexGridSizer, wxWrapSizer and wxGridBagSizer.
-
- The layout algorithm used by sizers in wxWidgets is closely related to layout
- in other GUI toolkits, such as Java's AWT, the GTK toolkit or the Qt toolkit.
- It is based upon the idea of the individual subwindows reporting their minimal
- required size and their ability to get stretched if the size of the parent window
- has changed.
-
- This will most often mean that the programmer does not set the original size of
- a dialog in the beginning, rather the dialog will be assigned a sizer and this
- sizer will be queried about the recommended size. The sizer in turn will query
- its children, which can be normal windows, empty space or other sizers, so that
- a hierarchy of sizers can be constructed. Note that wxSizer does not derive
- from wxWindow and thus does not interfere with tab ordering and requires very little
- resources compared to a real window on screen.
-
- What makes sizers so well fitted for use in wxWidgets is the fact that every
- control reports its own minimal size and the algorithm can handle differences in
- font sizes or different window (dialog item) sizes on different platforms without
- problems. If e.g. the standard font as well as the overall design of Motif widgets
- requires more space than on Windows, the initial dialog size will automatically
- be bigger on Motif than on Windows.
-
- Sizers may also be used to control the layout of custom drawn items on the
- window. The wxSizer::Add(), wxSizer::Insert(), and wxSizer::Prepend() functions
- return a pointer to the newly added wxSizerItem.
- Just add empty space of the desired size and attributes, and then use the
- wxSizerItem::GetRect() method to determine where the drawing operations
- should take place.
-
- Please notice that sizers, like child windows, are owned by the library and
- will be deleted by it which implies that they must be allocated on the heap.
- However if you create a sizer and do not add it to another sizer or
- window, the library wouldn't be able to delete such an orphan sizer and in
- this, and only this, case it should be deleted explicitly.