Registerdialog

( CPropertySheet, CPropertyPage )


Einleitung

Um diese Anleitung nicht zu lang werden zu lassen, schreibe ich immer nur die Dinge auf, die verändert werden müssen. Bei Codeabschnitten werden die Teile, die von mir verändert wurden fett geschrieben.

Beispiel

Aufgabe

Dieses Projekt dient dazu, zu zeigen, wie ein einfacher Registerdialog funktioniert.

Lösung in Prosa

  1. Um einen einen Registerdialog zu erstellen braucht man zuerst einmal ein paar Seiten. Ich hab 2 gemacht:
  2. Für diese Dialoge muss man noch jeweils eine Klasse anlegen. Diese nicht von CDialog sondern von CPropertyPage ableiten:

  3. Nun braucht man nur noch folgenden fett markierten Code dort einfügen, von wo aus der Registerdialog ausgeführt werden soll:
    void CPropertyView::OnInitialUpdate()
    {
    	CFormView::OnInitialUpdate();
    	GetParentFrame()->RecalcLayout();
    	ResizeParentToFit();
    
    	// Der folgende Code könnte genauso wo anders ausgeführt werden
    	// zum Beispiel Beim Klick auf einen Button oder auf einen
    	// Menüeintrag
    	
    	// Einen Registerdialog anlegen
    	CPropertySheet sheet;
    
    	// Die Seiten anlegen
    	mypage1 page1;
    	mypage2 page2;
    
    	// Die Seiten zum Registerdialog hinzufügen
    	sheet.AddPage(&page1);
    	sheet.AddPage(&page2);
    
    	// Den Registerdialog modal starten
    	sheet.DoModal();
    	// Programm fortsetzen
    }
        
    Ich hab das hier gleich am Programmanfang gemacht. Man könnte es aber auch als Reaktion auf einen Button tun:
    void CPropertyView::OnButton1() 
    {
    	// Der folgende Code könnte genauso wo anders ausgeführt werden
    	// zum Beispiel Beim Klick auf einen Button oder auf einen
    	// Menüeintrag
    	
    	// Einen Registerdialog anlegen
    	CPropertySheet sheet;
    
    	// Die Seiten anlegen
    	mypage1 page1;
    	mypage2 page2;
    
    	// Die Seiten zum Registerdialog hinzufügen
    	sheet.AddPage(&page1);
    	sheet.AddPage(&page2);
    
    	// Den Registerdialog modal starten
    	sheet.DoModal();
    	// Programm fortsetzen
    }
        
    In der Datei, in der man den Programmcode zum Aufruf des Registerdialogs geschrieben hat, müssen nur noch die Includes für die 2 Dialogklassen (, die die wir vorher von CPropertyPage abgeleitet haben) hinzugefügt werden:
    // propertyView.cpp : Implementierung der Klasse CPropertyView
    //
    
    #include "stdafx.h"
    #include "property.h"
    
    #include "propertyDoc.h"
    #include "propertyView.h"
    
    #include "mypage1.h"
    #include "mypage2.h"
        
  4. Fertig