Unregister theming subclasses at comctl32 shutdown; should fix

reported re-registration errors.
This commit is contained in:
Frank Richter 2005-09-12 11:10:58 +00:00 committed by Alexandre Julliard
parent fecc5f21a7
commit fc4b08d5fc
3 changed files with 18 additions and 0 deletions

View File

@ -250,6 +250,7 @@ static inline void MONTHCAL_CopyTime(const SYSTEMTIME *from, SYSTEMTIME *to)
} }
extern void THEMING_Initialize(void); extern void THEMING_Initialize(void);
extern void THEMING_Uninitialize(void);
extern LRESULT THEMING_CallOriginalClass(HWND, UINT, WPARAM, LPARAM); extern LRESULT THEMING_CallOriginalClass(HWND, UINT, WPARAM, LPARAM);
extern void THEMING_SetSubclassData(HWND, ULONG_PTR); extern void THEMING_SetSubclassData(HWND, ULONG_PTR);

View File

@ -150,6 +150,9 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
break; break;
case DLL_PROCESS_DETACH: case DLL_PROCESS_DETACH:
/* clean up subclassing */
THEMING_Uninitialize();
/* unregister all common control classes */ /* unregister all common control classes */
ANIMATE_Unregister (); ANIMATE_Unregister ();
COMBOEX_Unregister (); COMBOEX_Unregister ();

View File

@ -146,6 +146,20 @@ void THEMING_Initialize (void)
} }
} }
/***********************************************************************
* THEMING_Uninitialize
*
* Unregister shadow classes for standard controls.
*/
void THEMING_Uninitialize (void)
{
int i;
for (i = 0; i < NUM_SUBCLASSES; i++)
{
UnregisterClassW (subclasses[i].className, NULL);
}
}
/*********************************************************************** /***********************************************************************
* THEMING_CallOriginalClass * THEMING_CallOriginalClass
* *