Bonjour,
Je vais essayer d'exposer mon problème.
Je suis entrain de réaliser une application, en visual c++ 6.0, permettant de paramètrer plusieurs type de matériel. Donc j'utilise une MDI, avec un document par type de matétiel. Chaque document à une seule vue correpondant à un formulaire.
L'utilisateur n'a le droit d'avoir qu'un document ouvert à la fois.
Dans mon menu, il choisit le matériel qu'il veut configurer et ça lui ouvre le bon document et ferme celui en cours si besoin est.
Jusque là tout va bien !
Le problème est que si j'ai des boutons dans ma vue (genre un bouton OK pour valider le formulaire), je n'arrive pas à recevoir le message comme quoi j'appuie sur ce bouton.
Petites précisions, chaque vue à sa propre classe à laquelle j'ai associé (mappé) les messages des boutons de la vue.
Donc j'ai essayé de récupérer la frame contenant la vue et de faire un setActiveView... mais ça ne marche pas.
Voilà ce que ça donne, en gros, lorsque l'utilisateur choisi un nouveau matériel à configurer :
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
17
18
19
20
21
22
23 CMainFrame *frame=(CMainFrame *)AfxGetMainWnd(); // Je récupère le document courant CDocument *currentDoc = frame->GetActiveDocument(); // Je le ferme si il existe if(currentDoc != NULL) { POSITION pos = currentDoc->GetFirstViewPosition(); CView* pView = currentDoc->GetNextView(pos); if(pView) pView->GetParentFrame()->PostMessage(WM_SYSCOMMAND,SC_CLOSE,0); } //Je récupère le bon CDocTemplate // dans la liste des CDocTemplates de l'appication CDocTemplate * tpl = GetTemplateAt(MAT1); // Je crée le document CDocument *newDoc = tpl->OpenDocumentFile(NULL); POSITION viewPos = newDoc->GetFirstViewPosition(); CView * newView = newDoc->GetNextView(viewPos); CFrameWnd* newFrame = newView->GetParentFrame(); newFrame->SetActiveView(newView,TRUE);
J'espère avoir été à peu près clair...
Merci de m'avoir lu jusque là !!!
Partager