n0mad inscrit au XXe siècle | C'est un copy-paste d'un de mes projets en cours, j'espère que tu comprendras qqc.
Code :
- // ce code est inclu dans une classe qui derive de CView
- // (vue principale d'un SDI)
- // il cree une frame CPJFrame qui contient une vue CHoryzonVue
- // (qui derive de CScrollView) et l'attache au document en cours
- CFrameWnd* vueCarte = (CFrameWnd*) RUNTIME_CLASS( CPJFrame )->CreateObject(); // on instancie grace au DYNCREATE
- // création du contexte de création :
- CCreateContext* pCtxtCarte = new CCreateContext;
- pCtxtCarte->m_pCurrentDoc = GetDocument();
- pCtxtCarte->m_pCurrentFrame = (CFrameWnd*) AfxGetApp()->m_pMainWnd;
- pCtxtCarte->m_pLastView = this;
- pCtxtCarte->m_pNewDocTemplate = NULL;
- pCtxtCarte->m_pNewViewClass = RUNTIME_CLASS(CHoryzonView); // la CScrollView
- // rectangle :
- CRect rectDef(0,0,760,550);
- // Affichage de la frame :
- vueCarte->Create(NULL,"Carte de la Galaxie", WS_OVERLAPPEDWINDOW ,rectDef,NULL,NULL,0,pCtxtCarte);
- vueCarte->InitialUpdateFrame(GetDocument(),TRUE); // et voila
- delete pCtxtCarte;
|
Là, il y a tout. D'après ce que j'ai lu de ton code, tu essaies de créer toi même ta CView et c'est pas bon. Une CView doit vivre dans une CFrameWnd sinon elle ne peut être attachée à un CDocument. Avec ça, la nouvelle vue recoie les evenements lancés par la méthode CDocument::UpdateAllViews() ce qui est bien pratique pour les mises à jour. ---------------
Pipiru piru piru pipiru pi
|