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 Laufwerk, einen Drucker oder eine Maus.

In diesem Abschnitt werden die folgenden Themen erläutert.

Grundlagen des Eigenschaftenblatts

Um Eigenschaftenblätter in Ihrer Anwendung zu implementieren, schließen 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 mindestens ein überlappendes untergeordnetes Fenster namens Pages, die jeweils Steuerelementfenster zum Festlegen einer Gruppe verwandter Eigenschaften enthalten. Beispielsweise kann eine Seite die Steuerelemente zum Festlegen der Schriftarteigenschaften eines Elements enthalten, einschließlich Typformat, Punktgröße, Farbe und so weiter. 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 Kalendersteuerblatt zeigt

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

Dialogfelder "Eigenschaftenblatt"

Ein Eigenschaftenblatt und die seiten, die es enthält, sind eigentlich Dialogfelder. Das Eigenschaftenblatt ist ein systemdefiniertes Dialogfeld, das die Seiten verwaltet und einen allgemeinen Container für sie bietet. 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 Dialogfeldverfahren für die Seiten empfangen 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 haben. Assistenten verfügen beispielsweise ü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, modusloses Dialogfeld, das die Steuerelementfenster verwaltet, die zum Anzeigen und Bearbeiten der Eigenschaften eines Elements verwendet werden. Sie stellen die Dialogfeldvorlage zum Erstellen der einzelnen Seiten sowie die Dialogfeldprozedur zur Verwaltung der Steuerelemente und zum Festlegen der Eigenschaften des entsprechenden Elements zur Verfügung.

Ein Eigenschaftenblatt sendet Benachrichtigungscodes an die Dialogfeldprozedur für eine Seite, wenn die Seite aktiviert wird oder verloren geht 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 Fensterhandl zum Eigenschaftenblattdialogfeld enthält.

Für einige Benachrichtigungscodes muss eine Seite entweder TRUE oder FALSE als Antwort auf die WM _ NOTIFY-Nachricht zurückgeben. Hierzu muss die Seite die SetWindowLong-Funktion verwenden, um den DWL _ MSGRESULT-Wert für das Seitendialogfeld entweder auf TRUE oder FALSE zu setzen.

Seiten

Ein Eigenschaftenblatt muss mindestens eine Seite enthalten, darf jedoch nicht mehr als den Wert von MAXPROPPAGES enthalten, wie in den Headerdateien Windows definiert. Jede Seite verfügt über einen nullbasierten Index, der vom Eigenschaftenblatt entsprechend der Reihenfolge zugewiesen wird, 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 geschachtelte Dialogfeld enthalten. Wenn dies der Wert ist, müssen Sie den WS _ EX _ CONTROLPARENT-Stil für das Dialogfeld der obersten Ebene einfügen und die IsDialogMessage-Funktion mit dem Handle für das übergeordnete Dialogfeld aufrufen. Dadurch wird sichergestellt, dass der Benutzer mnemonische Daten und die Navigationsschlüssel 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. Von allen Eigenschaftenblattseiten wird erwartet, dass sie eine nichtbold-Schriftart verwenden. Um sicherzustellen, dass die Schriftart nicht fett formatiert ist, geben Sie den DS _ 3DLOOK-Stil in der Dialogfeldvorlage an.

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

Die Mindestgröße für eine Eigenschaftenblattseite beträgt 212 Dialogeinheiten horizontal und 114 Dialogeinheiten vertikal. Wenn ein Seitendialogfeld kleiner als dieses 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 hilft, die visuelle Konsistenz zwischen Ihrer Anwendung und anderen Microsoft Windows sicherzustellen.

Im ressourcen Microsoft Visual Studio-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.

Erstellung von Eigenschaftenblättern

Vor dem Erstellen eines Eigenschaftenblatts müssen Sie eine oder mehrere Seiten definieren. Dies umfasst das Auffüllen einer PROPSHEETPAGE-Struktur mit Informationen über die Seite – das Symbol, die Bezeichnung, die Dialogfeldvorlage, die Dialogfeldprozedur und so weiter – und das anschließende Angeben der Adresse der Struktur in einem Aufruf der CreatePropertySheetPage-Funktion. Die Funktion gibt ein Handle an den HPROPSHEETPAGE-Typ 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 mit createPropertySheetPage abrufen. Wenn PropertySheet das Eigenschaftenblatt erstellt, enthält es die im Array identifizierten Seiten. Die Seiten werden auf dem Eigenschaftenblatt in der reihenfolge angezeigt, in der sie im Array enthalten sind.

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

