Informationen über Eigenschaftenblätter

Ein Eigenschaftenblatt ist ein Fenster, in dem der Benutzer die Eigenschaften eines Elements anzeigen und bearbeiten kann. Beispielsweise kann eine Tabellenkalkulationsanwendung ein Eigenschaftenblatt verwenden, damit der Benutzer die Schriftart- und Rahmeneigenschaften einer Zelle festlegen oder die Eigenschaften eines Geräts anzeigen und festlegen kann, z. B. ein Datenträgerlaufwerk, drucker oder eine Maus.

In diesem Abschnitt werden die folgenden Themen erläutert.

Grundlagen des Eigenschaftenblatts

Um Eigenschaftenblätter in Ihrer Anwendung zu implementieren, fügen Sie die Headerdatei Prsht.h in Ihr Projekt ein. Prsht.h enthält alle Bezeichner, die mit Eigenschaftenblättern verwendet werden.

Ein Eigenschaftenblatt enthält ein oder mehrere überlappende untergeordnete Fenster namens Seiten, die jeweils Steuerungsfenster zum Festlegen einer Gruppe verwandter Eigenschaften enthalten. Beispielsweise kann eine Seite die Steuerelemente zum Festlegen der Schriftarteigenschaften eines Elements enthalten, z. B. Typformat, Punktgröße, Farbe usw. Jede Seite verfügt über eine Registerkarte, die der Benutzer auswählen kann, um die Seite in den Vordergrund des Eigenschaftenblatts zu bringen. Beispielsweise zeigt die Date-Time-Systemsteuerungsanwendung das folgende Eigenschaftenblatt an.

Screenshot eines Eigenschaftenblatts mit zwei Registerkarten, von denen eine eine Uhr und ein monatliches Kalendersteuerelement anzeigt

Ein Standardeigenschaftenblatt mit mehreren Registerkartenseiten ermöglicht dem Benutzer den zufälligen Zugriff auf alle Eigenschaften. Wenn es sinnvoller ist, Eigenschaften nacheinander festzulegen, können Sie einen Assistenten verwenden.

Eigenschaftenblattdialogfelder

Ein Eigenschaftenblatt und die darin enthaltenen Seiten sind tatsächlich Dialogfelder. Das Eigenschaftenblatt ist ein systemdefiniertes Dialogfeld, das die Seiten verwaltet und einen gemeinsamen Container für sie bereitstellt. Ein Eigenschaftenblattdialogfeld kann modal oder moduslos sein. Sie enthält einen Frame, eine Titelleiste und vier Schaltflächen: OK, Abbrechen, Anwenden und (optional) Hilfe. Die Dialogfeldprozeduren für die Seiten erhalten Benachrichtigungscodes in Form von WM_NOTIFY Nachrichten, wenn der Benutzer auf die Schaltflächen klickt.

Hinweis

Nicht alle Informationen in diesem Abschnitt gelten für Assistenten, die ein etwas anderes Aussehen und Verhalten aufweisen. Beispielsweise verfügen Assistenten über einen anderen Satz von Schaltflächen und keine Registerkarten. Weitere Informationen finden Sie unter Erstellen von Assistenten.

Jede Seite in einem Eigenschaftenblatt ist ein anwendungsdefiniertes dialogfeld ohne Modus, das die Steuerelementfenster verwaltet, die zum Anzeigen und Bearbeiten der Eigenschaften eines Elements verwendet werden. Sie stellen die Zum Erstellen jeder Seite verwendete Dialogfeldvorlage sowie die Dialogfeldprozedur bereit, die die Steuerelemente verwaltet und die Eigenschaften des entsprechenden Elements festlegt.

Ein Eigenschaftenblatt sendet Benachrichtigungscodes an die Dialogfeldprozedur für eine Seite, wenn die Seite die Aktivierung erhält oder verliert und wenn der Benutzer auf die Schaltfläche OK, Abbrechen, Anwenden oder Hilfe klickt. Die Benachrichtigungen werden in Form von WM_NOTIFY Nachrichten gesendet. Der lParam-Parameter ist die Adresse einer NMHDR-Struktur , die das Fensterhandle zum Dialogfeld Eigenschaftenblatt enthält.

