Bonjour,
j'ai une application mfc de type explorateur window.
J'ai ajouté les deux méthodes suivantes a Childfrm.cpp
J'ai voulu maintenant accéder a CLeftView afin d'ajouter des éléments dans le tree a partir de CProjectDoc.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 CProjectView* CChildFrame::GetRightPane() { CWnd* pWnd = m_wndSplitter.GetPane(0, 1); CProjectView* pView = DYNAMIC_DOWNCAST(CProjectViewView, pWnd); return pView } CLeftView* CChildFrame::GetLeftPane() { CWnd* pWnd = m_wndSplitter.GetPane(0, 0); CLeftView *pTree = DYNAMIC_DOWNCAST(CLeftView, pWnd); return pTree; }
Voilà ce que je les ai écri:
Le pb se pose à partir de la deuxième ligne et le message d'une violation d'accées s'apparait:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 CChildFrame *pvi=(CChildFrame *)AfxGetMainWnd()->GetActiveWindow(); CLeftView * left=pvi->GetLeftPane(); CTreeCtrl & ptree=left->GetTreeCtrl(); ptree.InsertItem("aaaa",0,0);
et l'exécutable s'arrête dans cette fonction:
Il s'arrête dans la ligne de if qui se trouve dans le fichier objcore.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 if (!AfxIsValidAddress(pOb, pOb->GetRuntimeClass()->m_nObjectSize, FALSE)) { TRACE(traceAppMsg, 0, "ASSERT_VALID fails with illegal pointer.\n"); if (AfxAssertFailedLine(lpszFileName, nLine)) AfxDebugBreak(); return; // quick escape } pOb->AssertValid();
et voilà le message d'erreur exactement:
Merci pour vos aidesException de première chance à 0x787b9fdc (mfc90d.dll) dans Project.exe*: 0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0xcdcdcd01.
Partager