+ In other words, the returned value is what would GetSize() return if this
+ window had client area of given size. Components with wxDefaultCoord
+ value are left unchanged. Note that the conversion is not always
+ exact, it assumes that non-client area doesn't change and so doesn't
+ take into account things like menu bar (un)wrapping or (dis)appearance
+ of the scrollbars.
+
+ @since 2.8.8
+
+ @see WindowToClientSize()
+ */
+ virtual wxSize ClientToWindowSize(const wxSize& size) const;
+
+ /**
+ Converts window size @a size to corresponding client area size
+ In other words, the returned value is what would GetClientSize() return if
+ this window had given window size. Components with wxDefaultCoord value
+ are left unchanged.
+
+ Note that the conversion is not always exact, it assumes that
+ non-client area doesn't change and so doesn't take into account things
+ like menu bar (un)wrapping or (dis)appearance of the scrollbars.
+
+ @since 2.8.8
+
+ @see ClientToWindowSize()
+ */
+ virtual wxSize WindowToClientSize(const wxSize& size) const;
+
+ /**
+ Sizes the window so that it fits around its subwindows.
+
+ This function won't do anything if there are no subwindows and will only really
+ work correctly if sizers are used for the subwindows layout.
+
+ Also, if the window has exactly one subwindow it is better (faster and the result
+ is more precise as Fit() adds some margin to account for fuzziness of its calculations)
+ to call:
+
+ @code
+ window->SetClientSize(child->GetSize());
+ @endcode
+
+ instead of calling Fit().
+
+ @see @ref overview_windowsizing
+ */
+ virtual void Fit();
+
+ /**
+ Similar to Fit(), but sizes the interior (virtual) size of a window.
+
+ Mainly useful with scrolled windows to reset scrollbars after sizing
+ changes that do not trigger a size event, and/or scrolled windows without
+ an interior sizer. This function similarly won't do anything if there are
+ no subwindows.
+ */
+ virtual void FitInside();
+
+ /**
+ This functions returns the best acceptable minimal size for the window.
+
+ For example, for a static control, it will be the minimal size such that the
+ control label is not truncated. For windows containing subwindows (typically
+ wxPanel), the size returned by this function will be the same as the size
+ the window would have had after calling Fit().
+
+ Note that when you write your own widget you need to override the
+ DoGetBestSize() function instead of this (non-virtual!) function.
+
+ @see CacheBestSize(), @ref overview_windowsizing
+ */
+ wxSize GetBestSize() const;
+
+ /**
+ Returns the size of the window 'client area' in pixels.
+
+ The client area is the area which may be drawn on by the programmer,
+ excluding title bar, border, scrollbars, etc.
+ Note that if this window is a top-level one and it is currently minimized, the
+ return size is empty (both width and height are 0).
+
+ @beginWxPerlOnly
+ In wxPerl this method takes no parameters and returns
+ a 2-element list (width, height).
+ @endWxPerlOnly
+
+ @see GetSize(), GetVirtualSize()
+ */
+ void GetClientSize(int* width, int* height) const;
+
+ /**
+ @overload
+ */
+ wxSize GetClientSize() const;
+
+ /**
+ Merges the window's best size into the min size and returns the result.
+ This is the value used by sizers to determine the appropriate
+ amount of space to allocate for the widget.
+
+ This is the method called by a wxSizer when it queries the size
+ of a window or control.
+
+ @see GetBestSize(), SetInitialSize(), @ref overview_windowsizing
+ */
+ virtual wxSize GetEffectiveMinSize() const;
+
+ /**
+ Returns the maximum size of window's client area.
+
+ This is an indication to the sizer layout mechanism that this is the maximum
+ possible size as well as the upper bound on window's size settable using
+ SetClientSize().
+
+ @see GetMaxSize(), @ref overview_windowsizing
+ */
+ virtual wxSize GetMaxClientSize() const;
+
+ /**
+ Returns the maximum size of the window.
+
+ This is an indication to the sizer layout mechanism that this is the maximum
+ possible size as well as the upper bound on window's size settable using SetSize().
+
+ @see GetMaxClientSize(), @ref overview_windowsizing
+ */
+ virtual wxSize GetMaxSize() const;
+
+ /**
+ Returns the minimum size of window's client area, an indication to the sizer
+ layout mechanism that this is the minimum required size of its client area.
+
+ It normally just returns the value set by SetMinClientSize(), but it can be
+ overridden to do the calculation on demand.
+
+ @see GetMinSize(), @ref overview_windowsizing
+ */
+ virtual wxSize GetMinClientSize() const;
+
+ /**
+ Returns the minimum size of the window, an indication to the sizer layout
+ mechanism that this is the minimum required size.
+
+ This method normally just returns the value set by SetMinSize(), but it
+ can be overridden to do the calculation on demand.
+
+ @see GetMinClientSize(), @ref overview_windowsizing