violation d'accès lors de l'appel de leftview
Bonjour,
j'ai une application mfc de type explorateur window.
J'ai ajouté les deux méthodes suivantes a Childfrm.cpp
Code:
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;
} |
J'ai voulu maintenant accéder a CLeftView afin d'ajouter des éléments dans le tree a partir de CProjectDoc.
Voilà ce que je les ai écri:
Code:
1 2 3 4 5
|
CChildFrame *pvi=(CChildFrame *)AfxGetMainWnd()->GetActiveWindow();
CLeftView * left=pvi->GetLeftPane();
CTreeCtrl & ptree=left->GetTreeCtrl();
ptree.InsertItem("aaaa",0,0); |
Le pb se pose à partir de la deuxième ligne et le message d'une violation d'accées s'apparait:
et l'exécutable s'arrête dans cette fonction:
Code:
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(); |
Il s'arrête dans la ligne de if qui se trouve dans le fichier objcore.cpp
et voilà le message d'erreur exactement:
Citation:
Exception de première chance à 0x787b9fdc (mfc90d.dll) dans Project.exe*: 0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0xcdcdcd01.
Merci pour vos aides