Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
[Функция, связанная с этой страницей, DirectShow, является устаревшей функцией. Это было заменено на MediaPlayer, IMFMediaEngineи аудио/видеозахват в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт категорически рекомендует при написании нового кода использовать MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, если это возможно. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]
Затем реализуйте интерфейс ISpecifyPropertyPages в фильтре. Этот интерфейс имеет один метод, GetPages, который возвращает массив CLSID для страниц свойств, поддерживаемых фильтром. В этом примере фильтр имеет одну страницу свойств. Начните с создания CLSID и объявления его в файле заголовка:
// Always create new GUIDs! Never copy a GUID from an example.
DEFINE_GUID(CLSID_SaturationProp, 0xa9bd4eb, 0xded5,
0x4df0, 0xba, 0xf6, 0x2c, 0xea, 0x23, 0xf5, 0x72, 0x61);
Теперь реализуйте метод GetPages:
class CGrayFilter : public ISaturation,
public ISpecifyPropertyPages,
/* Other inherited classes. */
{
public:
STDMETHODIMP GetPages(CAUUID *pPages)
{
if (pPages == NULL) return E_POINTER;
pPages->cElems = 1;
pPages->pElems = (GUID*)CoTaskMemAlloc(sizeof(GUID));
if (pPages->pElems == NULL)
{
return E_OUTOFMEMORY;
}
pPages->pElems[0] = CLSID_SaturationProp;
return S_OK;
}
};
/* ... */
}
Выделите память для массива с помощью CoTaskMemAlloc. Вызывающий объект освободит память.
Далее: Шаг 3. Поддержка QueryInterface.
Связанные разделы