AVIFileOpen, REGDB_E_CLASSNOTREG et CLSID
Bonjour,
J'ai une classe pour lire des avi avec vfw.h.
Je l'ai fait fonctionner avec Borland C++ Builder 6 et wxDevcpp.
Elle m'avait jamais posé de problème.
J'arrive à la compiler sous VS 2005 en C++.NET. Mais, à l'exécution, la fonction "AVIFileOpen" me retourne l'erreur "REGDB_E_CLASSNOTREG" dont la msdn donne la définition suivante :
Citation:
According to the registry, the type of file specified in AVIFileOpen does not have a handler to process it.
Je ce que j'ai compris à ceci, c'est qu'il manque l'info, dans la base de registre, pour qu'il puisse ouvrir l'avi. C'est bien ça ?
Or, sur le même PC et avec la même classe j'arrive à ouvrir un AVI avec un exe compilé avec wxDevcpp par exemple. Pourquoi dans un cas y aurait l'info dans la base de registre et dans l'autre non ?
Par ailleurs j'utilise la fonction "AVIFileOpen" avec l'argument "pclsidHandler" égal à NULL. Argument décrit par la msdn :
Citation:
Pointer to a class identifier of the standard or custom handler you want to use. If the value is NULL, the system chooses a handler from the registry based on the file extension or the RIFF type specified in the file.
J'en déduis qu'il faut peut-être mettre un Handler non nul de façon à préciser moi-même avec quoi ouvrir le avi.
J'ai essayé pleins de trucs (ya pas bcp d'aide dessus) :
Code:
1 2 3 4 5
| CLSID z;
z.Data1 = 0;
z.Data2 = 4;
z.Data3 = 0;
*(z.Data4) = MKFOURCC('i', 'a', 'v', 's'); |
Code:
1 2 3 4 5
| CLSID z;
z.Data1 = 'i';
z.Data2 = 'a';
z.Data3 = 'v';
*(z.Data4) = 's'; |
Toujours la même erreur. Quelqu'un à une idée ?
Merci.
Flo.
PS : Sur mon PC (Win2000), j'ai "VLC Player", "Windows Media Player" et "DirectX9" (si ça peut aider :))