Hallo,
ich habe ein MFC ActiveX, welches ich auf einer Form habe. Diese Form ist ausgeblendet, also "Hide()". Doch wenn ich mein Programm beende, und das Fenster noch versteckt ist, dann bekomme ich eine "Debug Assertion"-Fehlermeldung. Die Fehlermeldung kommt aber nur für ca. 1 sekunde, und geht dann selbständig zu.
Doch wenn ich das Programm beende, wärend das Fenstet angezeigt wird, dann bekomme ich diese Fehler nicht.
Der Fehler kommt auf nur, wenn ich das Programm nicht im Debug-Modus ausführe. Also ich Debug-Modus läuft es fehlerfrei.
Woran könnte das liegen? Könnte es ein Timing-problem bei der destruktion sein ?
Gruß Stu
[Edit]
Ich hab den Fehler mit nem Screnn mal eingefangen:
BOOL CWnd::DestroyWindow()
{
CWnd* pWnd;
CHandleMap* pMap;
HWND hWndOrig;
BOOL bResult;
if ((m_hWnd == NULL) && (m_pCtrlSite == NULL))
return FALSE;
bResult = FALSE;
pMap = NULL;
pWnd = NULL;
hWndOrig = NULL;
if (m_hWnd != NULL)
{
pMap = afxMapHWND();
ENSURE(pMap != NULL);
pWnd = (CWnd*)pMap->LookupPermanent(m_hWnd);
#ifdef _DEBUG
hWndOrig = m_hWnd;
#endif
}
#ifdef _AFX_NO_OCC_SUPPORT
if (m_hWnd != NULL)
bResult = ::DestroyWindow(m_hWnd);
#else //_AFX_NO_OCC_SUPPORT
if ((m_hWnd != NULL) || (m_pCtrlSite != NULL))
{
if (m_pCtrlSite == NULL)
bResult = ::DestroyWindow(m_hWnd);
else
bResult = m_pCtrlSite->DestroyControl();
}
#endif //_AFX_NO_OCC_SUPPORT
if (hWndOrig != NULL)
{
// Note that 'this' may have been deleted at this point,
// (but only if pWnd != NULL)
if (pWnd != NULL)
{
// Should have been detached by OnNcDestroy
#ifdef _DEBUG
ASSERT(pMap->LookupPermanent(hWndOrig) == NULL);
#endif
}
else
{
#ifdef _DEBUG
ASSERT(m_hWnd == hWndOrig);
#endif
// Detach after DestroyWindow called just in case
Detach();
}
}
return bResult;
}
Zeile 1007:
ASSERT(pMap->LookupPermanent(hWndOrig) == NULL);