Adjust the client area origin and the client size of the MSW wxStaticBox according to the guidelines on http://msdn.microsoft.com/en-us/library/aa511279.aspx. This is so widgets that are children of the static box will not overlap the label or box borders.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71595 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2012-05-30 03:13:35 +00:00
parent 7d40f0a500
commit 5ad24e6dbb
2 changed files with 26 additions and 0 deletions

View File

@@ -43,6 +43,10 @@ public:
// returns true if the platform should explicitly apply a theme border
virtual bool CanApplyThemeBorder() const { return false; }
virtual wxPoint GetClientAreaOrigin() const;
virtual void DoGetClientSize(int *width, int *height) const;
protected:
virtual wxSize DoGetBestSize() const;

View File

@@ -528,4 +528,26 @@ void wxStaticBox::OnPaint(wxPaintEvent& WXUNUSED(event))
#endif // !__WXWINCE__
wxPoint wxStaticBox::GetClientAreaOrigin() const
{
// See: http://msdn.microsoft.com/en-us/library/aa511279.aspx
wxPoint pt = ConvertDialogToPixels(wxPoint(6,11));
return pt;
}
void wxStaticBox::DoGetClientSize(int *width, int *height) const
{
// See: http://msdn.microsoft.com/en-us/library/aa511279.aspx
wxPoint lr = ConvertDialogToPixels(wxPoint(6,7));
wxPoint ul = GetClientAreaOrigin();
wxSize sz = GetSize();
if (width)
*width = sz.x - ul.x - lr.x;
if (height)
*height = sz.y - ul.y - lr.x;
}
#endif // wxUSE_STATBOX