我的DLL中Create了一个窗口,但是在DLL的ExitInstance() 函数中调用该窗口的DestroyWindow()函数时,afxMapHWND()返回的HandleMap 是NULL的断言失败为什么???
AriDo 2001-06-29 03:16:23 以下是涉及出错的代码(被包装在DLL中)
CMyWnd *m_pMyWnd;
BOOL CDLLApp::InitInstance()
{
...
if (m_pMyWnd->Create(NULL) == FALSE)
return FALSE;
...
return CWinApp::InitInstance();
}
int CDLLApp::ExitInstance()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState( ));
...
if (m_pMyWnd != NULL)
{
m_pMyWnd ->DestroyWindow();
m_pMyWnd = NULL;
}
...
return CWinApp::ExitInstance();
}
在CWnd::DestroyWindow()中 CHandleMap* pMap = afxMapHWND(); 返回的pMap为NULL。然后断言失败。
我跟了一下原因可能是afxMapHWND()函数中的
AFX_MODULE_THREAD_STATE* pState = AfxGetModuleThreadState();
返回的pState指向的地址并不是当前DLL的导致afxMapHWND()返回为NULL。但是不知道怎么解决。请大家帮忙!!!