Einige Benachrichtigungscodes erfordern, dass eine Seite entweder TRUE oder FALSE als Antwort auf die WM_NOTIFY Nachricht zurückgibt. Dazu muss die Seite die SetWindowLong-Funktion verwenden, um den DWL_MSGRESULT Wert für das Dialogfeld Seite auf TRUE oder FALSE festzulegen.

Seiten

Ein Eigenschaftenblatt muss mindestens eine Seite enthalten, darf aber nicht mehr als den Wert von MAXPROPPAGES enthalten, der in den Windows-Headerdateien definiert ist. Jede Seite verfügt über einen nullbasierten Index, den das Eigenschaftenblatt entsprechend der Reihenfolge zuweist, in der die Seite dem Eigenschaftenblatt hinzugefügt wird. Die Indizes werden in Nachrichten verwendet, die Sie an das Eigenschaftenblatt senden.

Eine Eigenschaftenseite kann ein geschachteltes Dialogfeld enthalten. Wenn dies der Fall ist, müssen Sie die WS_EX_CONTROLPARENT-Format für das Dialogfeld der obersten Ebene einschließen und die IsDialogMessage-Funktion mit dem Handle zum übergeordneten Dialogfeld aufrufen. Dadurch wird sichergestellt, dass der Benutzer mnemonics und die Navigationstasten des Dialogfelds verwenden kann, um den Fokus auf Steuerelemente im geschachtelten Dialogfeld zu verschieben.

Jede Seite verfügt über ein entsprechendes Symbol und eine entsprechende Bezeichnung. Das Eigenschaftenblatt erstellt eine Registerkarte für jede Seite und zeigt das Symbol und die Bezeichnung auf der Registerkarte an. Es wird erwartet, dass alle Eigenschaftenblattseiten eine Nichtboldschrift verwenden. Um sicherzustellen, dass die Schriftart nicht fett ist, geben Sie die DS_3DLOOK Formatvorlage in der Dialogfeldvorlage an.

Die Dialogfeldprozedur für eine Seite darf die EndDialog-Funktion nicht aufrufen. Dadurch wird das gesamte Eigenschaftenblatt zerstört, nicht nur die Seite.

Die Mindestgröße für eine Eigenschaftenblattseite beträgt horizontal 212 Dialogeinheiten und vertikal 114 Dialogeinheiten. Wenn ein Seitendialogfeld kleiner ist, wird die Seite vergrößert, bis sie die Mindestgröße erfüllt. Die Headerdatei Prsht.h enthält drei Sätze empfohlener Größen für Eigenschaftenblattseiten, wie in der folgenden Tabelle gezeigt.

Size BESCHREIBUNG
PROP_SM_CXDLG Breite einer kleinen Eigenschaftenblattseite in Dialogeinheiten.
PROP_SM_CYDLG Höhe einer kleinen Eigenschaftenblattseite in Dialogeinheiten.
PROP_MED_CXDLG Breite einer mittelgroßen Eigenschaftenblattseite in Dialogeinheiten.
PROP_MED_CYDLG Höhe einer mittelgroßen Eigenschaftenblattseite in Dialogeinheiten.
PROP_LG_CXDLG Breite einer großen Eigenschaftenblattseite in Dialogeinheiten.
PROP_LG_CYDLG Höhe einer großen Eigenschaftenblattseite in Dialogeinheiten.

Die Verwendung dieser empfohlenen Größen trägt dazu bei, die visuelle Konsistenz zwischen Ihrer Anwendung und anderen Microsoft Windows-Anwendungen sicherzustellen.

Im Microsoft Visual Studio-Ressourcen-Editor können Sie im Dialogfeld Ressource hinzufügen eine Seite der entsprechenden Größe erstellen. Erweitern Sie den Knoten Dialog, und wählen Sie IDD_PROPPAGE_LARGE, IDD_PROPPAGE_MEDIUM oder IDD_PROPPAGE_SMALL aus.

Das Eigenschaftenblatt wird automatisch so dimensioniert, dass es die größte Seite aufnehmen kann.

