OCX module state problem in VS2005
Hi,
I have an OCX ( a regular MFC DLL dynamically linked with MFC, built
with _USRDLL and _AFXDLL). The problem I am facing is that when my MFC
application load this OCX, the m_classList member variable of
AFX_MODULE_STATE get resets to NULL. This was not happening with
VS2003.
OCX IinitInstance is defined as
BOOL CFooApp::InitInstance()
{
return COleControlModule::InitInstance();
}
CFooApp is derived from COleControlModule and COleControlModule is
derived from CWinApp.
The function exposed in this OCX is
STDAPI DllRegisterServer(void)
{
AFX_MANAGE_STATE(_afxModuleAddrThis);
if (!COleObjectFactoryEx::UpdateRegistryAll(TRUE))
return ResultFromScode(SELFREG_E_CLASS);
return NOERROR;
}
From the application I am calling, DllRegisterServer exposed in this
OCX.
So wanted to know what is wrong in this OCX which is causing the
AFX_MODULE_STATE class list to be deletd or why it is not restoring
the MainApp manage state ? Why this problem in VS2005 ?
After this DLL gets loaded, the for loop in follwing code is not
executed and MessageBox "Found" not displayed.
AFX_MODULE_STATE* pModuleState = AfxGetModuleState();
CRuntimeClass* pClass=NULL;
for (pClass = pModuleState->m_classList; pClass != NULL;
pClass = pClass->m_pNextClass)
{
if (lstrcmpA("COrLongProp", pClass->m_lpszClassName) == 0)
{
AfxMessageBox("Found");
}
}
}
The OCX works fine in VS2003. Problem occured when the OCX was moved
to VS2005 ?