Partager via


Chargement d’un fichier projet

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngineet audio/vidéo capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et capture audio/vidéo dans Media Foundation au lieu de directShow, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

[Cette API n’est pas prise en charge et peut être modifiée ou indisponible à l’avenir.]

Pour charger un fichier projet, vous avez besoin de deux composants : l’analyseur XML et une chronologie vide. L’analyseur XML lit un fichier projet XML et crée chaque objet défini dans le fichier. Ensuite, il insère les objets dans la chronologie et définit tous les attributs de chronologie, tels que la fréquence d’images par défaut. L’exemple de code suivant charge un fichier.

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

L’analyseur expose l’interface IXml2Dex, qui contient des méthodes de chargement et d’enregistrement de fichiers projet. La chronologie expose l’interface IAMTimeline, qui contient des méthodes de manipulation de la chronologie et de création d’objets de chronologie. Appelez la fonction CoCreateInstance pour créer chaque composant, comme indiqué. N’oubliez pas qu’en créant une nouvelle instance, vous incrémentez le nombre de références sur l’interface. Pour éviter les fuites de mémoire, relâchez toujours une interface lorsque vous avez terminé de l'utiliser. Dans cet exemple, le pointeur vers IXml2Dex n’est pas nécessaire pour plus d’informations. Vous pouvez donc libérer l’interface. Le pointeur vers IAMTimeline est toujours nécessaire pour afficher un aperçu de la chronologie.

La méthode IXml2Dex ::ReadXMLFile lit le fichier spécifié et remplit la chronologie avec les objets définis dans le fichier. Le nom de fichier est spécifié à l’aide d’une valeur BSTR. Pour raccourcir l’exemple, le nom de fichier dans l’exemple est donné sous forme de chaîne littérale. Normalement, vous l’obtenez à partir d’une boîte de dialogue Ouvrir un fichier ou quelque chose de similaire.

Si la méthode ReadXML réussit, elle retourne un code de réussite. Sinon, il retourne un code d’erreur tel que VFW_E_INVALID_FILE_FORMAT. Vérifiez toujours la valeur de retour afin de gérer correctement les conditions d’erreur. Là encore, pour des raisons de concision, l’exemple de code ne vérifie pas les erreurs.

Chargement et Aperçu d’un Projet