Eigenschaftsblatterstellung

Bevor Sie ein Eigenschaftenblatt erstellen, müssen Sie mindestens eine Seite definieren. Dazu müssen Sie eine PROPSHEETPAGE-Struktur mit Informationen zur Seite füllen – symbol, beschriftet, Dialogfeldvorlage, Dialogfeldprozedur usw. – und dann die Adresse der Struktur in einem Aufruf der CreatePropertySheetPage-Funktion angeben. Die Funktion gibt ein Handle an den Typ HPROPSHEETPAGE zurück, der die Seite eindeutig identifiziert.

Um ein Eigenschaftenblatt zu erstellen, geben Sie die Adresse einer PROPSHEETHEADER-Struktur in einem Aufruf der PropertySheet-Funktion an. Die Struktur definiert das Symbol und den Titel für das Eigenschaftenblatt und enthält auch die Adresse eines Arrays von HPROPSHEETPAGE-Handles, die Sie mithilfe von CreatePropertySheetPage abrufen. Wenn PropertySheet das Eigenschaftenblatt erstellt, enthält es die im Array identifizierten Seiten. Die Seiten werden im Eigenschaftenblatt in der gleichen Reihenfolge angezeigt, in der sie im Array enthalten sind.

Eine andere Möglichkeit zum Zuweisen von Seiten zu einem Eigenschaftenblatt besteht darin, ein Array von PROPSHEETPAGE-Strukturen anstelle eines Arrays von HPROPSHEETPAGE-Handles anzugeben. In diesem Fall erstellt PropertySheet Handles für die Seiten, bevor sie dem Eigenschaftenblatt hinzugefügt werden.

Wenn eine Seite erstellt wird, erhält ihre Dialogfeldprozedur eine WM_INITDIALOG Nachricht. Der lParam-Parameter der Nachricht ist ein Zeiger auf eine Kopie der PROPSHEETPAGE-Struktur , die beim Erstellen der Seite definiert wird. Insbesondere kann beim Erstellen einer Seite das lParam-Element der Struktur verwendet werden, um anwendungsdefinierte Informationen an die Dialogfeldprozedur zu übergeben. Mit Ausnahme des lParam-Elements muss diese Struktur als schreibgeschützt behandelt werden. Das Ändern von anderen Elementen als lParam hat unvorhersehbare Folgen.

Wenn das System anschließend eine Kopie der PROPSHEETPAGE-Struktur der Seite an Ihre Anwendung übergibt, verwendet es denselben Zeiger. Alle Änderungen an der Struktur werden übergeben. Da das lParam-Element vom System ignoriert wird, kann es geändert werden, um Informationen an andere Teile Ihrer Anwendung zu senden. Sie können für instance lParam verwenden, um Informationen an die PropSheetPageProc-Rückruffunktion der Seite zu übergeben.

PropertySheet legt automatisch die Größe und anfangsposition eines Eigenschaftenblatts fest. Die Position basiert auf der Position des Besitzerfensters, und die Größe basiert auf der größten Seite, die beim Erstellen des Eigenschaftenblatts im Array von Seiten angegeben wurde. Wenn die Seiten mit der Breite der vier Schaltflächen am unteren Rand des Eigenschaftenblatts übereinstimmen sollen, legen Sie die Breite der breitesten Seite auf 190 Dialogeinheiten fest.

Die Größe eines Eigenschaftenblatts wird aus den Breiten- und Höheneigenschaften der Dialogvorlage in der Ressourcendatei berechnet. Weitere Informationen finden Sie unter DIALOG-Ressource oder DIALOGEX-Ressource . Beachten Sie jedoch, dass aus Kompatibilitätsgründen die Dimensionen relativ zur MS Shell Dlg-Schriftart berechnet werden und nicht der Schriftart, die von der Seite verwendet wird. Wenn Sie eine Seite entwerfen, die eine andere Schriftart verwendet, kann einer der folgenden Vorschläge verwendet werden.

  • Passen Sie die Abmessungen der Dialogvorlage an, um den Größenunterschied zwischen der Schriftart MS Shell Dlg und der Schriftart zu kompensieren, die die Seite tatsächlich verwendet. Wenn Sie beispielsweise eine Schriftart auswählen, die doppelt so breit wie MS Shell Dlg ist, legen Sie die Width-Eigenschaft der Dialogvorlage auf das Doppelte der normalen Verwendung fest.
  • Verwenden Sie eine DIALOGEX-Vorlage , und legen Sie den DS_SHELLFONT Dialogstil fest. In diesem Fall interpretiert der Eigenschaftenblatt-Manager die Dimensionen der Dialogvorlage relativ zur Schriftart, die von der Dialogvorlage verwendet wird.

