bonjour,
Enfin j'ai compris comment interargir entre 2 fenetres de classe CView ou dérivées.
Petit résumé, vous me corriger si je me trompe;
Premierement,
Creer les dossier pour chaque fenetres en supprimant pour les autres dossier la fonction (voir la F.A.Q de farscape
http://cpp.developpez.com/faq/vc/?pa...OnSameDocument :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
pDocTemplate = new CMultiDocTemplate(
IDR_ROBOTTYPE,
RUNTIME_CLASS(CROBOTDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CInterfaceCAN));
AddDocTemplate(pDocTemplate);
pDocTemplate2 = new CMultiDocTemplate(
IDR_ROBOTTYPE,
RUNTIME_CLASS(CROBOTDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CReseauxCAN));
// pas de AddocTemplate. |
Ensuite je creer la 2 émes fenetres dans la premiere fenetre:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
void CInterfaceCAN::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
TheApp=(CROBOTApp*)AfxGetApp();
pFrame=TheApp->pDocTemplate2->CreateNewFrame(GetDocument(),GetParentFrame());
TheApp->pDocTemplate->InitialUpdateFrame(pFrame,GetDocument(),1);
POSITION pos=GetDocument()->GetFirstViewPosition();
// CView *pView;
do
{
pView=GetDocument()->GetNextView(pos);
if(pView && pView->IsKindOf(RUNTIME_CLASS(CReseauxCAN))) m_Reseaux=static_cast<CReseauxCAN *>(pView);
}
while(pView);
} |
Une fois ces étapes fait, je communique entre les 2 fenetres via le document:
Code:
1 2 3 4 5 6 7 8 9 10
|
void CInterfaceCAN::OnButtonConfigCAN()
{
CROBOTDoc *pDoc = (CROBOTDoc *)GetDocument();
pDoc->hello = "Bonjoour";
//mise a jour des controles de la view.
UpdateData(TRUE);
pDoc->UpdateAllViews(NULL) ;
} |
Code:
1 2 3 4 5 6 7 8 9
|
void CReseauxCAN::OnButtondemarrer()
{
CROBOTDoc* pDoc= (CROBOTDoc*)GetDocument() ;
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
SetDlgItemText(IDC_EDIT1,pDoc->hello);
} |
Et ça marche comme je le souhiatais.
Merci à tous pour l'aide apporté ça faisait quelque mois que je galérais