Laden einer Projektdatei
[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde von MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation abgelöst. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code mediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet, wenn möglich. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]
[Diese API wird nicht unterstützt und kann in Zukunft geändert oder nicht mehr verfügbar sein.]
Zum Laden einer Projektdatei benötigen Sie zwei Komponenten: den XML-Parser und einen leeren Zeitleiste. Der XML-Parser liest eine XML-Projektdatei und erstellt jedes in der Datei definierte Objekt. Anschließend fügt er die Objekte in die Zeitleiste ein und legt alle Zeitleiste Attribute fest, z. B. die Standardbildrate. Im folgenden Codebeispiel wird eine Datei geladen.
HRESULT hr;
IAMTimeline *pTL = NULL;
IXml2Dex *pXML = NULL;
hr = CoCreateInstance(CLSID_AMTimeline, NULL, CLSCTX_INPROC_SERVER,
IID_IAMTimeline, (void**)&pTL);
hr = CoCreateInstance(CLSID_Xml2Dex, NULL, CLSCTX_INPROC_SERVER,
IID_IXml2Dex, (void**)&pXML);
BSTR bstrFile = SysAllocStringLen(OLESTR("C:\\example.xtl"), 15);
hr = pXML->ReadXMLFile(pTL, bstrFile);
SysFreeString(bstrFile);
pXML->Release();
Der Parser macht die IXml2Dex-Schnittstelle verfügbar, die Methoden zum Laden und Speichern von Projektdateien enthält. Die Zeitleiste macht die IAMTimeline-Schnittstelle verfügbar, die Methoden zum Bearbeiten des Zeitleiste und Erstellen neuer Zeitleiste-Objekte enthält. Rufen Sie die CoCreateInstance-Funktion auf, um die einzelnen Komponenten wie gezeigt zu erstellen. Beachten Sie, dass Sie durch das Erstellen einer neuen instance die Verweisanzahl auf der Schnittstelle erhöhen. Um Speicherverluste zu vermeiden, lassen Sie immer eine Schnittstelle frei, wenn Sie damit durch sind. In diesem Beispiel wird der Zeiger auf IXml2Dex für nichts mehr benötigt, sodass Sie die Schnittstelle freigeben können. Der Zeiger auf IAMTimeline wird weiterhin für die Vorschau der Zeitleiste benötigt.
Die IXml2Dex::ReadXMLFile-Methode liest die angegebene Datei und füllt die Zeitleiste mit den in der Datei definierten Objekten auf. Der Dateiname wird mithilfe eines BSTR-Werts angegeben. Um das Beispiel zu kürzen, wird der Dateiname im Beispiel als Literalzeichenfolge angegeben. Normalerweise erhalten Sie sie über ein Dialogfeld Datei öffnen oder ähnliches.
Wenn die ReadXML-Methode erfolgreich ist, wird ein Erfolgscode zurückgegeben. Andernfalls wird ein Fehlercode wie VFW_E_INVALID_FILE_FORMAT zurückgegeben. Überprüfen Sie immer den Rückgabewert, um Fehlerbedingungen ordnungsgemäß zu behandeln. Aus Gründen der Kürze wird der Beispielcode nicht auf Fehler überprüft.
Zugehörige Themen