Erstellen eines nicht modalen Eigenschaftenblatts

Normalerweise sind die Eigenschaftenblätter, die Sie erstellen, modal.Wenn ein modales Eigenschaftenblatt verwendet, vor der Verwendung eines anderen Teils der Anwendung muss der Benutzer das Eigenschaftenblatt schließen.In diesem Artikel werden Möglichkeiten, die Sie verwenden können, um ein nicht modales Eigenschaftenblatt zu erstellen, das es dem Benutzer ermöglicht, um das Eigenschaftenblatt werden bei der Anwendung geöffnet anderen Teile der Anwendung.

So fügen Sie ein Eigenschaftenblatt als nicht modales Dialogfeld statt als modales Dialogfeld, rufen Sie anstelle CPropertySheet::CreateDoModal anzeigen.Sie müssen einige zusätzliche Aufgaben ebenfalls implementieren, ein nicht modales Eigenschaftenblatt zu unterstützen.

Eine der zusätzlichen Aufgaben ist Austausch von Daten zwischen dem Eigenschaftenblatt und dem externen Objekt, die geändert wird, wenn das Eigenschaftenblatt geöffnet ist.Dies ist im Allgemeinen dieselbe Funktion wie bei der Standardeinstellung nicht modales Dialogfeld.Im Rahmen dieser Aufgabe implementiert einen Channel der Kommunikation zwischen dem nicht modalen Eigenschaftenblatt und dem externen Objekt, auf das die Einstellungen angewendet werden.Diese Implementierung ist weitaus leichter, wenn Sie eine Klasse von CPropertySheet für das nicht modale Eigenschaftenblatt berechnen.Dieser Artikel wird vorausgesetzt, dass Sie bereits getan haben.

Eine Methode für die Kommunikation zwischen dem nicht modalen Eigenschaftenblatt und dem externen Objekt (die aktuelle Auswahl in einer Ansicht z) ist, einen Zeiger aus dem Eigenschaftenblatt für den externen Objekt zu definieren.Definieren Sie eine Funktion (etwa SetMyExternalObject) - CPropertySheet in die abgeleitete Klasse, wenn der Zeiger zu ändern, sobald sich der Fokus von einem externen Objekt in eine andere geändert wird.Die SetMyExternalObject-Funktion muss die Einstellungen zurücksetzen, damit jede Eigenschaftenseite das neu ausgewählte externe Objekt widergespiegelt.Um dies zu erreichen, muss die SetMyExternalObject-Funktion in der Lage sein, die CPropertyPage-Objekte zuzugreifen, die der CPropertySheet-Klasse gehören.

Die bequemste Methode für den Zugriff auf den Eigenschaftenseiten innerhalb eines Eigenschaftenblatts zu ermöglichen, die CPropertyPage-Objekte in CPropertySheet abgeleitetes Objekt eingebettet werden soll.Mithilfe von eingebetteten CPropertyPage-Objekte in CPropertySheet abgeleitetes Objekt unterscheidet sich von der typischen Entwurf für modale Dialogfelder, in der der Besitzer des Eigenschaftenblatts die CPropertyPage-Objekte erstellt und diese dem Eigenschaftenblatt zu CPropertySheet::AddPage übergibt.

Es gibt zahlreiche alternative Benutzeroberfläche mit dem bestimmt wird, wann die Einstellungen des nicht modalen Eigenschaftenblatts an ein externes Objekt angewendet werden sollen.Eine Alternative besteht darin, die Einstellungen der aktuellen Seite Eigenschaften anzuwenden, wenn der Benutzer einen beliebigen Wert ändert.Eine andere Möglichkeit besteht darin, eine Schaltfläche Übernehmen bereitzustellen, die es dem Benutzer ermöglicht, um Änderungen in den Eigenschaftenseiten zu werden, bevor sie in den externen Objekt einen Commit ausführt.Weitere Informationen über Methoden, die Schaltfläche Übernehmen zu behandeln, finden Sie im Artikel Die Behandlung übernehmens-Schaltfläche.

Siehe auch

Referenz

Austausch-Daten

Konzepte

Eigenschaftenblätter (MFC)

Lebenszyklus eines Dialogfelds