Partilhar via


Carregando um arquivo de projeto

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEnginee Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda vivamente que o novo código utilize 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.]

[Esta API não é suportada e pode ser alterada ou indisponível no futuro.]

Para carregar um arquivo de projeto, você precisa de dois componentes: o analisador XML e uma linha do tempo vazia. O analisador XML lê um arquivo de projeto XML e cria cada objeto definido no arquivo. Em seguida, ele insere os objetos na linha do tempo e define quaisquer atributos da 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. A linha do tempo expõe a interfaceIAMTimeline, que contém métodos para manipular a linha do tempo e criar novos objetos de linha do tempo. Chame o 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 fugas de memória, libere sempre uma interface quando terminar de usá-la. Neste exemplo, o ponteiro para IXml2Dex não é necessário para mais nada, para que você possa liberar a interface. O ponteiro para IAMTimeline ainda é necessário para visualizar a linha do tempo.

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

Se o método ReadXML for bem-sucedido, ele retornará um código de êxito. Caso contrário, ele retorna um código de erro, como VFW_E_INVALID_FILE_FORMAT. Verifique sempre o valor de retorno, a fim de lidar com as condições de erro graciosamente. Novamente por uma questão de brevidade, o código de exemplo não verifica se há erros.

Carregando e visualizando um projeto