Freigeben über


Erstellen eines moduslosen Eigenschaftenblatts

Normalerweise sind die Eigenschaftenblätter, die Sie erstellen, modal. Bei Verwendung eines modalen Eigenschaftenblatts muss der Benutzer das Eigenschaftenblatt schließen, bevor er einen anderen Teil der Anwendung verwendet. In diesem Artikel werden Methoden beschrieben, mit denen Sie ein modales Eigenschaftenblatt erstellen können, das es dem Benutzer ermöglicht, das Eigenschaftenblatt offen zu halten, während andere Teile der Anwendung verwendet werden.

Um eine Eigenschaftsseite als nicht modales Dialogfeld zu erstellen, rufen Sie CPropertySheet::Create anstelle von DoModal auf. Sie müssen auch einige zusätzliche Aufgaben implementieren, um eine nicht modale Eigenschaftsseite zu unterstützen.

Eine der zusätzlichen Aufgaben besteht im Austausch von Daten zwischen dem Eigenschaftenblatt und dem externen Objekt, das beim Öffnen des Eigenschaftenblatts geändert wird. Dies ist allgemein die gleiche Aufgabe wie bei nicht modalen Standard-Dialogfeldern. Ein Element dieser Aufgabe ist die Implementierung eines Kommunikationskanals zwischen der nicht modalen Eigenschaftsseite und dem externen Objekt, für das die Eigenschaftseinstellungen gelten. Diese Implementierung ist wesentlich einfacher, wenn Sie für Ihre nicht modale Eigenschaftsseite eine Klasse von CPropertySheet ableiten. In diesem Artikel wird davon ausgegangen, dass Sie dies getan haben.

Eine Methode für die Kommunikation zwischen der nicht modalen Eigenschaftsseite und dem externen Objekt (z.B. der aktuellen Auswahl in einer Ansicht) besteht darin, einen Zeiger von der Eigenschaftsseite auf das externe Objekt zu definieren. Definieren Sie eine Funktion (wie etwa SetMyExternalObject) in der CPropertySheetabgeleiteten Klasse, um den Zeiger zu ändern, wenn sich der Fokus von einem externen Objekt in ein anderes ändert. Die SetMyExternalObject Funktion muss die Einstellungen für jede Eigenschaftenseite zurücksetzen, um das neu ausgewählte externe Objekt widerzuspiegeln. Dazu muss die SetMyExternalObject Funktion auf die CPropertyPage-Objekte zugreifen können, die zur CPropertySheet Klasse gehören.

Die bequemste Möglichkeit zum Bereitstellen des Zugriffs auf Eigenschaftenseiten innerhalb eines Eigenschaftenblatts besteht darin, die CPropertyPage Objekte in das CPropertySheetabgeleitete Objekt einzubetten. Das Einbetten von CPropertyPage Objekten in das CPropertySheetabgeleitete Objekt unterscheidet sich vom typischen Design für modale Dialogfelder, bei dem der Besitzer des Eigenschaftenblatts die CPropertyPage Objekte erstellt und über CPropertySheet::AddPage an das Eigenschaftenblatt übergibt.

Es gibt viele Alternativen für die Benutzeroberfläche, um festzulegen, wann die Einstellungen der modeless-Eigenschaftsseite auf ein externes Objekt angewendet werden sollen. Eine Alternative besteht darin, die Einstellungen der aktuellen Eigenschaftenseite anzuwenden, wenn der Benutzer einen beliebigen Wert ändert. Eine weitere Alternative ist die Bereitstellung einer Übernehmen-Schaltfläche, die dem Benutzer die Möglichkeit bietet, Änderungen in den Eigenschaftsblättern zu sammeln, bevor sie auf das externe Objekt übertragen werden. Informationen zur Handhabung der Übernehmen-Schaltfläche finden Sie in dem Artikel Handhabung der Übernehmen-Schaltfläche.

Siehe auch

Eigenschaftenblätter
Austausch von Daten
Arbeiten mit Dialogfeldern in MFC