Hilfe bei MDI Projekt

Perdan

Mitglied
Hallo zusammen,

ich habe schon ein paar Dialogbasierte Projekte mit MFC hinter mir, aber nun muss ich ein MDI-Projekt realisieren.Dabei habe ich allerdings noch ein paar Probleme mit der Doc/View Architektur :-(

1. Wie erstelle ich eine neue / zusätzliche View für ein Dokument?

2. Wie erstelle ich ein neues Dokument und wie sehe ich welche Dokumente es schon gibt aktuell?

Wäre super wenn mir wer weiterhelfen könnte. Auch gerne mit einem Link zu einem guten Tutorial.

MfG

Perdan
 

pschilling

Erfahrenes Mitglied
Hi Perdan,

überprüfe als erstes, ob es überhaupt notwenidig ist ein MDI-Interface zu programmieren.

In den meisten fällen ist ein SDI-Interface absolut ausreichend!

Aber wenn es wirklich ein MDI sein muss, dann poste nochmal, dann schicke ich dir einige Code-Schnipsel, die dir weiterhelfen werden ;-)

Bin jetzt zu faul danach zu suchen.. bin halt Programmierer ;-)

Schöne Grüße,

Pit
 

Perdan

Mitglied
Servus,

Das mit der Überlegung ist ein guter Tip, leider hat das mein chef für mich entschieden.
Muss also MDI nehmen ob ich will oder nicht.

Wenn du was hilfreiches zu meinen Fragen hättest wäre ich dir sehr dankbar. die Probleme sind immernoch aktuell.

MfG

Perdan
 

pschilling

Erfahrenes Mitglied
Hallo Perdan,

also zu 1:

Du erstellst einfach eine von CView abgeleitete Klasse und rufst von deinem entsprechenden Dokument die AddView-Methode auf.

Code:
.
.
CMyView *m_pMyView = new CMyView();
m_myDocument.AddView(m_pMyView);
.
.

Zu 2:

Du erstellst ein neues MDI-Document-Template folgendermaßen:


Code:
	CMultiDocTemplate* pDocTemplate;
	pDocTemplate = new CMultiDocTemplate(IDR_MDITestTYPE,
		RUNTIME_CLASS(CMDITestDoc),
		RUNTIME_CLASS(CChildFrame), // Benutzerspezifischer MDI-Child-Rahmen
		RUNTIME_CLASS(CMDITestView));
	if (!pDocTemplate)
		return FALSE;
	AddDocTemplate(pDocTemplate);

Und so kannst du alle Templates ermitteln :

Code:
    POSITION pos = GetFirstDocTemplatePosition();
    int docCount = 0;
    while( pos != NULL ) {
        CDocTemplate *pDocTemplate = GetNextDocTemplate(pos);
        docCount++;
    }

Sollte dir weiterhelfen, denk ich...

Schönen Gruß,

Pit
 

sun-fire

Grünschnabel
Hi Perdan! :)

Also, vor ein paar Monaten stand ich vor dem gleichen Problem wie Du. Ich sollte eine MDI-Anwendung programmieren und hatte bis dahin nur dialog-basiert gearbeitet. Da heißt es ganz schön umdenken... ;-)

Mir hat http://www.cpp-tutor.de mit seinen entsprechenden Unterkapiteln sehr geholfen, einen Einstieg in das Thema zu bekommen. Ist zwar schon ein wenig angestaubt, aber trotzdem noch ganz brauchbar.

Also, falls Du nicht inzwischen zum MDI-Profi geworden bist: vielleicht ist es Dir auch eine Hilfe...

Viele Grüße
Tanja