Hinzufügen und Entfernen von Seiten

Nach dem Erstellen eines Eigenschaftenblatts kann eine Anwendung eine Seite am Ende des vorhandenen Seitensatzes hinzufügen, indem sie eine PSM_ADDPAGE Nachricht sendet. Um eine Seite zwischen vorhandenen Seiten einzufügen, senden Sie eine PropSheet_InsertPage Nachricht. Beachten Sie, dass sich die Größe des Eigenschaftenblatts nach der Erstellung nicht ändern kann. Alle hinzugefügten oder eingefügten Seiten dürfen nicht größer als die größte Seite sein, die derzeit im Eigenschaftenblatt enthalten ist. Um eine Seite zu entfernen, senden Sie eine PSM_REMOVEPAGE Nachricht.

Wenn Sie eine Seite definieren, können Sie die Adresse einer PropSheetPageProc-Rückruffunktion angeben, die vom Eigenschaftenblatt beim Erstellen oder Entfernen der Seite aufgerufen wird. Die Verwendung von PropSheetPageProc bietet Ihnen die Möglichkeit, Initialisierungs- und Bereinigungsvorgänge für einzelne Seiten durchzuführen.

Hinweis

Eine Reihe von Meldungen und ein Funktionsaufruf treten auf, während das Eigenschaftenblatt die Liste der Seiten bearbeitet. Während diese Aktion ausgeführt wird, führt der Versuch, die Liste der Seiten zu ändern, zu unvorhersehbaren Ergebnissen. Fügen Sie in Ihrer Implementierung von PropSheetPageProc keine Seiten hinzu, fügen Sie sie nicht hinzu, fügen Sie sie hinzu oder entfernen Sie sie nicht, während Sie die folgenden Benachrichtigungen und Windows-Meldungen behandeln.

Wenn es erforderlich ist, eine Eigenschaftenblattseite zu ändern, während Sie eine dieser Meldungen behandeln oder während PropSheetPageProc in Betrieb ist, posten Sie eine private Windows-Nachricht. Ihre Anwendung empfängt diese Nachricht erst, nachdem der Eigenschaftenblatt-Manager seine Aufgaben abgeschlossen hat. An diesem Punkt kann die Liste der Seiten sicher geändert werden.

Wenn ein Eigenschaftenblatt zerstört wird, werden automatisch alle Seiten zerstört, die diesem hinzugefügt wurden. Die Seiten werden in umgekehrter Reihenfolge von der im Array zum Erstellen der Seiten angegebenen Reihenfolge zerstört. Verwenden Sie die DestroyPropertySheetPage-Funktion, um eine Seite zu zerstören, die von der CreatePropertySheetPage-Funktion erstellt, aber nicht dem Eigenschaftenblatt hinzugefügt wurde.

Eigenschaftenblatttitel und Seitenbeschriftungen

Sie geben den Titel eines Eigenschaftenblatts in der PROPSHEETHEADER-Struktur an, die zum Erstellen des Eigenschaftenblatts verwendet wird. Wenn der dwFlags-Member den PSH_PROPTITLE-Wert enthält, fügt das Eigenschaftenblatt abhängig von der Version das Suffix "Properties" oder das Präfix "Properties for" hinzu. Sie können den Titel ändern, nachdem ein Eigenschaftenblatt erstellt wurde, indem Sie die PSM_SETTITLE Meldung verwenden. In einem Aero-Assistenten kann diese Meldung verwendet werden, um den Titel einer Innenseite dynamisch zu ändern.

