Bonjour,
j'ai une application mfc de type explorateur window.
J'ai ajouté les deux méthodes suivantes a Childfrm.cpp
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;
}
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 : 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);
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 : 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();
Il s'arrête dans la ligne de if qui se trouve dans le fichier objcore.cpp
et voilà le message d'erreur exactement:
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