MDI spezielles Child-Window
-
Hallo!
Ich möchte in meinem MDI-Prog (CFormview), dass wenn man auf Neu... klickt, ein Auswahldialog erscheint, in dem man zwischen vorgefertigten Formview-Dialogen wählen kann. Der ausgewählte Dialog soll wie eine Vorlage als neues "Dokument" angezeigt werden.
Das mit dem Auswahl-Dialog ist kein Problem, nur weiß ich nicht, wie ich gezielt einen speziellen Dialog als neues ChildView-Fenster anzeigen lasse...
-
Dazu musst Du das gewisse CDocTemplate kennen, welches in InitInstance in die DocTemplate-Liste von CWinApp eingefügt wird. Am günstigsten ist, dieses DocTemplate nochmal als irgendwo als Pointer zu speichern, wo man leicht drauf zu greifen kann.
Dann mit CreateNewFrame und InitialUpdateFrame das neue Frame initialisieren!
-
Folgendes steht ein meiner CProgrammApp in der InitInstance:
pDocTemplate = new CMultiDocTemplate( ... RUNTIME_CLASS(CProgrammDoc), RUNTIME_CLASS(CChildFrame), // Benutzerspezifischer MDI-Child-Rahmen RUNTIME_CLASS(CProgrammView)); AddDocTemplate(pDocTemplate);
Ich nehme an, du meinst, dass ich dieses CChildFrame kennen muss, oder nicht?
Poste mir doch bitte genau, welchen Pointer ich erstellen muss, und wo/wie ich diese CreateNewFrame() u. InitialUpdateFrame() aufrufen muss.greetz
tompo
-
Nöö, hab doch nix von CChildFrame gesagt!!
InitInstance() { pDocTemplate = new CMultiDocTemplate( ... RUNTIME_CLASS(CProgrammDoc), RUNTIME_CLASS(CChildFrame), RUNTIME_CLASS(CProgramm1View)); // FormView1 !!! AddDocTemplate(pDocTemplate); pDocTemplate = new CMultiDocTemplate( ... RUNTIME_CLASS(CProgrammDoc), RUNTIME_CLASS(CChildFrame), RUNTIME_CLASS(CProgramm2View)); // FormView2 !!! AddDocTemplate(pDocTemplate); pDocTemplate = new CMultiDocTemplate( ... RUNTIME_CLASS(CProgrammDoc), RUNTIME_CLASS(CChildFrame), // Benutzerspezifischer MDI-Child-Rahmen RUNTIME_CLASS(CProgramm3View)); // FormView3 !!! AddDocTemplate(pDocTemplate); } // FormViewID = [0..N] Indizes für Deine verschiedenen FormViews, so wie sie // innerhalb von InitInstance eingefügt werden void CMyApp::CreateFrameForFormView( int FormViewID) { POSITION pos = GetFirstDocTemplatePosition(); for( int i=0; pos != NULL; i++) { CDocTemplate* pDT = GetNextDocTemplate( pos); if( i == FormViewID) { CFrameWnd* pFrame = pDT->CreateNewFrame(); pFrame->InitialUpdateFrame(); break; } } }
[ Dieser Beitrag wurde am 11.10.2002 um 14:55 Uhr von RenéG editiert. ]