Standardmäßig verwendet ein Eigenschaftenblatt die in der Dialogfeldvorlage angegebene Namenszeichenfolge als Bezeichnung für eine Seite. Sie können die Namenszeichenfolge überschreiben, indem Sie den PSP_USETITLE-Wert in den dwFlags-Member der PROPSHEETPAGE-Struktur einfügen, die die Seite definiert. Wenn PSP_USETITLE angegeben ist, muss das pszTitle-Element die Adresse der Bezeichnungszeichenfolge für die Seite enthalten.

Seitenaktivierung

Ein Eigenschaftenblatt kann jeweils nur eine aktive Seite aufweisen. Die Seite mit der Aktivierung befindet sich im Vordergrund des überlappenden Seitenstapels. Der Benutzer aktiviert eine Seite, indem er seine Registerkarte auswählt; eine Anwendung aktiviert eine Seite mithilfe der PSM_SETCURSEL Meldung.

Das Eigenschaftenblatt sendet den PSN_KILLACTIVE Benachrichtigungscode an die Seite, die die Aktivierung verliert. Als Reaktion darauf muss die Seite alle Änderungen überprüfen, die der Benutzer an der Seite vorgenommen hat. Wenn die Seite zusätzliche Benutzereingaben erfordert, bevor die Aktivierung verloren geht, verwenden Sie die SetWindowLong-Funktion , um den DWL_MSGRESULT Wert der Seite auf TRUE festzulegen. Außerdem muss auf der Seite ein Meldungsfeld angezeigt werden, das das Problem beschreibt und die empfohlene Aktion bereitstellt. Legen Sie DWL_MSGRESULT auf FALSE fest, wenn es in Ordnung ist, die Aktivierung zu verlieren.

Bevor die Seite, die die Aktivierung erhält, angezeigt wird, sendet das Eigenschaftenblatt den PSN_SETACTIVE Benachrichtigungscode an die Seite. Die Seite muss reagieren, indem sie ihre Steuerelementfenster initialisiert.

Schaltfläche „Hilfe“

Eigenschaftenblätter können zwei Hilfeschaltflächen anzeigen: eine Hilfeschaltfläche des Eigenschaftenblatts, die unten im Rahmen neben den Schaltflächen OK/Abbrechen/Anwenden angezeigt wird, und eine Standardschaltfläche Untertitel Leiste, die kontextbezogene Hilfe bereitstellt.

Die Hilfeschaltfläche des Eigenschaftenblatts ist optional und kann seitenweise aktiviert werden. So zeigen Sie die Hilfeschaltfläche des Eigenschaftenblatts für eine oder mehrere Seiten an:

Wenn der Benutzer auf die Schaltfläche Hilfe klickt, erhält die aktive Seite einen PSN_HELP Benachrichtigungscode. Die Seite muss antworten, indem Hilfeinformationen angezeigt werden, in der Regel durch Aufrufen der WinHelp-Funktion .

Entfernen der Hilfeschaltfläche für die Beschriftungsleiste

Die Schaltfläche "Hilfe" in der Untertitel leiste wird standardmäßig angezeigt, sodass für die Schaltflächen OK/Abbrechen/Anwenden immer kontextbezogene Hilfe verfügbar ist. Diese Schaltfläche kann jedoch bei Bedarf entfernt werden. So entfernen Sie die Hilfeschaltfläche Untertitel Leiste eines Eigenschaftenblatts:

  • Für Versionen der allgemeinen Steuerelemente vor Version 5.80 müssen Sie eine Rückruffunktion für Eigenschaftenblätter implementieren.
  • Ab Version 5.80 der allgemeinen Steuerelemente können Sie einfach das flag PSH_NOCONTEXTHELP im dwFlags-Element der PROPSHEETHEADER-Struktur des Eigenschaftenblatts festlegen. Wenn Sie jedoch Abwärtskompatibilität mit früheren gängigen Steuerungsversionen benötigen, müssen Sie die Rückruffunktion implementieren.

