CBasePropertyPage-Klasse

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]

cbasepropertypage-Klassenhierarchie

Die CBasePropertyPage -Klasse ist eine abstrakte Klasse zum Implementieren einer Eigenschaftenseite. Verwenden Sie diese Klasse, wenn Sie einen Filter (oder ein anderes Objekt) schreiben, das Eigenschaftenseiten unterstützt.

Geschützte Membervariablen BESCHREIBUNG
m_bDirty Gibt an, ob sich eine der Eigenschaften geändert hat.
m_DialogId Ressourcenbezeichner für das Dialogfeld.
m_Dlg Handle mit dem Dialogfeld.
m_hwnd Handle mit dem Dialogfeld.
m_pPageSite Zeiger auf die IPropertyPageSite-Schnittstelle der Eigenschaftenseitenwebsite.
m_TitleId Ressourcenbezeichner für eine Zeichenfolge, die den Dialogtitel enthält.
Öffentliche Methoden BESCHREIBUNG
CBasePropertyPage Konstruktormethode.
~CBasePropertyPage Destruktormethode. Virtuellen.
Ondeactivate Wird aufgerufen, wenn die Eigenschaftenseite aktiviert ist. Virtuellen.
OnApplyChanges Wird aufgerufen, wenn der Benutzer Änderungen auf die Eigenschaftenseite anwendet. Virtuellen.
OnConnect Stellt einen IUnknown-Zeiger auf das Objekt bereit, das der Eigenschaftenseite zugeordnet ist. Virtuellen.
OnDeaktivieren Wird aufgerufen, wenn das Dialogfeldfenster zerstört wird. Virtuellen.
OnDisconnect Wird aufgerufen, wenn die Eigenschaftenseite das zugeordnete Objekt freigeben soll. Virtuellen.
OnReceiveMessage Wird aufgerufen, wenn das Dialogfeld eine Nachricht empfängt. Virtuellen.
IPropertyPage-Methoden BESCHREIBUNG
Aktivieren Erstellt das Dialogfeldfenster.
Anwenden Wendet die aktuellen Eigenschaftenseitenwerte auf das Objekt an, das der Eigenschaftenseite zugeordnet ist
Deaktivieren Zerstört das Dialogfeld.
GetPageInfo Ruft Informationen zur Eigenschaftenseite ab.
Hilfe Ruft die Hilfe der Eigenschaftenseite auf.
IsPageDirty Gibt an, ob sich die Eigenschaftenseite seit der Aktivierung oder seit dem letzten Aufruf von IPropertyPage::Apply geändert hat.
Bewegen Positioniert und ändert die Größe des Dialogfelds.
SetObjects Stellt IUnknown-Zeiger für die Objekte bereit, die der Eigenschaftenseite zugeordnet sind.
SetPageSite Initialisiert die Eigenschaftenseite.
Anzeigen Zeigt das Dialogfeld an oder blendet es aus.
TranslateAccelerator Weist die Eigenschaftenseite an, eine Tasteneingabe zu verarbeiten.

Bemerkungen

Eine Eigenschaftenseite ist ein COM-Objekt. Daher müssen Sie eine GUID für den Klassenbezeichner (CLSID) generieren und einen Eintrag im Array CFactoryTemplate bereitstellen. Weitere Informationen finden Sie unter DirectShow und COM. Das folgende Beispiel zeigt einen typischen Klassen factory-Eintrag:

CFactoryTemplate g_Templates[] =
{   
    { 
        L"My Property Page",
        &CLSID_MyPropPage,
        CMyProp::CreateInstance,
        NULL,
        NULL
    },
    /* Also include the template for your filter (not shown). */
};

Ihr Filter muss die ISpecifyPropertyPages-Schnittstelle verfügbar machen. Diese Schnittstelle enthält eine einzelne Methode, GetPages, die die CLSID der Eigenschaftenseite zurückgibt. Das folgende Beispiel zeigt, wie Diese Methode implementiert wird:

STDMETHODIMP CMyFilter::GetPages(CAUUID *pPages)
{
    if (!pPages) return E_POINTER;

    pPages->cElems = 1;
    pPages->pElems = reinterpret_cast<GUID*>(CoTaskMemAlloc(sizeof(GUID)));
    if (pPages->pElems == NULL) 
    {
        return E_OUTOFMEMORY;
    }
    *(pPages->pElems) = CLSID_MyPropPage;
    return S_OK;
} 

Denken Sie daran, auch die NonDelegatingQueryInterface-Methode des Filters zu überschreiben. Weitere Informationen finden Sie unter DirectShow und COM und INonDelegatingUnknown.

Erstellen Sie als Nächstes das Dialogfeld als Ressource in Ihrem Projekt, und erstellen Sie eine Zeichenfolgenressource, die den Dialogtitel enthält. Beide Ressourcen-IDs sind Parameter für den CBasePropertyPage-Konstruktor . Wenn Sie die Titelzeichenfolge in einer Ressource beibehalten, können Sie Ihre Eigenschaftenseite leichter lokalisieren.

Die CBasePropertyPage-Klasse stellt ein Framework für die IPropertyPage-Schnittstelle bereit. Dieses Framework ruft eine Reihe virtueller Methoden auf, einschließlich CBasePropertyPage::OnActivate, CBasePropertyPage::OnApplyChanges usw. In der Basisklasse geben diese Methoden einfach S_OK zurück. Ihre abgeleitete Klasse muss einige oder alle dieser virtuellen Methoden außer Kraft setzen. Ausführliche Informationen finden Sie in den Anmerkungen zu den einzelnen Methoden.

Ein erweitertes Beispiel für die Verwendung dieser Klasse zum Erstellen einer Eigenschaftenseite finden Sie unter Erstellen einer Filtereigenschaftenseite.

Anforderungen

Anforderung Wert
Header
Cprop.h (include Streams.h)
Bibliothek
Strmbase.lib (Einzelhandelsbuilds);
Strmbasd.lib (Debugbuilds)