Wenn eine Seite erstellt wird, empfängt die Dialogfeldprozedur eine WM _ INITDIALOG-Meldung. Der lParam-Parameter der Nachricht ist ein Zeiger auf eine Kopie der PROPSHEETPAGE-Struktur, die beim Erstellen der Seite definiert wird. Insbesondere beim Erstellen einer Seite kann das lParam-Member der -Struktur verwendet werden, um anwendungsdefinierte Informationen an die Dialogfeldprozedur zu übergeben. Mit Ausnahme des lParam-Members muss diese Struktur als schreibgeschützt behandelt werden. Das Ändern von etwas anderem 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 der lParam-Member vom System ignoriert wird, kann er geändert werden, um Informationen an andere Teile Der Anwendung zu senden. Sie können beispielsweise 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 im Array von Seiten angegeben wurde, als das Eigenschaftenblatt erstellt wurde. Wenn die Seiten mit der Breite der vier Schaltflächen am unteren Rand des Eigenschaftenblatts übereinstimmen, 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 die Dimensionen aus Kompatibilitätsgründen relativ zur MS Shell-Dlg-Schriftart und nicht zur von der Seite verwendeten Schriftart berechnet werden. Wenn Sie eine Seite entwerfen, die eine andere Schriftart verwendet, kann einer der folgenden Vorschläge verwendet werden.

  • Passen Sie die Abmessungen der Dialogfeldvorlage an, um den Größenunterschied zwischen der MS Shell-Dlg-Schriftart und der Schriftart zu kompensieren, die die Seite tatsächlich verwendet. Wenn Sie beispielsweise eine Schriftart auswählen, die doppelt so breit ist wie MS Shell Dlg, legen Sie die Width-Eigenschaft der Dialogfeldvorlage 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 Dialogfeldvorlage 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 sich derzeit im Eigenschaftenblatt befindet. 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. Mit PropSheetPageProc haben Sie die Möglichkeit, Initialisierungs- und Bereinigungsvorgänge für einzelne Seiten auszuführen.

Hinweis

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

Wenn eine Eigenschaftenblattseite geändert werden muss, während Sie eine dieser Nachrichten verarbeiten oder PropSheetPageProc in Betrieb ist, veröffentlichen Sie eine private Windows Nachricht. Ihre Anwendung empfängt diese Meldung erst, nachdem der Eigenschaftenblatt-Manager seine Aufgaben abgeschlossen hat. An diesem Punkt ist es sicher, die Liste der Seiten zu ändern.

Wenn ein Eigenschaftenblatt zerstört wird, zerstört es automatisch alle Seiten, die ihm hinzugefügt wurden. Die Seiten werden in umgekehrter Reihenfolge von dem gelöscht, der in dem Array angegeben ist, das zum Erstellen der Seiten verwendet wird. Verwenden Sie die DestroyPropertySheetPage-Funktion, um eine Seite zu zerstören, die von der CreatePropertySheetPage-Funktion erstellt, aber nicht dem Eigenschaftenblatt hinzugefügt wurde.

Titel und Seitenbezeichnungen des Eigenschaftenblatts

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 je nach 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-Nachricht verwenden. In einem Assistenten kann diese Meldung verwendet werden, um den Titel einer inneren Seite 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 einschließen, die die Seite definiert. Wenn PSP _ USETITLE angegeben wird, muss der pszTitle-Member 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-Nachricht.

Das Eigenschaftenblatt sendet den PSN KILLACTIVE-Benachrichtigungscode _ an die Seite, die die Aktivierung verlieren wird. 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 die Aktivierung verloren geht.

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.

Hilfeschaltfläche

Eigenschaftenblätter können zwei Hilfeschaltflächen anzeigen: eine Hilfeschaltfläche des Eigenschaftenblatts, die am unteren Rand des Frames angezeigt wird, neben den Schaltflächen OK / Abbrechen / Anwenden und eine Standardschaltfläche für die Beschriftungsleiste, die kontextbezogene Hilfe bereitstellt.

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

  • Legen Sie das PSH _ HASHELP-Flag im dwFlags-Member der PROPSHEETHEADER-Struktur des Eigenschaftenblatts fest.
  • Legen Sie für jede Seite, auf der eine Hilfeschaltfläche angezeigt wird, das PSP _ HASHELP-Flag im dwFlags-Member der PROPSHEETPAGE-Struktur der Seite fest.

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