So implementieren Sie eine Rückruffunktion für Eigenschaftenblätter, die die Hilfeschaltfläche Untertitel Leiste entfernt:

  • Legen Sie das PSH_USECALLBACK-Flag im dwFlags-Element der PROPSHEETHEADER-Struktur des Eigenschaftenblatts fest.
  • Legen Sie den pfnCallBack-Member der PROPSHEETHEADER-Struktur so fest, dass er auf die Rückruffunktion verweist.
  • Implementieren Sie die Rückruffunktion. Wenn diese Funktion die PSCB_PRECREATE Nachricht empfängt, erhält sie auch einen Zeiger auf die Dialogfeldvorlage des Eigenschaftenblatts. Entfernen Sie die DS_CONTEXTHELP-Formatvorlage aus dieser Vorlage.

Im folgenden Beispiel wird veranschaulicht, wie eine solche Rückruffunktion implementiert wird:

int CALLBACK RemoveContextHelpProc(HWND hwnd, UINT message, LPARAM lParam)
{
    switch (message) 
    {
    case PSCB_PRECREATE:
        // Remove the DS_CONTEXTHELP style from the
        // dialog box template
        if (((LPDLGTEMPLATEEX)lParam)->signature ==    
           0xFFFF)
           {
            ((LPDLGTEMPLATEEX)lParam)->style 
            &= ~DS_CONTEXTHELP;
        }
        else {
            ((LPDLGTEMPLATE)lParam)->style 
            &= ~DS_CONTEXTHELP;
        }
        return TRUE;
    }
    return TRUE;
}

Wenn die DLGTEMPLATEEX-Struktur nicht definiert ist, fügen Sie die folgende Deklaration ein:

#include <pshpack1.h>

typedef struct DLGTEMPLATEEX
{
    WORD dlgVer;
    WORD signature;
    DWORD helpID;
    DWORD exStyle;
    DWORD style;
    WORD cDlgItems;
    short x;
    short y;
    short cx;
    short cy;
} DLGTEMPLATEEX, *LPDLGTEMPLATEEX;

#include <poppack.h>

Schaltflächen "OK", "Abbrechen" und "Anwenden"

Die Schaltflächen OK und Anwenden sind ähnlich. beide weisen die Seiten eines Eigenschaftenblatts an, die vom Benutzer vorgenommenen Eigenschaftenänderungen zu überprüfen und anzuwenden. Der einzige Unterschied besteht darin, dass durch Klicken auf die Schaltfläche OK das Eigenschaftenblatt zerstört wird, nachdem die Änderungen übernommen wurden.

Wenn der Benutzer auf die Schaltfläche OK oder Anwenden klickt, sendet das Eigenschaftenblatt eine PSN_KILLACTIVE Benachrichtigung an die aktive Seite, sodass die Änderungen des Benutzers überprüft werden können. Wenn die Änderungen gültig sind, muss die Seite die SetWindowLong-Funktion aufrufen, wobei der wert der DWL_MSGRESULT auf FALSE festgelegt ist. Wenn die Änderungen des Benutzers ungültig sind, muss die Seite DWL_MSGRESULT auf TRUE festlegen und ein Dialogfeld anzeigen, das den Benutzer über das Problem informiert. Die Seite bleibt aktiv, bis sie als Reaktion auf eine PSN_KILLACTIVE Nachricht DWL_MSGRESULT auf FALSE festlegt.

Nachdem eine Seite auf eine PSN_KILLACTIVE Benachrichtigung reagiert, indem DWL_MSGRESULT auf FALSE festgelegt wird, sendet das Eigenschaftenblatt eine PSN_APPLY Benachrichtigung an jede Seite. Wenn eine Seite diese Benachrichtigung empfängt, muss sie die neuen Eigenschaften auf das entsprechende Element anwenden. Um dem Eigenschaftenblatt mitzuteilen, dass die Änderungen für die Seite gültig sind, rufen Sie SetWindowLong auf, wobei DWL_MSGRESULT auf PSNRET_NOERROR festgelegt ist. Wenn die Änderungen für die Seite ungültig sind, geben Sie einen Fehler zurück. Auf diese Weise wird verhindert, dass das Eigenschaftenblatt zerstört wird, und der Fokus wird entweder auf die Seite zurückgegeben, die die PSN_APPLY benachrichtigung empfangen hat, oder auf die Seite, die beim Drücken der Schaltfläche Übernehmen den Fokus hatte. Um einen Fehler zurückzugeben und anzugeben, welche Seite den Fokus erhält, legen Sie DWL_MSGRESULT auf einen der folgenden Werte fest.

  • PSNRET_INVALID. Das Eigenschaftenblatt wird nicht zerstört, und der Fokus wird auf diese Seite zurückgegeben.
  • PSNRET_INVALID_NOCHANGEPAGE. Das Eigenschaftenblatt wird nicht zerstört, und der Fokus wird auf die Seite zurückgegeben, die beim Drücken der Schaltfläche den Fokus hatte.

