Seltsame ASSERT anweisung in mfc100ud.dll!CWnd::Attach(HWND__ *)
-
BOOL CWnd::Attach(HWND hWndNew) { ASSERT(m_hWnd == NULL); // only attach once, detach on destroy
wird aufgerufen von
BOOL CWnd::SubclassWindow(HWND hWnd) { if (!Attach(hWnd)) return FALSE;
welches wiederrum ein hWnd!=NULL bekommt:
BOOL CWnd::SubclassDlgItem(UINT nID, CWnd* pParent) { ASSERT(pParent != NULL); ASSERT(::IsWindow(pParent->m_hWnd)); // check for normal dialog control first HWND hWndControl = ::GetDlgItem(pParent->m_hWnd, nID); if (hWndControl != NULL) return SubclassWindow(hWndControl);
alles in wincore.cpp und daher nicht änderbar!
was ist der sinn dahinter?
welchen fehler hat ein programm das diesen ASSERT mit diesem call-stack auslöst?
-
Das ist nicht seltsam. Das ist alleine Dein Bier und Dein Fehler!
Du hast einem CWnd Objekt bereits ein Fenster zugeweisen. Zweimal ist nicht erlaubt.
Geh mal im Callstack zurück auf Deinen Code und Du wirst sehen, dass diesem fenster ein m_hWnd bereots zugewiesen ist.