Laden...

Ein seltsamer Fehler

Erstellt von Stu42 vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.522 Views
S
Stu42 Themenstarter:in
506 Beiträge seit 2006
vor 17 Jahren
Ein seltsamer Fehler

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:

L
273 Beiträge seit 2006
vor 17 Jahren

was steht den in der wincore.cpp Zeile 1007 ?

S
Stu42 Themenstarter:in
506 Beiträge seit 2006
vor 17 Jahren

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);