Carregando um arquivo de projeto

[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo na Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

[Essa API não tem suporte e pode ser alterada ou indisponível no futuro.]

Para carregar um arquivo de projeto, você precisa de dois componentes: o analisador XML e um linha do tempo vazio. O analisador XML lê um arquivo de projeto XML e cria cada objeto definido no arquivo. Em seguida, ele insere os objetos no linha do tempo e define todos os atributos linha do tempo, como a taxa de quadros padrão. O exemplo de código a seguir carrega um arquivo.

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

O analisador expõe a interface IXml2Dex , que contém métodos para carregar e salvar arquivos de projeto. O linha do tempo expõe a interface IAMTimeline, que contém métodos para manipular o linha do tempo e criar novos objetos linha do tempo. Chame a função CoCreateInstance para criar cada componente, conforme mostrado. Lembre-se de que, ao criar uma nova instância, você está incrementando a contagem de referência na interface. Para evitar vazamentos de memória, sempre libere uma interface quando terminar de usá-la. Neste exemplo, o ponteiro para IXml2Dex não é necessário para mais nada, portanto, você pode liberar a interface. O ponteiro para IAMTimeline ainda é necessário para visualizar o linha do tempo.

O método IXml2Dex::ReadXMLFile lê o arquivo especificado e preenche o linha do tempo com os objetos definidos no arquivo. O nome do arquivo é especificado usando um valor BSTR . Para encurtar o exemplo, o nome do arquivo no exemplo é fornecido como uma cadeia de caracteres literal. Normalmente, você o obtém de uma caixa de diálogo Abrir Arquivo ou algo semelhante.

Se o método ReadXML for bem-sucedido, ele retornará um código de êxito. Caso contrário, ele retornará um código de erro, como VFW_E_INVALID_FILE_FORMAT. Sempre marcar o valor retornado para lidar com as condições de erro normalmente. Novamente, para resumir, o código de exemplo não marcar para erros.

Carregando e visualizando um projeto