|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
воспроизведением видео через DirectX
Помогите с глюком:
Я скачал пример по воспроизведением видео через DirectX и в нём гюк. когда воспроизводится видео форма виснет если что вот код: "unit main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus; type TForm1 = class(TForm) MainMenu1: TMainMenu; File1: TMenuItem; Open1: TMenuItem; OpenDialog1: TOpenDialog; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Open1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} uses ActiveX, DirectShow9; var pGraphBuilder: IGraphBuilder = nil; pMediaControl: IMediaControl = nil; pMediaEvent : IMediaEvent = nil; procedure TForm1.FormCreate(Sender: TObject); begin CoInitialize(nil); end; procedure TForm1.FormDestroy(Sender: TObject); begin CoUninitialize; end; procedure TForm1.Open1Click(Sender: TObject); var hr: HRESULT; evCode: Integer; begin if not OpenDialog1.Execute then exit; if Assigned(pGraphBuilder) then pGraphBuilder := nil; if Assigned(pMediaControl) then pMediaControl := nil; if Assigned(pMediaEvent) then pMediaEvent := nil; hr := CoCreateInstance(CLSID_FilterGraph, nil, CLSCTX_INPROC, IID_IGraphBuilder, pGraphBuilder); if FAILED(hr) then begin ShowMessage('Íå óäàåòñÿ ñîçäàòü GraphBuilder'); exit; end; hr := pGraphBuilder.QueryInterface(IID_IMediaControl, pMediaControl); if FAILED(hr) then begin ShowMessage('Íå óäàåòñÿ ïîëó÷èòü èíòåðôåéñ MediaControl'); exit; end; hr := pGraphBuilder.QueryInterface(IID_IMediaEvent, pMediaEvent); if FAILED(hr) then begin ShowMessage('Íå óäàåòñÿ ïîëó÷èòü èíòåðôåéñ MediaEvent'); exit; end; hr := pGraphBuilder.RenderFile(StringToOleStr(OpenDialog 1.FileName), ''); if FAILED(hr) then begin ShowMessage('Íå óäàåòñÿ ïðîðåíäåðèòü ôàéë'); exit; end; hr := pMediaControl.Run; if FAILED(hr) then begin ShowMessage('Íå óäàåòñÿ âîñïðîèçâåñòè ôàéë'); exit; end; pMediaEvent.WaitForCompletion(INFINITE, evCode); end; end." |
#2
|
||||
|
||||
Цитата:
Исправь! |