Граф фильтра

Тема в разделе "Delphi - Multimedia, Графика, Игры", создана пользователем ALeu, 9 апр 2006.

Статус темы:
Закрыта.
  1. ALeu

    ALeu Гость

    Помогите. Надо созданный граф фильтра сохранить на диске. Ниже приведенный код на С делает это. Не могу написать реализацию этого на Delphi.


    Код (Text):
    HRESULT SaveGraphFile(IGraphBuilder *pGraph, WCHAR *wszPath)
    {
     const WCHAR wszStreamName[] = L"ActiveMovieGraph";
     HRESULT hr;
     IStorage *pStorage = NULL;

     hr = StgCreateDocfile( wszPath,    
        STGM_CREATE │ STGM_TRANSACTED │ STGM_READWRITE │STGM_SHARE_EXCLUSIVE    0, &pStorage);
      if(FAILED(hr))
     {
       return hr;
     }
     // Next, create a stream to store.
     IStream *pStream;
     hr = pStorage->CreateStream( wszStreamName,
        STGM_WRITE │ STGM_CREATE │ STGM_SHARE_EXCLUSIVE,0, 0,&pStream);
     if (FAILED(hr))
     {
       pStorage->Release();  
       return hr;
     }
     // The IpersistStream::Save method converts a stream
     // into a persistent object.
     IPersistStream *pPersist = NULL;
     pGraph->QueryInterface(IID_IPersistStream,reinterpret_cast<void**>(&pPersist));
     hr = pPersist->Save(pStream, TRUE);
     pStream->Release();
     pPersist->Release();
     if (SUCCEEDED(hr))
     {
     hr = pStorage->Commit(STGC_DEFAULT);
     }
     pStorage->Release();
     return hr;
     
  2. gozer

    gozer Гость

    Зачем откомпиль в С например как DLL и юзай в Delphi, правда там тонкости есть поищи монуалы по использованию Delphi и С в одной программе. Есть человек который это уже делал: Ананьев Вова ICQ 256-448-076. Спроси у него.
     
  3. zubr

    zubr Гость

    Скачай компонент DSPACK234, вот код из него:
    Код (Text):
    function SaveGraphFile(pGraph: IGraphBuilder; wszPath: WideString): HRESULT;
    var
    Storage: IStorage;
    Stream: IStream;
    Persist: IPersistStream;
    begin
    Result := StgCreateDocfile(
    PWideChar(wszPath),
    STGM_CREATE or STGM_TRANSACTED or STGM_READWRITE or STGM_SHARE_EXCLUSIVE,
    0, Storage);
    if FAILED(Result) then Exit;

    Result := Storage.CreateStream(
    PWideChar(wszStreamName),
    STGM_WRITE or STGM_CREATE or STGM_SHARE_EXCLUSIVE,
    0, 0, Stream);
    if FAILED(Result) then Exit;

    pGraph.QueryInterface(IID_IPersistStream, Persist);
    Result := Persist.Save(Stream, True);
    Stream := nil;
    Persist := nil;
    if SUCCEEDED(Result) then Result := Storage.Commit(STGC_DEFAULT);
    Storage := nil;
    end;
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей