added UnregisterWindowClasses() (patch 447443)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11436 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -77,6 +77,7 @@ public:
|
||||
static void CleanUp();
|
||||
|
||||
static bool RegisterWindowClasses();
|
||||
static bool UnregisterWindowClasses();
|
||||
|
||||
// Convert Windows to argc, argv style
|
||||
void ConvertToStandardCommandArgs(char* p);
|
||||
|
@@ -455,6 +455,96 @@ bool wxApp::RegisterWindowClasses()
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// UnregisterWindowClasses
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
bool wxApp::UnregisterWindowClasses()
|
||||
{
|
||||
bool retval = TRUE;
|
||||
|
||||
// frame window class.
|
||||
if ( !UnregisterClass(wxFrameClassName, wxhInstance) )
|
||||
{
|
||||
wxLogLastError(wxT("UnregisterClass(frame)"));
|
||||
|
||||
retval = FALSE;
|
||||
}
|
||||
|
||||
// "no redraw" frame
|
||||
if ( !UnregisterClass(wxFrameClassNameNoRedraw, wxhInstance) )
|
||||
{
|
||||
wxLogLastError(wxT("UnregisterClass(no redraw frame)"));
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// MDI frame window class.
|
||||
if ( !UnregisterClass(wxMDIFrameClassName, wxhInstance) )
|
||||
{
|
||||
wxLogLastError(wxT("UnregisterClass(MDI parent)"));
|
||||
|
||||
retval = FALSE;
|
||||
}
|
||||
|
||||
// "no redraw" MDI frame
|
||||
if ( !UnregisterClass(wxMDIFrameClassNameNoRedraw, wxhInstance) )
|
||||
{
|
||||
wxLogLastError(wxT("UnregisterClass(no redraw MDI parent frame)"));
|
||||
|
||||
retval = FALSE;
|
||||
}
|
||||
|
||||
// MDI child frame window class.
|
||||
if ( !UnregisterClass(wxMDIChildFrameClassName, wxhInstance) )
|
||||
{
|
||||
wxLogLastError(wxT("UnregisterClass(MDI child)"));
|
||||
|
||||
retval = FALSE;
|
||||
}
|
||||
|
||||
// "no redraw" MDI child frame
|
||||
if ( !UnregisterClass(wxMDIChildFrameClassNameNoRedraw, wxhInstance) )
|
||||
{
|
||||
wxLogLastError(wxT("UnregisterClass(no redraw MDI child)"));
|
||||
|
||||
retval = FALSE;
|
||||
}
|
||||
|
||||
// panel window class.
|
||||
if ( !UnregisterClass(wxPanelClassName, wxhInstance) )
|
||||
{
|
||||
wxLogLastError(wxT("UnregisterClass(panel)"));
|
||||
|
||||
retval = FALSE;
|
||||
}
|
||||
|
||||
// no redraw panel window class.
|
||||
if ( !UnregisterClass(wxPanelClassNameNR, wxhInstance) )
|
||||
{
|
||||
wxLogLastError(wxT("UnregisterClass(no redraw panel)"));
|
||||
|
||||
retval = FALSE;
|
||||
}
|
||||
|
||||
// canvas and textsubwindow class name
|
||||
if ( !UnregisterClass(wxCanvasClassName, wxhInstance) )
|
||||
{
|
||||
wxLogLastError(wxT("UnregisterClass(canvas)"));
|
||||
|
||||
retval = FALSE;
|
||||
}
|
||||
|
||||
if ( !UnregisterClass(wxCanvasClassNameNR, wxhInstance) )
|
||||
{
|
||||
wxLogLastError(wxT("UnregisterClass(no redraw canvas)"));
|
||||
|
||||
retval = FALSE;
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Convert Windows to argc, argv style
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -600,6 +690,14 @@ void wxApp::CleanUp()
|
||||
::OleUninitialize();
|
||||
#endif
|
||||
|
||||
#ifdef WXMAKINGDLL
|
||||
// for an EXE the classes are unregistered when it terminates but DLL may
|
||||
// be loaded several times (load/unload/load) into the same process in
|
||||
// which case the registration will fail after the first time if we don't
|
||||
// unregister the classes now
|
||||
UnregisterWindowClasses();
|
||||
#endif // WXMAKINGDLL
|
||||
|
||||
#if wxUSE_CTL3D
|
||||
Ctl3dUnregister(wxhInstance);
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user