Factor out wxTopLevelWindow::MSWEnableCloseButton()

Make it possible to reuse this code for other, non-wx, windows.

No real changes, this is just a pure refactoring.
This commit is contained in:
Vadim Zeitlin
2017-10-28 23:24:51 +02:00
parent 79e2adf916
commit fdfd8efa83
2 changed files with 12 additions and 3 deletions

View File

@@ -90,6 +90,9 @@ public:
// NULL if getting the system menu failed.
wxMenu *MSWGetSystemMenu() const;
// Enable or disable the close button of the specified window.
static bool MSWEnableCloseButton(WXHWND hwnd, bool enable = true);
// implementation from now on
// --------------------------

View File

@@ -986,10 +986,11 @@ void wxTopLevelWindowMSW::SetIcons(const wxIconBundle& icons)
DoSelectAndSetIcon(icons, SM_CXICON, SM_CYICON, ICON_BIG);
}
bool wxTopLevelWindowMSW::EnableCloseButton(bool enable)
// static
bool wxTopLevelWindowMSW::MSWEnableCloseButton(WXHWND hwnd, bool enable)
{
// get system (a.k.a. window) menu
HMENU hmenu = GetSystemMenu(GetHwnd(), FALSE /* get it */);
HMENU hmenu = GetSystemMenu(hwnd, FALSE /* get it */);
if ( !hmenu )
{
// no system menu at all -- ok if we want to remove the close button
@@ -1008,7 +1009,7 @@ bool wxTopLevelWindowMSW::EnableCloseButton(bool enable)
return false;
}
// update appearance immediately
if ( !::DrawMenuBar(GetHwnd()) )
if ( !::DrawMenuBar(hwnd) )
{
wxLogLastError(wxT("DrawMenuBar"));
}
@@ -1016,6 +1017,11 @@ bool wxTopLevelWindowMSW::EnableCloseButton(bool enable)
return true;
}
bool wxTopLevelWindowMSW::EnableCloseButton(bool enable)
{
return MSWEnableCloseButton(GetHwnd(), enable);
}
// Window must have wxCAPTION and either wxCLOSE_BOX or wxSYSTEM_MENU for the
// button to be visible. Also check for wxMAXIMIZE_BOX because we don't want
// to enable a button that is excluded from the current style.