Schritt 4. Erstellen der Eigenschaftenseite

An diesem Punkt unterstützt der Filter alles, was er für eine Eigenschaftenseite benötigt. Im nächsten Schritt wird die Eigenschaftenseite selbst implementieren. Leiten Sie zunächst eine neue Klasse von CBasePropertyPage ab. Das folgende Beispiel zeigt einen Teil der Deklaration, einschließlich einiger privater Membervariablen, die später im Beispiel verwendet werden:

class CGrayProp : public CBasePropertyPage
{
private:
    ISaturation *m_pGray;    // Pointer to the filter's custom interface.
    long        m_lVal       // Store the old value, so we can revert.
    long        m_lNewVal;   // New value.
public:
    /* ... */
};

Erstellen Sie als Nächstes eine Dialogressource im Ressourcen-Editor zusammen mit einer Zeichenfolgenressource für den Dialogtitel. Die Zeichenfolge wird auf der Registerkarte für die Eigenschaftenseite angezeigt. Die beiden Ressourcen-IDs sind Argumente für den CBasePropertyPage-Konstruktor:

CGrayProp::CGrayProp(IUnknown *pUnk) : 
  CBasePropertyPage(NAME("GrayProp"), pUnk, IDD_PROPPAGE, IDS_PROPPAGE_TITLE),
  m_pGray(0)
{ }

Die folgende Abbildung zeigt die Dialogressource für die Beispieleigenschaftenseite.

Dialogfeld "Eigenschaftenseite"

Nun können Sie die Eigenschaftenseite implementieren. Dies sind die Methoden in CBasePropertyPage, die überschrieben werden sollen:

  • OnConnect wird aufgerufen, wenn der Client die Eigenschaftenseite erstellt. Er legt den IUnknown-Zeiger auf den Filter fest.
  • OnActivate wird aufgerufen, wenn der Dialog erstellt wird.
  • OnReceiveMessage wird aufgerufen, wenn der Dialog eine Fensternachricht empfängt.
  • OnApplyChanges wird aufgerufen, wenn der Benutzer die Eigenschaftsänderungen durch Klicken auf die Schaltfläche OK oder Übernehmen committ.
  • OnDisconnect wird aufgerufen, wenn der Benutzer das Eigenschaftenblatt verlässt.

Im weiteren Verlauf dieses Tutorials wird jede dieser Methoden beschrieben.

Weiter: Schritt 5. Store einen Zeiger auf den Filter .

Erstellen einer Filtereigenschaftsseite