Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.06.01;
Скачать: CL | DM;

Вниз

Directshow по русски   Найти похожие ветки 

 
Леха   (2013-08-13 00:11) [0]

Здравствуйте! Ну скажите же мне... Читаю директшоу по русски.
почему IGraphBuilder создаетсяCoCreateInstance(CLSID_FilterGraph, nil, CLSCTX_INPROC, IID_IGraphBuilder,pGraphBuilder);
а IMediaControl так не создается а еще и запрашивается IGraphBuilder pGraphBuilder.QueryInterface(IID_IMediaControl, pMediaControl);. В чем же их разница и смысл. Как узнать какой интерфейс как получать?


 
ProgRAMmer Dimonych ©   (2013-08-13 01:36) [1]

Один и тот же класс реализует несколько интерфейсов. CoCreateInstance() создаёт экземпляр класса (какого — определяет первый параметр, CLSID_FilterGraph) и возвращает указатель на интерфейс (интерфейс — по сути таблица указателей на методы), заданный четвёртым параметром (IID_IGraphBuilder). Результат: через pGraphBuilder можно вызывать методы для построения графа фильтров.

Чтобы получить другой интерфейс, реализованный тем же объектом, вызывается его метод QueryInterface() с указанием того, какой интерфейс нужен (IID_IMediaControl). Результат: через pMediaControl можно обращаться к другим методам того же объекта.

Как понять, какие интерфейсы реализуются какими классами? Читать документацию. Для стандартных информация есть.


 
Леха   (2013-08-13 06:41) [2]

то есть можно для начала
CoCreateInstance(CLSID_FilterGraph, nil, CLSCTX_INPROC, IID_IMediaControl,pMediaControl); а потом уже pMediaControl.QueryInterface(IID_IpGraphBuilder, pGraphBuilder); так получается?


 
ProgRAMmer Dimonych ©   (2013-08-13 13:57) [3]

> [2] Леха   (13.08.13 06:41)

Да, вполне взаимозаменяемо, главное не напутать с тем, куда указатель на какой интерфейс идёт. Но я бы всё-таки рекомендовал следовать документации, на всякий случай: для стандартных классов может прокатить, а какой-нибудь сторонний окажется реализованным так, что будет зависеть от порядка выбора интерфейсов (что вряд ли, конечно, но исключать нельзя).


 
Леха   (2013-08-13 16:20) [4]

Ну если так , то крайне понятно и огромное спасибо!!!



Страницы: 1 вся ветка

Текущий архив: 2014.06.01;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.005 c
2-1376538033
Виктор
2013-08-15 07:40
2014.06.01
Функция обратная CHR


15-1383751226
grossm
2013-11-06 19:20
2014.06.01
Чемпионат мира по шахматам.Ананд-Карлсен.


2-1375958313
санек
2013-08-08 14:38
2014.06.01
Замена русских букв на латинские


1-1325049731
yurikon
2011-12-28 09:22
2014.06.01
Добавление иконки в проект 256*256


2-1375876588
listvenniza
2013-08-07 15:56
2014.06.01
md5