Compartir a través de


Carga de un archivo de proyecto

[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio/vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y Audio/Video Capture en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

[Esta API no se admite y puede modificarse o no estar disponible en el futuro].

Para cargar un archivo de proyecto, necesita dos componentes: el analizador XML y una escala de tiempo vacía. El analizador XML lee un archivo de proyecto XML y crea cada objeto definido en el archivo. A continuación, inserta los objetos en la escala de tiempo y establece los atributos de escala de tiempo, como la velocidad de fotogramas predeterminada. En el ejemplo de código siguiente se carga un archivo.

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();

El analizador expone la interfaz IXml2Dex , que contiene métodos para cargar y guardar archivos de proyecto. La escala de tiempo expone la interfaz IAMTimeline , que contiene métodos para manipular la escala de tiempo y crear nuevos objetos de escala de tiempo. Llame a la función CoCreateInstance para crear cada componente, como se muestra. Recuerde que, mediante la creación de una nueva instancia, está incrementando el recuento de referencias en la interfaz. Para evitar pérdidas de memoria, suelte siempre una interfaz cuando esté a través de ella. En este ejemplo, el puntero a IXml2Dex no es necesario para nada más, por lo que puede liberar la interfaz. El puntero a IAMTimeline sigue siendo necesario para obtener una vista previa de la escala de tiempo.

El método IXml2Dex::ReadXMLFile lee el archivo especificado y rellena la escala de tiempo con los objetos definidos en el archivo. El nombre de archivo se especifica mediante un valor BSTR . Para acortar el ejemplo, el nombre de archivo del ejemplo se asigna como una cadena literal. Normalmente, se obtiene de un cuadro de diálogo Abrir archivo o algo similar.

Si el método ReadXML se realiza correctamente, devuelve un código correcto. De lo contrario, devuelve un código de error como VFW_E_INVALID_FILE_FORMAT. Compruebe siempre el valor devuelto para controlar las condiciones de error correctamente. De nuevo para mayor brevedad, el código de ejemplo no comprueba si hay errores.

Carga y vista previa de un proyecto