DirectX -- Filter property page call, directx -- filter
IEnumFilters * pEnum;
HRESULT hr;
If (pigb)
{
Hr = pigb-> EnumFilters (& pEnum );
If (FAILED (hr ))
{
Return;
}
IBaseFilter * pFilter = NULL;
While (pEnum-> Next (1, & pFilter, NULL) = S_ OK)
{
// Check for required interface
IUnknown * pUnk; // query the Filter interface. There is only one?
HRESULT hrQuery = pFilter-> QueryInterface (IID_IVideoWindow, (void **) & pUnk );
If (SUCCEEDED (hrQuery ))
{
PUnk-> Release ();
PEnum-> Release ();
Break;
}
// PFilter-> Release ();
}
// PEnum-> Release ();
//
ISpecifyPropertyPages * pProp = NULL; // query interface
Hr = pFilter-> QueryInterface (IID_ISpecifyPropertyPages, (void **) & pProp );
If (SUCCEEDED (hr ))
{
// Get the filter's name and IUnknown pointer.
FILTER_INFO FilterInfo;
Hr = pFilter-> QueryFilterInfo (& FilterInfo );
IUnknown * pFilterUnk;
PFilter-> QueryInterface (IID_IUnknown, (void **) & pFilterUnk );
//
CString str (FilterInfo. achName); // display the Filter Name
MessageBox (str );
// Show the page.
CAUUID caGUID;
PProp-> GetPages (& caGUID );
PProp-> Release ();
OleCreatePropertyFrame (
This-> GetSafeHwnd (), // Parent window
0, 0, // Reserved
FilterInfo. achName, // L "MAOMAO" // Caption for the dialog box
1, // Number of objects (just the filter)
& PFilterUnk, // Array of object pointers.
CaGUID. cElems, // Number of property pages
CaGUID. pElems, // Array of property page CLSIDs
0, // Locale identifier
0, NULL // Reserved
);
// Clean up.
PFilterUnk-> Release ();
FilterInfo. pGraph-> Release ();
CoTaskMemFree (caGUID. pElems );
}
}