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:
Vadim Zeitlin
2001-08-22 14:42:54 +00:00
parent b6e5eaa597
commit 9787a4b6ad
2 changed files with 99 additions and 0 deletions

View File

@@ -77,6 +77,7 @@ public:
static void CleanUp();
static bool RegisterWindowClasses();
static bool UnregisterWindowClasses();
// Convert Windows to argc, argv style
void ConvertToStandardCommandArgs(char* p);

View File

@@ -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