CListBox::ResetContent() - ASSERT fejl
Jeg er ved at lave mit første rigtige MFC program - et simpelt regnskabsprogram - og der er noget som driller.Jeg har lavet et view, som indeholder en Form, som igen indeholder en ListBox (m_ctlList).
I IndBilagView.h er m_ctlList defineret som:
public:
//{{AFX_DATA(CIndBilagView)
enum { IDD = IDD_INDBILAG };
CListBox m_ctlList;
int m_nBilagnr;
(....)
I IndBilagView.cpp har jeg overloaded OnInitialUpdate til:
void CIndBilagView::OnInitialUpdate()
{
m_ctlList.ResetContent(); // Det er her den er gal
CBilagsliste& Bilagsliste = GetDocument()->m_Bilagsliste;
POSITION pos = Bilagsliste.GetHeadPosition();
while(pos)
{
CBilag* pBilag = Bilagsliste.GetNext(pos);
FoejBilagTilListBox(pBilag);
}
}
Når jeg skifter til mit view får jeg følgende meddelse:
REGNSKAB forårsagede en undtagelse 03H i modul MFC42D.DLL på adressen 0157:5f484d3b.
Indhold af registrene:
(...)
Hvis jeg vælger ignorer i dialogboxen kommer mit view frem som planlagt og programmet fortsætter.
Hvis jeg vælger forsøg igen kommer jeg ud i debuggeren, som stopper ved denne linie i \"Inlines for AFXWIN.H (part 2)\":
_AFXWIN_INLINE void CListBox::ResetContent()
{ ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, LB_RESETCONTENT, 0, 0); }
De tre sidste kald i callstacken er:
CListBox::ResetContent() line 675 + 46 bytes
CIndBilagView::OnInitialUpdate() line 36
CMainFrame::VaelgView(unsigned int 32775) line 144 + 16 bytes
dvs. CListBox::ResetContent() er det kald, der forårsager fejlen eller rettere så er det ASSERT(::IsWindow(m_hWnd));
Hvorfor, hvad er der galt??
