Erstellen von Eigenschaftenseiten für die Komponente
Ein Notify-Objekt erstellt benutzerdefinierte Eigenschaftenseiten, nachdem das Netzwerkkonfigurationssubsystem die INetCfgComponentPropertyUi::MergePropPages-Methode des Notify-Objekts aufgerufen hat. Benutzerdefinierte Eigenschaftenseiten können mithilfe der MergePropPages-Methode in den Standardsatz von Seiten auf dem Eigenschaftenblatt der Komponente zusammengeführt werden. MergePropPages gibt die entsprechende Anzahl von Standardseiten zurück, in die die benutzerdefinierten Seiten zusammengeführt werden können.
Um benutzerdefinierte Eigenschaftenseiten zu erstellen, ruft MergePropPages die COM CoTaskMemAlloc-Funktion auf, um Speicher für Handles zu PROPSHEETPAGE-Strukturen zuzuweisen. Jedes dieser Handles stellt eine zu erstellende Eigenschaftenseite dar. Wenn CoTaskMemAlloc den Arbeitsspeicher für die Handles erfolgreich zuordnet, deklariert MergePropPagesPROPSHEETPAGE-Strukturen für jede Eigenschaftenseite und füllt sie aus. Nachdem MergePropPages diese Strukturen ausgefüllt hat, wird die Win32 CreatePropertySheetPage-Funktion für jede Eigenschaftenseite aufgerufen. In diesem Aufruf übergibt MergePropPages die Adresse der zu erstellenden PROPSHEETPAGE-Struktur.
Für jede Eigenschaftenseite, die mergePropPages erstellt, sollte auch eine Rückruffunktion für das Dialogfeld implementiert werden. Eine Dialogfeld-Rückruffunktion verarbeitet Meldungen, die das Betriebssystem an die Eigenschaftenseite sendet, die dieser Dialogfeldfunktion zugeordnet ist. Um eine Eigenschaftenseite einer Dialogfeldfunktion zuzuordnen, sollte MergePropPages den pfnDlgProc-Member jeder PROPSHEETPAGE-Struktur für jede Seite auf die Dialogfeldfunktion für die Seite verweisen.
Eine Dialogfeldfunktion verarbeitet die folgenden Meldungen:
Die WM_INITDIALOG Meldung, die unmittelbar vor dem Anzeigen der zugeordneten Eigenschaftenseite des Betriebssystems an die Dialogfeldfunktion gesendet wird. Dialogfeldfunktionen verwenden diese Meldung in der Regel, um die Eigenschaftenseite zu initialisieren und Aufgaben auszuführen, die sich auf die Darstellung der Eigenschaftenseite auswirken.
Die WM_NOTIFY Meldung, die an die Dialogfeldfunktion gesendet wird, nachdem auf der Eigenschaftenseite ein Ereignis auftritt. Andere Informationen, die mit dieser Nachricht gesendet werden, identifizieren, welches Ereignis aufgetreten ist. Diese Ereignisinformationen sind in einem Zeiger auf eine NMHDR-Struktur enthalten. Informationen, die NMHDR für ein Eigenschaftenblatt enthalten kann, umfassen z. B.:
Das PSN_APPLY-Ereignis, das angibt, dass ein Benutzer auf der Eigenschaftenseite auf OK, Schließen oder Anwenden klickt. Wenn der Benutzer auf OK, Schließen oder Anwenden klickt, kann die Dialogfeldfunktion das makro PropSheet_Changed aufrufen, um das Eigenschaftenblatt darüber zu informieren, dass sich die Informationen auf der Seite geändert haben. In diesem Aufruf übergibt die Dialogfeldfunktion Handles an das Eigenschaftenblatt und die Seite. Die Dialogfeldfunktion kann die Win32 GetParent-Funktion aufrufen und das Handle an die Seite übergeben, um das Handle an das Eigenschaftenblatt abzurufen.
Nachdem die Dialogfeldfunktion das Eigenschaftenblatt über die Änderung benachrichtigt hat, ruft das Netzwerkkonfigurationssubsystem die INetCfgComponentPropertyUi::ValidateProperties-Methode auf, um die Gültigkeit aller Änderungen zu überprüfen. Wenn alle Änderungen gültig sind, ruft das Subsystem die INetCfgComponentPropertyUi::ApplyProperties-Methode des Notify-Objekts auf, damit alle Änderungen wirksam werden. Das Netzwerkkonfigurationssubsystem ruft ApplyProperties auf, bevor das Betriebssystem das Dialogfeld schließt.
Die ApplyProperties-Methode kann implementiert werden, um informationen abzurufen, die der Benutzer eingibt, und um die Informationen auf die Datenmember des Notify-Objekts festzulegen.
Das PSN_RESET-Ereignis, das angibt, dass das Betriebssystem eine Eigenschaftenseite zerstört. Ein Benutzer kann auf der Eigenschaftenseite auf Abbrechen klicken, um diese Aktion zu initiieren. Wenn der Benutzer auf Abbrechen klickt, ruft das Netzwerkkonfigurationssubsystem die INetCfgComponentPropertyUi::CancelProperties-Methode auf, damit alle Änderungen ignoriert werden. Das Netzwerkkonfigurationssubsystem ruft CancelProperties auf, bevor das Dialogfeld geschlossen wird.
Das PSN_KILLACTIVE-Ereignis, das angibt, dass eine Eigenschaftenseite inaktiv wird. Dieses Ereignis tritt auf, wenn ein Benutzer eine andere Seite aktiviert oder auf OK klickt.
Rückruffunktionen für Eigenschaftenseiten können auch für jede Eigenschaftenseite implementiert werden, die mergePropPages erstellt. Eine Eigenschaftsseiten-Rückruffunktion führt Initialisierungs- und Bereinigungsvorgänge für die Seite aus. Um eine Eigenschaftenseite einer Rückruffunktion für Eigenschaftenseiten zuzuordnen, sollte MergePropPages den pfnCallback-Member jeder PROPSHEETPAGE-Struktur für jede Seite auf die Rückruffunktion für Eigenschaftenseiten für diese Seite verweisen.
Weitere Informationen zu folgenden Informationen finden Sie in der Microsoft Windows SDK-Dokumentation:
Erstellen von Eigenschaftenseiten und Strukturen, Funktionen und Benachrichtigungen für Eigenschaftenseiten
Rückrufprozeduren, Nachrichten und Strukturen für Dialogfelder