Add wxWindow::CreateUsingMSWClass() helper function

This method allows to use the Windows class to use for the window being
created instead of always using "wxWindow" or "wxWindowNR".

This can be useful to make it possible to handle some windows specially from
outside the application, e.g. use specific class names for accessibility
purposes as will be done by the next commit.
This commit is contained in:
Vadim Zeitlin
2016-12-18 22:36:17 +01:00
parent 842c441f01
commit d4e595adb0
2 changed files with 25 additions and 8 deletions

View File

@@ -52,7 +52,23 @@ public:
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = 0,
const wxString& name = wxPanelNameStr);
const wxString& name = wxPanelNameStr)
{
return CreateUsingMSWClass(GetMSWClassName(),
parent, id, pos, size, style, name);
}
// Non-portable, MSW-specific Create() variant allowing to create the
// window with a custom Windows class name. This can be useful to assign a
// custom Windows class, that can be recognized from the outside of the
// application, for windows of specific type.
bool CreateUsingMSWClass(const wxChar* classname,
wxWindow *parent,
wxWindowID id,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = 0,
const wxString& name = wxPanelNameStr);
// implement base class pure virtuals
virtual void SetLabel(const wxString& label) wxOVERRIDE;

View File

@@ -481,12 +481,13 @@ const wxChar *wxWindowMSW::GetMSWClassName() const
}
// real construction (Init() must have been called before!)
bool wxWindowMSW::Create(wxWindow *parent,
wxWindowID id,
const wxPoint& pos,
const wxSize& size,
long style,
const wxString& name)
bool wxWindowMSW::CreateUsingMSWClass(const wxChar* classname,
wxWindow *parent,
wxWindowID id,
const wxPoint& pos,
const wxSize& size,
long style,
const wxString& name)
{
wxCHECK_MSG( parent, false, wxT("can't create wxWindow without parent") );
@@ -512,7 +513,7 @@ bool wxWindowMSW::Create(wxWindow *parent,
msflags |= WS_VISIBLE;
}
if ( !MSWCreate(GetMSWClassName(), NULL, pos, size, msflags, exstyle) )
if ( !MSWCreate(classname, NULL, pos, size, msflags, exstyle) )
return false;
InheritAttributes();