Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2014.06.01;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.001 c
3-1298717850
ddd329
2011-02-26 13:57
2014.06.01
Вложенные таблицы


2-1376237028
SD12
2013-08-11 20:03
2014.06.01
Alter Table - слишком большая длина записи...


1-1325094968
Deltas
2011-12-28 21:56
2014.06.01
Отрисовка TImage поверх элементов управления


2-1376538033
Виктор
2013-08-15 07:40
2014.06.01
Функция обратная CHR


15-1380878947
JohnKorsh
2013-10-04 13:29
2014.06.01
Искажения кнопок в Windows 7





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский