2013-01-11 5 views
0

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?

+0

vous foiré pas proprly y compris 'iez.h' –

+0

@RomanR. ohh, ai-je besoin d'inclure le fichier iez.h dans mon projet? –

+1

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. –

Répondre

1

Merci romarr et Wimmel, je compris iez.h dans mon projet et il fonctionne très bien

Questions connexes