Eine Anwendung kann die meldung PSM_APPLY verwenden, um die Auswahl der Schaltfläche Übernehmen zu simulieren.

Die Schaltfläche Anwenden wird zunächst deaktiviert, wenn eine Seite aktiv wird, was angibt, dass noch keine Eigenschaftenänderungen angewendet werden müssen. Wenn die Seite eine Eingabe über eines ihrer Steuerelemente empfängt, die angibt, dass der Benutzer eine Eigenschaft bearbeitet hat, muss die Seite die PSM_CHANGED Nachricht an das Eigenschaftenblatt senden. Die Meldung bewirkt, dass das Eigenschaftenblatt die Schaltfläche Anwenden aktiviert. Wenn der Benutzer anschließend auf die Schaltfläche Anwenden oder Abbrechen klickt, muss die Seite die Steuerelemente erneut initialisieren und dann die PSM_UNCHANGED Nachricht senden, um die Schaltfläche Anwenden erneut zu deaktivieren.

Manchmal bewirkt die Schaltfläche Anwenden , dass eine Seite eine Änderung an einem Eigenschaftenblatt vorgibt, und die Änderung kann nicht rückgängig werden. In diesem Fall muss die Seite die PSM_CANCELTOCLOSE Nachricht an das Eigenschaftenblatt senden. Die Meldung bewirkt, dass das Eigenschaftenblatt den Text der Schaltfläche OK in "Schließen" ändert, was angibt, dass die angewendeten Änderungen nicht abgebrochen werden können.

Manchmal ändert eine Seite die Systemkonfiguration, die einen Neustart von Windows oder einen Neustart des Systems erfordert, bevor die Änderung wirksam werden kann. Nach einer solchen Änderung muss eine Seite entweder die PSM_RESTARTWINDOWS oder PSM_REBOOTSYSTEM Nachricht an das Eigenschaftenblatt senden. Diese Meldungen bewirken, dass die PropertySheet-Funktion den ID_PSRESTARTWINDOWS oder ID_PSREBOOTSYSTEM Wert zurückgibt, nachdem das Eigenschaftenblatt zerstört wurde.

Wenn ein Benutzer auf die Schaltfläche Abbrechen klickt, sendet das Eigenschaftenblatt den PSN_RESET Benachrichtigungscode an alle Seiten, was angibt, dass das Eigenschaftenblatt im Zeichen der Zerstörung steht. Eine Seite muss die Benachrichtigung verwenden, um Bereinigungsvorgänge auszuführen.

Assistenten

Ein Assistent ist ein spezieller Typ von Eigenschaftenblatt. Assistenten sind so konzipiert, dass Seiten einzeln in einer Sequenz dargestellt werden, die von der Anwendung gesteuert wird. Anstatt aus einer Gruppe von Seiten zu wählen, indem sie auf eine Registerkarte klicken, navigieren Benutzer durch die Sequenz vorwärts und rückwärts, seite für Seite, indem sie auf Schaltflächen klicken. Der folgende Screenshot zeigt beispielsweise die Willkommensseite des Assistenten zum Hinzufügen von Hardware:

Screenshot der Willkommensseite eines Assistenten

Der folgende Screenshot zeigt die erste Seite eines Aero-Assistenten, dem neuen Stil, der in Windows Vista eingeführt wurde.

Screenshot der ersten Seite eines Aero-Assistenten

Eine vollständige Erläuterung der Assistenten finden Sie unter Erstellen von Assistenten.