📄 main.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "DSPack"
#pragma resource "*.dfm"
TMainForm *MainForm;
TSysDevEnum *SysDev;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormCreate(TObject *Sender)
{
SysDev = new TSysDevEnum(CLSID_VideoInputDeviceCategory);
if (SysDev->CountFilters > 0) {
int i;
TMenuItem *Device;
for(i = 0; i < SysDev->CountFilters; i++) {
Device = new TMenuItem(Devices);
Device->Caption = SysDev->Filters[i].FriendlyName;
Device->Tag = i;
Device->OnClick = DevicesClick;
Devices->Add(Device);
}
};
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::DevicesClick(TObject *Sender)
{
FilterGraph->ClearGraph();
FilterGraph->Active = false;
Filter->BaseFilter->Moniker = SysDev->GetMoniker(((TMenuItem *)Sender)->Tag);
FilterGraph->Active = true;
ICaptureGraphBuilder2 *Graph = NULL;
IBaseFilter *SourceFilter = NULL;
IBaseFilter *VideoFilter = NULL;
CheckDSError(FilterGraph->QueryInterface(IID_ICaptureGraphBuilder2, &Graph));
CheckDSError(VideoWindow->QueryInterface(IID_IBaseFilter, &VideoFilter));
CheckDSError(Filter->QueryInterface(IID_IBaseFilter, &SourceFilter));
Graph->RenderStream(&PIN_CATEGORY_PREVIEW, NULL, SourceFilter, NULL, VideoFilter);
FilterGraph->Play();
Graph->Release();
VideoFilter->Release();
SourceFilter->Release();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormDestroy(TObject *Sender)
{
delete SysDev;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormCloseQuery(TObject *Sender, bool &CanClose)
{
FilterGraph->Active = false;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -