Bonjour, je programme sous visual et desire afficherplusieurs vues dans une sdi,
g donc crée et genere les classes des differentes vues avec classwizard
par exemple :
IMPLEMENT_DYNCREATE(CTrajectoire, CFormView)
CTrajectoire::CTrajectoire()
: CFormView(CTrajectoire::IDD)
{
//{{AFX_DATA_INIT(CTrajectoire)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
CTrajectoire::~CTrajectoire()
{
}
void CTrajectoire::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTrajectoire)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTrajectoire, CFormView)
//{{AFX_MSG_MAP(CTrajectoire)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
#ifdef _DEBUG
void CTrajectoire::AssertValid() const
{
CFormView::AssertValid();
}
void CTrajectoire::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif //_DEBUG
dans la mainframe g ajouté
void CMainFrame::SwitchToView(UINT ViewID)
{
CView* pOldActiveView = GetActiveView();
CView* pNewActiveView = (CView*) GetDlgItem(ViewID);
if (pNewActiveView == NULL)
{
switch (ViewID)
{
case IDD_TRAJECTOIRE:
pNewActiveView = (CView*) new CTrajectoire;
break;
default:
AfxMessageBox("ID de vue non valide");
return;
}
CCreateContext context;
context.m_pCurrentDoc = pOldActiveView->GetDocument();
pNewActiveView->Create(NULL, NULL,0L,
CFrameWnd::rectDefault, this, ViewID, &context);
pNewActiveView->OnInitialUpdate();
}
SetActiveView(pNewActiveView);
pNewActiveView->ShowWindow(SW_SHOW);
pOldActiveView->ShowWindow(SW_HIDE);
pOldActiveView->SetDlgCtrlID(m_currentViewID);
pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
m_currentViewID=ViewID;
RecalcLayout();
}
et dans la 1er vue affichée:
void CChoixDlg::OnSatellite()
{
((CMainFrame*)GetParentFrame())->SwitchToView(IDD_TRAJECTOIRE);
}
ca ne marche pas, je pense que dans la derrnier fonction je ne recupere pas la bonne frame car quand je met un autre Id de boite de dialogue, la fonction switch ne rentre pas dans le default affichant "id non valide"
pouvez vous me dire ce que je dois faire
Merci