Entfernen der Hilfeschaltfläche "Beschriftungsleiste"

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

  • Für Versionen der allgemeinen Steuerelemente vor Version 5.80müssen Sie eine Rückruffunktion für Eigenschaftenblätterimplementieren.
  • Für Version 5.80 und höher der allgemeinen Steuerelemente können Sie einfach das PSH _ NOCONTEXTHELP-Flag im dwFlags-Member der PROPSHEETHEADER-Struktur des Eigenschaftenblatts festlegen. Wenn Sie jedoch Abwärtskompatibilität mit früheren allgemeinen Steuerungsversionen benötigen, müssen Sie die Rückruffunktion implementieren.

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

  • Legen Sie das PSH _ USECALLBACK-Flag im dwFlags-Member 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, empfängt sie auch einen Zeiger auf die Dialogfeldvorlage des Eigenschaftenblatts. Entfernen Sie den DS _ CONTEXTHELP-Stil 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, schließen 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 "Übernehmen"

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

Wenn der Benutzer auf die Schaltfläche OK oder Übernehmen klickt, sendet das Eigenschaftenblatt eine PSN _ KILLACTIVE-Benachrichtigung an die aktive Seite, sodass es die Möglichkeit erhält, die Änderungen des Benutzers zu überprüfen. Wenn die Änderungen gültig sind, muss die Seite die SetWindowLong-Funktion aufrufen, wobei der _ DWL-MSGRESULT-Wert auf FALSE festgelegt ist. Wenn die Änderungen des Benutzers ungültig sind, muss die Seite DWL _ MSGRESULT auf TRUE festlegen und ein Dialogfeld anzeigen, in dem der Benutzer über das Problem informiert wird. Die Seite bleibt aktiv, bis DWL _ MSGRESULT als Reaktion auf eine PSN KILLACTIVE-Nachricht auf FALSE festgelegt _ wird.

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 anzugeben, 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. Dies verhindert, dass das Eigenschaftenblatt zerstört wird, und gibt den Fokus entweder auf die Seite zurück, die die PSN _ APPLY-Benachrichtigung empfangen hat, oder auf die Seite, die den Fokus hatte, als die Schaltfläche Anwenden gedrückt wurde. Um einen Fehler zurückzugeben und anzugeben, welche Seite den Fokus erhält, legen Sie DWL _ MSGRESULT auf einen der folgenden Werte fest.

  • PSNRET _ UNGÜLTIG. Das Eigenschaftenblatt wird nicht zerstört, und der Fokus wird auf diese Seite zurückgegeben.
  • PSNRET _ UNGÜLTIGE _ NOCHANGEPAGE. Das Eigenschaftenblatt wird nicht zerstört, und der Fokus wird auf die Seite zurückgegeben, die den Fokus hatte, als die Schaltfläche gedrückt wurde.

Eine Anwendung kann die PSM _ APPLY-Nachricht verwenden, um die Auswahl der Schaltfläche Anwenden zu simulieren.

Die Schaltfläche Anwenden ist anfänglich deaktiviert, wenn eine Seite aktiv wird, was darauf hinweist, dass noch keine Eigenschaftenänderungen angewendet werden müssen. Wenn die Seite Eingaben über eines ihrer Steuerelemente empfängt, die angeben, 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 ihre Steuerelemente erneut initialisieren und dann die PSM _ UNCHANGED-Meldung senden, um die Schaltfläche Anwenden erneut zu deaktivieren.

Manchmal bewirkt die Schaltfläche Anwenden, dass eine Seite eine Änderung an einem Eigenschaftenblatt vorfügt, und die Änderung kann nicht rückgängig machen 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 nimmt eine Seite eine Änderung an der Systemkonfiguration vor, die erfordert, dass Windows neu gestartet oder das System neu gestartet wird, bevor die Änderung wirksam werden kann. Nach einer solchen Änderung muss eine Seite entweder die NACHRICHT PSM _ RESTARTWINDOWS oder PSM _ REBOOTSYSTEM 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 und gibt an, dass das Eigenschaftenblatt zerstört werden soll. Eine Seite muss die Benachrichtigung verwenden, um Bereinigungsvorgänge auszuführen.

Assistenten

Ein Assistent ist ein spezieller Eigenschaftenblatttyp. Assistenten sind so konzipiert, dass Seiten nacheinander in einer Sequenz dargestellt werden, die von der Anwendung gesteuert wird. Anstatt aus einer Gruppe von Seiten auszuwählen, indem sie auf eine Registerkarte klicken, navigieren Benutzer nacheinander vorwärts und rückwärts durch die Sequenz, 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 Assistenten für Dies, den neuen Stil, der in Windows Vista eingeführt wurde.

Screenshot der ersten Seite eines Assistenten

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