J'utilise l'exemple de show direct ezrgb24 et en essayant d'exposer son interface privée. Dans le fichier iez.h a le code ci-dessousC++ DirectShow filtre Interface privée
DEFINE_GUID(IID_IIPEffect,
0xfd5010a3, 0x8ebe, 0x11ce, 0x81, 0x83, 0x00, 0xaa, 0x00, 0x57, 0x7d, 0xa1);
DECLARE_INTERFACE_(IIPEffect, IUnknown)
{
STDMETHOD(get_IPEffect) (THIS_
int *effectNum, // The current effect
REFTIME *StartTime, // Start time of effect
REFTIME *Length // length of effect
) PURE;
STDMETHOD(put_IPEffect) (THIS_
int effectNum, // Change to this effect
REFTIME StartTime, // Start time of effect
REFTIME Length // Length of effect
) PURE;
};
après la construction du dll, je me suis inscrit à l'aide de la fenêtre cmd. Comment exposer ou utiliser get_IPEffect() ou put_IPEffect() de notre projet?
i codé comme ci-dessous, mais il n'a pas travaillé
DEFINE_GUID(IID_IIPEffect,
0xfd5010a3, 0x8ebe, 0x11ce, 0x81, 0x83, 0x00, 0xaa, 0x00, 0x57, 0x7d, 0xa1);
DEFINE_GUID(CLSID_ImageEffect,
0x8B498501, 0x1218, 0x11CF, 0xAD, 0xC4, 0x00, 0xA0, 0xD1, 0x00, 0x04, 0x1B);
IBaseFilter *pImageEffect = NULL;
chr = CoCreateInstance(CLSID_ImageEffect, NULL, CLSCTX_INPROC_SERVER,
IID_IBaseFilter, (void**) &pImageEffect);
chr = pGraph->AddFilter(pImageEffect, L"RGB Resizer");
IIPEffect *pEZrgb24 = NULL;
chr = pImageEffect->QueryInterface(IID_IIPEffect, (void **) &pEZrgb24);
A IIPEffect je reçois une erreur " 'IIPEffect': identificateur non déclaré" comment dois-je déclarer?
vous foiré pas proprly y compris 'iez.h' –
@RomanR. ohh, ai-je besoin d'inclure le fichier iez.h dans mon projet? –
vos extraits paraissent pertinents, mais apparemment votre extrait de code n ° 2 dans votre code réel ne "voit" pas l'extrait n ° 1 et donc l'erreur. –