-The implementation of wxWindow::GetDefaultBorder() on wxMSW calls wxWindow::CanApplyThemeBorder()
-which is a virtual function that tells wxWidgets whether a control can have a theme
-applied explicitly (some native controls already paint a theme in which case we should not
-apply it ourselves). Note that wxPanel is an exception to this rule because in many cases
-we wish to create a window with no border (for example, notebook pages). So wxPanel
-overrides GetDefaultBorder() in order to call the generic wxWindowBase::GetDefaultBorder(),
-returning wxBORDER_NONE.
+For further information, please see the files in docs/msw in the distribution.
+
+@subsection page_port_wxmsw_themedborders Themed Borders
+
+Starting with wxWidgets 2.8.5, you can specify the @c wxBORDER_THEME style to
+have wxWidgets use a themed border. Using the default XP theme, this is a thin
+1-pixel blue border, with an extra 1-pixel border in the window client
+background colour (usually white) to separate the client area's scrollbars from
+the border.
+
+If you don't specify a border style for a wxTextCtrl in rich edit mode,
+wxWidgets now gives the control themed borders automatically, where previously
+they would take the Windows 95-style sunken border. Other native controls such
+as wxTextCtrl in non-rich edit mode, and wxComboBox already paint themed
+borders where appropriate. To use themed borders on other windows, such as
+wxPanel, pass the @c wxBORDER_THEME style, or (apart from wxPanel) pass no
+border style.
+
+In general, specifying @c wxBORDER_THEME will cause a border of some kind to be
+used, chosen by the platform and control class. To leave the border decision
+entirely to wxWidgets, pass @c wxBORDER_DEFAULT. This is not to be confused
+with specifying @c wxBORDER_NONE, which says that there should definitely be
+@e no border.
+
+@subsubsection page_port_wxmsw_themedborders_details Internal Border Implementation
+
+The way that wxMSW decides whether to apply a themed border is as follows. The
+theming code calls wxWindow::GetBorder() to obtain a border. If no border style
+has been passed to the window constructor, GetBorder() calls GetDefaultBorder()
+for this window. If wxBORDER_THEME was passed to the window constructor,
+GetBorder() calls GetDefaultBorderForControl().
+
+The implementation of wxWindow::GetDefaultBorder() on wxMSW calls
+wxWindow::CanApplyThemeBorder() which is a virtual function that tells
+wxWidgets whether a control can have a theme applied explicitly (some native
+controls already paint a theme in which case we should not apply it ourselves).
+Note that wxPanel is an exception to this rule because in many cases we wish to
+create a window with no border (for example, notebook pages). So wxPanel
+overrides GetDefaultBorder() in order to call the generic
+wxWindowBase::GetDefaultBorder(), returning wxBORDER_NONE.