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.]
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 |
|
Bibliothek |
|