載入專案檔
[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]
[此 API 不受支援,未來可能會變更或無法使用。]
若要載入專案檔,您需要兩個元件:XML 剖析器和空白時程表。 XML 剖析器會讀取 XML 專案檔,並建立檔案中定義的每個物件。 然後將物件插入時間軸,並設定任何時間軸屬性,例如預設畫面播放速率。 下列程式碼範例會載入檔案。
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();
剖析器會公開 IXml2Dex 介面,其中包含載入和儲存專案檔的方法。 時間軸會公開 IAMTimeline 介面,其中包含操作時程表和建立新時程表物件的方法。 呼叫 CoCreateInstance 函式以建立每個元件,如下所示。 請記住,藉由建立新的實例,您會在 介面上遞增參考計數。 若要避免記憶體流失,請一律在您使用介面時釋出介面。 在此範例中,不再需要 IXml2Dex 的指標,因此您可以釋放介面。 預覽時程表仍然需要 IAMTimeline 的指標。
IXml2Dex::ReadXMLFile方法會讀取指定的檔案,並在時間軸中填入檔案中定義的物件。 檔案名是使用 BSTR 值來指定。 為了縮短此範例,範例中的檔案名會指定為常值字串。 一般而言,您會從 [開啟檔案] 對話方塊取得它,或類似專案。
如果 ReadXML 方法成功,則會傳回成功碼。 否則,它會傳回錯誤碼,例如VFW_E_INVALID_FILE_FORMAT。 請一律檢查傳回值,以正常處理錯誤狀況。 同樣地,範例程式碼不會檢查錯誤。
相關主題